use thiserror::Error;
pub type VmRuntimeResult<T> = Result<T, VmRuntimeError>;
#[derive(Debug, Error)]
pub enum VmRuntimeError {
#[error("vm '{0}' already exists")]
VmAlreadyExists(String),
#[error("vm '{0}' not found")]
VmNotFound(String),
#[error("invalid vm transition for '{vm_id}': {from} -> {to}")]
InvalidTransition {
vm_id: String,
from: String,
to: &'static str,
},
#[error("snapshot '{snapshot_id}' already exists for vm '{vm_id}'")]
SnapshotAlreadyExists { vm_id: String, snapshot_id: String },
#[error("provider state lock poisoned")]
StatePoisoned,
#[error("backend unsupported: {0}")]
Unsupported(String),
}