pub type Result<T, E = Error> = ::core::result::Result<T, E>;
#[derive(Debug, thiserror::Error, strum::IntoStaticStr)]
pub enum Error {
#[error("missing base context")]
MissingBaseContext,
#[error("missing base type")]
MissingBaseType,
#[error("missing credential issuer")]
MissingIssuer,
#[error("missing credential subject")]
MissingSubject,
#[error("missing expiration date")]
MissingExpirationDate,
#[error("missing origin")]
MissingOrigin,
#[error("invalid credential subject")]
InvalidSubject,
#[error("invalid credential status: {0}")]
InvalidStatus(String),
#[error("domain linkage error")]
DomainLinkageError(#[source] Box<dyn std::error::Error + Send + Sync + 'static>),
#[error("could not create JWT claim set from verifiable credential: more than one subject")]
MoreThanOneSubjectInJwt,
#[error("could not convert JWT to the VC data model: {0}")]
InconsistentCredentialJwtClaims(&'static str),
#[error("could not convert JWT to the VP data model: {0}")]
InconsistentPresentationJwtClaims(&'static str),
#[error("timestamp conversion failed")]
TimestampConversionError,
#[error("could not serialize JWT claims set")]
JwtClaimsSetSerializationError(#[source] Box<dyn std::error::Error + Send + Sync + 'static>),
#[error("could not deserialize JWT claims set")]
JwtClaimsSetDeserializationError(#[source] Box<dyn std::error::Error + Send + Sync + 'static>),
}