oxidized-builder 0.1.0-delta

Oxidized Builder - Ethereum block and transactions framework
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
pub enum AppError {
    #[error("Configuration error: {0}")]
    Config(String),

    #[error("Initialization failed: {0}")]
    Initialization(String),

    #[error("Connection failed to endpoint: {0}")]
    Connection(String),

    #[error("Transaction failed: {hash:?}, reason: {reason}")]
    Transaction { hash: String, reason: String },

    #[error("Strategy execution error: {0}")]
    Strategy(String),

    #[error("Insufficient funds. Required: {required}, Available: {available}")]
    InsufficientFunds { required: String, available: String },

    #[error("External API error: {provider} responded with {status}")]
    ApiCall { provider: String, status: u16 },

    #[error("Validation failed for field {field}: {message}")]
    Validation { field: String, message: String },

    #[error("Address {0} is invalid or not checksummed")]
    InvalidAddress(String),

    #[error(transparent)]
    Unknown(#[from] anyhow::Error),
}

impl From<config::ConfigError> for AppError {
    fn from(err: config::ConfigError) -> Self {
        AppError::Config(err.to_string())
    }
}