1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, Error>;
6
7#[derive(Debug, Error)]
8pub enum Error {
9 #[error("Invalid private key: {0}")]
10 InvalidPrivateKey(String),
11
12 #[error("Invalid address: {0}")]
13 InvalidAddress(String),
14
15 #[error("Invalid hex string: {0}")]
16 InvalidHex(String),
17
18 #[error("Signing failed: {0}")]
19 SigningFailed(String),
20
21 #[error("Encoding failed: {0}")]
22 EncodingFailed(String),
23
24 #[error("Missing required field: {0}")]
25 MissingField(String),
26
27 #[error("RLP encoding error: {0}")]
28 RlpError(String),
29
30 #[error("RPC error: {0}")]
31 Rpc(String),
32
33 #[error("Other error: {0}")]
34 Other(String),
35}
36
37impl From<hex::FromHexError> for Error {
38 fn from(e: hex::FromHexError) -> Self {
39 Error::InvalidHex(e.to_string())
40 }
41}
42
43impl From<alloy_primitives::AddressError> for Error {
44 fn from(e: alloy_primitives::AddressError) -> Self {
45 Error::InvalidAddress(e.to_string())
46 }
47}
48
49impl From<reqwest::Error> for Error {
50 fn from(e: reqwest::Error) -> Self {
51 Error::Other(e.to_string())
52 }
53}
54
55impl From<std::num::ParseIntError> for Error {
56 fn from(e: std::num::ParseIntError) -> Self {
57 Error::InvalidHex(e.to_string())
58 }
59}