use thiserror::Error;
pub type Result<T> = std::result::Result<T, CryptoError>;
#[derive(Error, Debug, Clone, PartialEq, Eq)]
pub enum CryptoError {
#[error("Binary format error: {0}")]
BinaryFormatError(String),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("Serialization failed: {0}")]
SerializationFailed(String),
#[error("Deserialization failed: {0}")]
DeserializationFailed(String),
#[error("Unknown algorithm: {0}")]
UnknownAlgorithm(String),
#[error("Checksum validation failed")]
ChecksumMismatch,
#[error("Invalid magic bytes")]
InvalidMagic,
#[error("Unsupported version: {0:#x}")]
UnsupportedVersion(u8),
#[error("Metadata validation error: {0}")]
MetadataError(String),
}