use thiserror::Error;
#[derive(Debug, Error)]
pub enum AuditError {
#[error("Audit I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("Audit serialization error: {0}")]
Serialization(String),
#[error("Audit config error: {0}")]
Config(String),
#[error("Audit internal error: {0}")]
Internal(String),
#[error(
"Audit partial delivery: {succeeded} of {total} sinks succeeded, failures: {failures:?}"
)]
PartialDelivery {
succeeded: usize,
total: usize,
failures: Vec<(String, String)>,
},
#[error("No durable audit sink configured — compliance violation")]
NoDurableSink,
}
pub type Result<T> = std::result::Result<T, AuditError>;