use std::path::PathBuf;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum InboxError {
#[error("Failed to acquire lock on {path} after {retries} retries")]
LockTimeout { path: PathBuf, retries: u32 },
#[error("I/O error on {path}: {source}")]
Io {
path: PathBuf,
source: std::io::Error,
},
#[error("JSON parse error in {path}: {source}")]
Json {
path: PathBuf,
source: serde_json::Error,
},
#[error("Atomic swap not supported on this platform")]
AtomicSwapUnsupported,
#[error("Invalid inbox path: {path}")]
InvalidPath { path: PathBuf },
#[error("Conflict detected but merge failed: {message}")]
MergeFailed { message: String },
#[error("Spool directory error: {message}")]
SpoolError { message: String },
}