
/// Unified error type for apt-ostree operations
#[derive(Debug, thiserror::Error)]
pub enum AptOstreeError {
    #[error("Initialization error: {0}")]
    Initialization(String),
    
    #[error("Configuration error: {0}")]
    Configuration(String),
    
    #[error("Permission denied: {0}")]
    PermissionDenied(String),
    
    #[error("Package error: {0}")]
    Package(String),
    
    #[error("OSTree error: {0}")]
    Ostree(String),
    
    #[error("APT error: {0}")]
    Apt(String),
    
    #[error("Filesystem error: {0}")]
    Filesystem(String),
    
    #[error("Network error: {0}")]
    Network(String),
    
    #[error("D-Bus error: {0}")]
    Dbus(String),
    
    #[error("Transaction error: {0}")]
    Transaction(String),
    
    #[error("Validation error: {0}")]
    Validation(String),
    
    #[error("Security error: {0}")]
    Security(String),
    
    #[error("System error: {0}")]
    SystemError(String),
    
    #[error("Package not found: {0}")]
    PackageNotFound(String),
    
    #[error("Branch not found: {0}")]
    BranchNotFound(String),
    
    #[error("Deployment error: {0}")]
    Deployment(String),
    
    #[error("Rollback error: {0}")]
    Rollback(String),
    
    #[error("DEB parsing error: {0}")]
    DebParsing(String),
    
    #[error("Package operation error: {0}")]
    PackageOperation(String),
    
    #[error("Script execution error: {0}")]
    ScriptExecution(String),
    
    #[error("Dependency conflict: {0}")]
    DependencyConflict(String),
    
    #[error("OSTree operation error: {0}")]
    OstreeOperation(String),
    
    #[error("Parse error: {0}")]
    Parse(String),
    
    #[error("Timeout error: {0}")]
    Timeout(String),
    
    #[error("Not found: {0}")]
    NotFound(String),
    
    #[error("Already exists: {0}")]
    AlreadyExists(String),
    
    #[error("Invalid argument: {0}")]
    InvalidArgument(String),
    
    #[error("Unsupported operation: {0}")]
    Unsupported(String),
    
    #[error("Internal error: {0}")]
    Internal(String),
    
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),
    
    #[error("JSON error: {0}")]
    Json(#[from] serde_json::Error),
    
    #[error("UTF-8 error: {0}")]
    Utf8(#[from] std::string::FromUtf8Error),
}

/// Result type for apt-ostree operations
pub type AptOstreeResult<T> = Result<T, AptOstreeError>; 