scematica-core 1.15.0

Core types, traits, and shared utilities for Scematica — config, RPC, wallet, metrics, token helpers.
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum ScematicaError {
    #[error("RPC error: {0}")]
    Rpc(#[from] solana_client::client_error::ClientError),

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

    #[error("Pool not found: {0}")]
    PoolNotFound(String),

    #[error("Insufficient balance: have {have}, need {need}")]
    InsufficientBalance { have: u64, need: u64 },

    #[error("Slippage exceeded: expected {expected}, got {got}")]
    SlippageExceeded { expected: u64, got: u64 },

    #[error("No arbitrage opportunity found")]
    NoArbitrageOpportunity,

    #[error("Filter rejected pool: {reason}")]
    FilterRejected { reason: String },

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

    #[error("Serialization error: {0}")]
    Serialization(#[from] serde_json::Error),

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

    #[error("HTTP error: {0}")]
    Http(#[from] reqwest::Error),

    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    #[error("Unknown error: {0}")]
    Unknown(#[from] anyhow::Error),
}

pub type Result<T> = std::result::Result<T, ScematicaError>;