use failure::Fail;
#[derive(Clone, PartialEq, Debug, Fail)]
pub enum Error {
#[fail(display = "Number of participants must be between 1 and 256")]
InvalidNodeCount,
#[fail(display = "Instance cannot propose")]
InstanceCannotPropose,
#[fail(display = "Multiple inputs received")]
MultipleInputs,
#[fail(display = "Proof construction failed")]
ProofConstructionFailed,
#[fail(display = "Unknown sender")]
UnknownSender,
}
pub type Result<T> = ::std::result::Result<T, Error>;
#[derive(Clone, Debug, Fail, PartialEq)]
pub enum FaultKind {
#[fail(display = "`Broadcast` received a `Value` from a node other than the proposer.")]
ReceivedValueFromNonProposer,
#[fail(display = "`Broadcast` received multiple different `Value`s from the proposer.")]
MultipleValues,
#[fail(display = "`Broadcast` received multiple different `Echo`s from the same sender.")]
MultipleEchos,
#[fail(display = "`Broadcast` received multiple different `Ready`s from the same sender.")]
MultipleReadys,
#[fail(display = "`Broadcast` recevied an Echo message containing an invalid proof.")]
InvalidProof,
#[fail(display = "`Broadcast` received shards with valid proofs, that couldn't be decoded.")]
BroadcastDecoding,
}