use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("Invalid private key: {0}")]
InvalidPrivateKey(String),
#[error("Invalid address: {0}")]
InvalidAddress(String),
#[error("Invalid hex string: {0}")]
InvalidHex(String),
#[error("Signing failed: {0}")]
SigningFailed(String),
#[error("Encoding failed: {0}")]
EncodingFailed(String),
#[error("Missing required field: {0}")]
MissingField(String),
#[error("RLP encoding error: {0}")]
RlpError(String),
#[error("RPC error: {0}")]
Rpc(String),
#[error("Other error: {0}")]
Other(String),
}
impl From<hex::FromHexError> for Error {
fn from(e: hex::FromHexError) -> Self {
Error::InvalidHex(e.to_string())
}
}
impl From<alloy_primitives::AddressError> for Error {
fn from(e: alloy_primitives::AddressError) -> Self {
Error::InvalidAddress(e.to_string())
}
}
impl From<reqwest::Error> for Error {
fn from(e: reqwest::Error) -> Self {
Error::Other(e.to_string())
}
}
impl From<std::num::ParseIntError> for Error {
fn from(e: std::num::ParseIntError) -> Self {
Error::InvalidHex(e.to_string())
}
}