use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("Base64 Decoding Error: {0}")]
Base64(#[from] base64::DecodeError),
#[error("Bech32 Error: {0}")]
Bech32(#[from] bech32::Error),
#[error("Wrong Bech32 Kind: Expected {0} found {0}")]
WrongBech32(String, String),
#[error("ECDSA Signature Error: {0}")]
Signature(#[from] k256::ecdsa::Error),
#[error("Event is in the future")]
EventInFuture,
#[error("Formatting Error: {0}")]
Fmt(#[from] std::fmt::Error),
#[error("Hash Mismatch")]
HashMismatch,
#[error("Hex Decode Error: {0}")]
HexDecode(#[from] hex::FromHexError),
#[error("Invalid Encrypted Private Key")]
InvalidEncryptedPrivateKey,
#[error("JSON (de)serialization error: {0}")]
SerdeJson(#[from] serde_json::Error),
#[error("Try From Slice error: {0}")]
Slice(#[from] std::array::TryFromSliceError),
#[error("System Time Error: {0}")]
Time(#[from] std::time::SystemTimeError),
#[error("Unknown event kind = {0}")]
UnknownEventKind(u64),
#[error("Unknown key security = {0}")]
UnknownKeySecurity(u8),
#[error("Decryption error: {0}")]
Unpad(#[from] aes::cipher::block_padding::UnpadError),
#[error("Wrong length hex string")]
WrongLengthHexString,
#[error("Wrong decryption password")]
WrongDecryptionPassword,
}