1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use std::{error::Error, sync::Arc};

#[derive(Clone, Debug, PartialEq)]
pub enum Err {
    Generic,
    SgxError,
    SgxWriteError,
    AnchorParse,
    TxFailure,
    NetworkErr,
    InvalidQuoteError,
    TxCompileErr,
    EnvVariableMissing,
    EvmError,
    InvalidKeypairFile,
    IpfsParseError,
    IpfsNetworkError,
    HeartbeatRoutineFailure,
    EventListenerRoutineFailure,
    TxDeserializationError,
    KeyParseError,
    QuoteParseError,
    InvalidInstructionError,
    AnchorParseError,
    IllegalFunctionOutput,
    FunctionResultParseError,
    QvnTxSendFailure,
    FunctionVerifyFailure,
    FunctionResultIllegalAccount,
    FunctionResultAccountsMismatch,
    FunctionResultInvalidData,
    FunctionResultInvalidPid,
    FunctionResultEmptyInstructions,
    AnchorLoadError,
}
impl std::error::Error for Err {}
impl std::fmt::Display for Err {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{:#?}", self)
    }
}

#[derive(Clone, Debug)]
pub enum SwitchboardClientError {
    EnvVariableMissing(String),
    InvalidEnv(String),
    RpcURLParseError(String),
    CustomError {
        message: String,
        source: Arc<dyn Error + 'static>,
    },
}
impl std::error::Error for SwitchboardClientError {}
impl From<std::env::VarError> for SwitchboardClientError {
    fn from(value: std::env::VarError) -> Self {
        Self::InvalidEnv(value.to_string())
    }
}
impl From<ethers::abi::ParseError> for SwitchboardClientError {
    fn from(value: ethers::abi::ParseError) -> Self {
        Self::RpcURLParseError(value.to_string())
    }
}
impl std::fmt::Display for SwitchboardClientError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{:#?}", self)
    }
}