//! Configuration types for PlasmaVMC backends

use serde::{Deserialize, Serialize};
use std::path::PathBuf;

/// FireCracker backend configuration
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireCrackerConfig {
    /// Path to the Firecracker binary
    pub firecracker_path: Option<PathBuf>,
    /// Path to Jailer binary (optional)
    pub jailer_path: Option<PathBuf>,
    /// Runtime directory for VM state
    pub runtime_dir: Option<PathBuf>,
    /// Base path for FireCracker API sockets
    pub socket_base_path: Option<PathBuf>,
    /// Kernel image path
    pub kernel_path: Option<PathBuf>,
    /// Path to the Firecracker rootfs image
    pub rootfs_path: Option<PathBuf>,
    /// Initrd image path (optional)
    pub initrd_path: Option<PathBuf>,
    /// Boot arguments
    pub boot_args: Option<String>,
    /// Use jailer for security
    pub use_jailer: Option<bool>,
}

/// KVM backend configuration
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct KvmConfig {
    /// Path to the QEMU binary
    pub qemu_path: Option<PathBuf>,
    /// Runtime directory used for QMP sockets and console logs
    pub runtime_dir: Option<PathBuf>,
}
