1use crate::types::{Role, Stage};
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5#[derive(Debug, thiserror::Error)]
6pub enum Error {
7 #[error("vrf error: {0}")]
8 Vrf(String),
9
10 #[error("invalid stage transition: from {from:?} to {to:?}")]
11 InvalidStage { from: Stage, to: Stage },
12
13 #[error("insufficient votes: need {needed}, got {got}")]
14 InsufficientVotes { needed: u64, got: u64 },
15
16 #[error("missing block in round {0}")]
17 MissingBlock(u64),
18
19 #[error("node not in role {0:?}")]
20 WrongRole(Role),
21
22 #[error("no proposer elected for round {0}")]
23 NoProposer(u64),
24
25 #[error("not enough nodes: need {needed}, have {have}")]
26 NotEnoughNodes { needed: usize, have: usize },
27}