1pub use hopr_transport::errors::{HoprTransportError, ProbeError, ProtocolError};
2use thiserror::Error;
3
4use crate::state::HoprState;
5
6#[derive(Error, Debug)]
8pub enum HoprStatusError {
9 #[error("HOPR status general error: '{0}'")]
10 General(String),
11
12 #[error("HOPR status error: '{0}'")]
13 NotThereYet(HoprState, String),
14}
15
16#[derive(Error, Debug)]
18pub enum HoprLibError {
19 #[error("HOPR lib Error: '{0}'")]
20 GeneralError(String),
21
22 #[error("configuration validation failed: {0}")]
23 ConfigurationError(#[from] validator::ValidationErrors),
24
25 #[error(transparent)]
26 DbError(anyhow::Error),
27
28 #[error(transparent)]
29 ChainError(anyhow::Error),
30
31 #[error(transparent)]
32 StatusError(#[from] HoprStatusError),
33
34 #[error(transparent)]
35 TransportError(#[from] HoprTransportError),
36
37 #[error(transparent)]
38 TypeError(#[from] hopr_primitive_types::errors::GeneralError),
39
40 #[error(transparent)]
41 NetworkTypeError(#[from] hopr_network_types::errors::NetworkTypeError),
42
43 #[error(transparent)]
44 Other(anyhow::Error),
45}
46
47pub type Result<T> = std::result::Result<T, HoprLibError>;
48
49impl HoprLibError {
50 pub fn chain<E: Into<anyhow::Error>>(e: E) -> Self {
51 Self::ChainError(e.into())
52 }
53
54 pub fn db<E: Into<anyhow::Error>>(e: E) -> Self {
55 Self::DbError(e.into())
56 }
57
58 pub fn other(e: impl Into<anyhow::Error>) -> Self {
59 Self::Other(e.into())
60 }
61}