use thiserror::Error;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Error)]
pub enum FromSliceError {
#[cfg(debug_assertions)]
#[error("slice length mismatch: expected {expected}, got {actual}")]
InvalidLength { actual: usize, expected: usize },
#[cfg(not(debug_assertions))]
#[error("slice length mismatch")]
InvalidLength,
}
#[cfg(any(feature = "encoding-bech32", feature = "encoding-bech32m"))]
#[derive(Clone, Debug, PartialEq, Eq, Error)]
pub enum Bech32Error {
#[error("invalid Human-Readable Part (HRP)")]
InvalidHrp,
#[error("bit conversion failed")]
ConversionFailed,
#[error("bech32 operation failed")]
OperationFailed,
#[cfg(debug_assertions)]
#[error("unexpected HRP: expected {expected}, got {got}")]
UnexpectedHrp { expected: String, got: String },
#[cfg(not(debug_assertions))]
#[error("unexpected HRP")]
UnexpectedHrp,
#[cfg(debug_assertions)]
#[error("decoded length mismatch: expected {expected}, got {got}")]
InvalidLength { expected: usize, got: usize },
#[cfg(not(debug_assertions))]
#[error("decoded length mismatch")]
InvalidLength,
}
#[cfg(feature = "encoding-base64")]
#[derive(Clone, Debug, PartialEq, Eq, Error)]
pub enum Base64Error {
#[error("invalid base64 string")]
InvalidBase64,
#[cfg(debug_assertions)]
#[error("decoded length mismatch: expected {expected}, got {got}")]
InvalidLength { expected: usize, got: usize },
#[cfg(not(debug_assertions))]
#[error("decoded length mismatch")]
InvalidLength,
}
#[cfg(feature = "encoding-hex")]
#[derive(Clone, Debug, PartialEq, Eq, Error)]
pub enum HexError {
#[error("invalid hex string")]
InvalidHex,
#[cfg(debug_assertions)]
#[error("decoded length mismatch: expected {expected}, got {got}")]
InvalidLength { expected: usize, got: usize },
#[cfg(not(debug_assertions))]
#[error("decoded length mismatch")]
InvalidLength,
}
#[derive(Clone, Debug, Error)]
pub enum DecodingError {
#[cfg(feature = "encoding-bech32")]
#[error("invalid bech32 string")]
InvalidBech32(#[source] Bech32Error),
#[cfg(feature = "encoding-base64")]
#[error("invalid base64 string")]
InvalidBase64(#[source] Base64Error),
#[cfg(feature = "encoding-hex")]
#[error("invalid hex string")]
InvalidHex(#[source] HexError),
#[cfg(debug_assertions)]
#[error("invalid encoding: {hint}")]
InvalidEncoding { hint: String },
#[cfg(not(debug_assertions))]
#[error("invalid encoding")]
InvalidEncoding,
}