use std::rc::Rc;
use air_interpreter_cid::CidRef;
use air_interpreter_signatures::KeyError;
use air_interpreter_signatures::VerificationError;
use thiserror::Error as ThisError;
#[derive(Debug, ThisError)]
pub enum DataVerifierError {
#[error("malformed key: {key:?}: {error}")]
MalformedKey { error: KeyError, key: String },
#[error(transparent)]
MalformedSignature(fluence_keypair::error::DecodingError),
#[error("peer_id doens't match any available public key: {0:?}")]
PeerIdNotFound(String),
#[error("signature mismatch for {peer_id:?}: {error:?}, values: CIDS: {cids:?}")]
SignatureMismatch {
error: Box<VerificationError>,
cids: Vec<Rc<CidRef>>,
peer_id: String,
},
#[error(
"inconsistent CID multisets on merge for peer {peer_id:?}, prev: {larger_cids:?}, current: {smaller_cids:?}"
)]
MergeMismatch {
peer_id: String,
larger_cids: Vec<Rc<CidRef>>,
smaller_cids: Vec<Rc<CidRef>>,
},
}