nym_validator_client/
error.rs

1// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::nym_api;
5use crate::signing::direct_wallet::DirectSecp256k1HdWalletError;
6pub use tendermint_rpc::error::Error as TendermintRpcError;
7use thiserror::Error;
8
9#[derive(Error, Debug)]
10pub enum ValidatorClientError {
11    #[error("nym api request failed: {source}")]
12    NymAPIError {
13        source: Box<nym_api::error::NymAPIError>,
14    },
15
16    #[error("Tendermint RPC request failure: {0}")]
17    TendermintErrorRpc(#[from] TendermintRpcError),
18
19    #[error("One of the provided URLs was malformed - {0}")]
20    MalformedUrlProvided(#[from] url::ParseError),
21
22    #[error("nyxd request failed: {0}")]
23    NyxdError(#[from] crate::nyxd::error::NyxdError),
24
25    #[error("the response metadata has changed between pages")]
26    InconsistentPagedMetadata,
27
28    #[error("No validator API url has been provided")]
29    NoAPIUrlAvailable,
30
31    #[error("failed to derive signing accounts: {source}")]
32    AccountDerivationFailure {
33        #[from]
34        source: DirectSecp256k1HdWalletError,
35    },
36}
37
38impl From<nym_api::error::NymAPIError> for ValidatorClientError {
39    fn from(source: nym_api::error::NymAPIError) -> Self {
40        ValidatorClientError::NymAPIError {
41            source: Box::new(source),
42        }
43    }
44}