use thiserror::Error;
use std::result;
use crate::binary_agreement;
use crate::broadcast;
#[derive(Clone, PartialEq, Eq, Debug, Error)]
pub enum Error {
#[error("Error creating BinaryAgreement: {0}")]
NewAgreement(binary_agreement::Error),
#[error("Error creating Broadcast: {0}")]
NewBroadcast(broadcast::Error),
#[error("Error handling Broadcast input/message: {0}")]
HandleBroadcast(broadcast::Error),
#[error("Error handling BinaryAgreement input/message: {0}")]
HandleAgreement(binary_agreement::Error),
#[error("Unknown proposer ID")]
UnknownProposer,
}
pub type Result<T> = result::Result<T, Error>;
#[derive(Clone, Debug, Error, PartialEq, Eq)]
pub enum FaultKind {
#[error("`Subset` received a faulty Broadcast message.")]
BroadcastFault(broadcast::FaultKind),
#[error("`Subset` received a faulty Binary Agreement message.")]
BaFault(binary_agreement::FaultKind),
}