use thiserror::Error;
#[derive(Debug, Error)]
pub enum MaecError {
#[error("missing required field: {0}")]
MissingField(&'static str),
#[error("invalid MAEC ID: {0}")]
InvalidId(String),
#[error("invalid reference: {0}")]
InvalidReference(String),
#[error("serialization error: {0}")]
SerializationError(#[from] serde_json::Error),
#[error("XML error: {0}")]
XmlError(String),
#[error("XML deserialization error: {0}")]
QuickXmlDeError(#[from] quick_xml::DeError),
#[error("XML serialization error: {0}")]
XmlSerializationError(String),
#[error("validation error: {0}")]
ValidationError(String),
#[error("I/O error: {0}")]
IoError(#[from] std::io::Error),
}
pub type Result<T> = std::result::Result<T, MaecError>;
pub type BuilderError = MaecError;