use crate::convert::Base;
pub type Result<T, E = Error> = ::core::result::Result<T, E>;
#[derive(Debug, thiserror::Error, strum::IntoStaticStr)]
#[non_exhaustive]
pub enum Error {
#[error("failed to encode JSON")]
EncodeJSON(#[source] serde_json::Error),
#[error("failed to decode JSON")]
DecodeJSON(#[source] serde_json::Error),
#[error("failed to decode {0:?} data")]
DecodeBase(Base, #[source] multibase::Error),
#[error("failed to decode multibase data")]
DecodeMultibase(#[source] multibase::Error),
#[error("invalid url")]
InvalidUrl(#[source] url::ParseError),
#[error("invalid timestamp")]
InvalidTimestamp(#[source] time::error::Error),
#[error("OneOrSet cannot be empty")]
OneOrSetEmpty,
#[error("duplicate key in OrderedSet")]
OrderedSetDuplicate,
}