hopr_chain_rpc/
errors.rs

1use alloy::{
2    contract::Error as AlloyContractError,
3    providers::{MulticallError, PendingTransactionError},
4    transports::{RpcError as AlloyRpcError, TransportErrorKind},
5};
6/// Errors produced by this crate and other error-related types.
7use thiserror::Error;
8
9/// Enumerates different errors produced by this crate.
10#[derive(Error, Debug)]
11pub enum RpcError {
12    #[error(transparent)]
13    AlloyRpcError(#[from] AlloyRpcError<TransportErrorKind>),
14
15    #[error(transparent)]
16    AlloyContractError(#[from] AlloyContractError),
17
18    #[error(transparent)]
19    MulticallError(#[from] MulticallError),
20
21    #[error(transparent)]
22    LogConversionError(#[from] LogConversionError),
23
24    #[error(transparent)]
25    SignerError(#[from] alloy::signers::Error),
26
27    #[error("multicall inner failure at {0}: {1}")]
28    MulticallFailure(usize, String),
29
30    #[error(transparent)]
31    PendingTransactionError(#[from] PendingTransactionError),
32
33    #[error("filter does not contain any criteria")]
34    FilterIsEmpty,
35
36    #[error("transaction submission to the RPC provider timed out")]
37    Timeout,
38
39    #[error("unknown error: {0}")]
40    Other(String),
41}
42
43pub type Result<T> = std::result::Result<T, RpcError>;
44
45/// Error abstraction for `HttpRequestor`.
46#[derive(Error, Clone, Debug, PartialEq)]
47pub enum HttpRequestError {
48    #[error("connection timed out")]
49    Timeout,
50
51    #[error("http error - status {0}")]
52    HttpError(http::StatusCode),
53
54    #[error("io error when performing http request: {0}")]
55    TransportError(String),
56
57    #[error("unrecognized error: {0}")]
58    UnknownError(String),
59}
60
61#[derive(Debug, thiserror::Error)]
62pub enum LogConversionError {
63    #[error("Missing transaction index")]
64    MissingTransactionIndex,
65    #[error("Missing block number")]
66    MissingBlockNumber,
67    #[error("Missing block hash")]
68    MissingBlockHash,
69    #[error("Missing log index")]
70    MissingLogIndex,
71    #[error("Missing transaction hash")]
72    MissingTransactionHash,
73}