use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("invalid envelope structure: {message}")]
InvalidEnvelope { message: String },
#[error("missing required parameter: {parameter}")]
MissingParameter { parameter: String },
#[error("invalid parameter value for '{parameter}': {message}")]
InvalidParameter { parameter: String, message: String },
#[error("envelope type mismatch: expected '{expected}', found '{found}'")]
TypeMismatch { expected: String, found: String },
#[error("invalid receipt format: {message}")]
InvalidReceipt { message: String },
#[error("invalid digest data: {message}")]
InvalidDigest { message: String },
#[error("envelope processing failed")]
EnvelopeProcessing(#[from] bc_envelope::Error),
#[error("DCBOR processing failed")]
DcborProcessing(#[from] dcbor::Error),
#[error("GSTP processing failed")]
GstpProcessing(#[from] gstp::Error),
}
pub type Result<T> = std::result::Result<T, Error>;