use crate::cid::Cid;
use crate::multihash::Multihash;
pub use libipld_core::error::*;
use thiserror::Error;
pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("Block size {0} exceeds MAX_BLOCK_SIZE.")]
BlockTooLarge(usize),
#[error("Hash does not match the CID.")]
InvalidHash(Multihash),
#[error("Unsupported codec {0:?}.")]
UnsupportedCodec(crate::codec::Code),
#[error("Unsupported multihash {0:?}.")]
UnsupportedMultihash(crate::multihash::Code),
#[error("{0}")]
TypeError(#[from] TypeError),
#[error("Codec error: {0}")]
CodecError(Box<dyn std::error::Error + Send>),
#[error("{0}")]
StoreError(#[from] StoreError),
}
#[derive(Debug, Error)]
pub enum StoreError {
#[error("failed to retrive block {0}")]
BlockNotFound(Cid),
#[error("empty batch")]
EmptyBatch,
#[error("{0}")]
Other(#[from] Box<dyn std::error::Error + Send>),
}