use thiserror::Error;
#[derive(Debug, Error)]
pub enum HandlerError {
#[error("transient: {0}")]
Transient(String),
#[error("permanent: {0}")]
Permanent(String),
}
#[derive(Debug, Error)]
pub enum BusError {
#[error("nats: {0}")]
Nats(String),
#[error("publish: {0}")]
Publish(String),
#[error("outbox: {0}")]
Outbox(String),
#[error("idempotency: {0}")]
Idempotency(String),
#[error("serialization: {0}")]
Serde(#[from] serde_json::Error),
#[error("handler: {0}")]
Handler(#[from] HandlerError),
#[error("nats unavailable")]
NatsUnavailable,
}