mithril_aggregator/services/signer_registration/
error.rs

1use thiserror::Error;
2
3use mithril_common::{
4    StdError,
5    entities::{Epoch, SignerWithStake},
6};
7
8use mithril_cardano_node_chain::chain_observer::ChainObserverError;
9
10/// Error type for signer registerer service.
11#[derive(Error, Debug)]
12pub enum SignerRegistrationError {
13    /// No signer registration round opened yet
14    #[error("a signer registration round is not opened yet, please try again later")]
15    RegistrationRoundNotYetOpened,
16
17    /// Registration round for unexpected epoch
18    #[error(
19        "unexpected signer registration round epoch: current_round_epoch: {current_round_epoch}, received_epoch: {received_epoch}"
20    )]
21    RegistrationRoundUnexpectedEpoch {
22        /// Epoch of the current round
23        current_round_epoch: Epoch,
24        /// Epoch of the received signer registration
25        received_epoch: Epoch,
26    },
27
28    /// Chain observer error.
29    #[error("chain observer error")]
30    ChainObserver(#[from] ChainObserverError),
31
32    /// Signer is already registered.
33    #[error("signer already registered")]
34    ExistingSigner(Box<SignerWithStake>),
35
36    /// Store.
37    #[error("store error")]
38    Store(#[source] StdError),
39
40    /// Epoch service.
41    #[error("epoch service error")]
42    EpochService(#[source] StdError),
43
44    /// Signer registration failed.
45    #[error("signer registration failed")]
46    FailedSignerRegistration(#[source] StdError),
47
48    /// Signer recorder failed.
49    #[error("signer recorder failed: '{0}'")]
50    FailedSignerRecorder(String),
51
52    /// Signer registration is always closed on a follower aggregator.
53    #[error("signer registration is always closed on a follower aggregator")]
54    RegistrationRoundAlwaysClosedOnFollowerAggregator,
55
56    /// Signer synchronization is not available on a leader aggregator.
57    #[error("signer synchronization is not available on a leader aggregator")]
58    SignerSynchronizationUnavailableOnLeaderAggregator,
59
60    /// Failed fetching leader aggregator epoch settings.
61    #[error("failed fetching leader aggregator epoch settings: '{0}'")]
62    FailedFetchingLeaderAggregatorEpochSettings(#[source] StdError),
63}