data3 0.1.0

SDK for accessing ethereum data hosted by indexers.
Documentation
#[derive(Clone, Copy)]
pub enum Network {
    EthereumMainnet,
    EthereumSepolia,
    EthereumHolesky,
    EthereumHoodi,

    OptimismMainnet,
    OptimismSepolia,

    ArbitrumMainnet,
    ArbitrumSepolia,

    ArbitrumNovaMainnet,

    PolygonZkEvmMainnet,
    PolygonZkEvmCardona,

    ShapeMainnet,
    ShapeSepolia,

    ZkSyncMainnet,
    ZkSyncSepolia,

    PolygonMainnet,
    PolygonAmoy,

    StarknetMainnet,
    StarknetSepolia,

    AstarMainnet,

    ZetachainMainnet,
    ZetachainTestnet,

    FantomOperaMainnet,

    MantleMainnet,
    MantleSepolia,

    BlastMainnet,
    BlastSepolia,

    LineaMainnet,
    LineaSepolia,

    ZoraMainnet,
    ZoraSepolia,

    RootstockMainnet,
    RootstockTestnet,

    BaseMainnet,
    BaseSepolia,

    FraxMainnet,
    FraxSepolia,

    UnichainMainnet,
    UnichainSepolia,

    FlowMainnet,
    FlowTestnet,

    PolynomialMainnet,
    PolynomialSepolia,

    ScrollMainnet,
    ScrollSepolia,

    SoneiumMainnet,
    SoneiumMinato,

    CrossFiMainnet,
    CrossFiTestnet,

    WorldchainMainnet,
    WorldchainSepolia,

    BerachainMainnet,
    BerachainBepolia,

    RoninMainnet,
    RoninSaigon,

    SettlusMainnet,
    SettlusSepolia,

    MegaEthTestnet,

    TeaSepolia,

    CeloMainnet,
    CeloAlfajores,

    AnimeMainnet,
    AnimeSepolia,

    ApechainMainnet,
    ApechainCurtis,

    DegenMainnet,

    MonadTestnet,

    SuperseedMainnet,
    SuperseedSepolia,

    BscMainnet,
    BscTestnet,

    GnosisMainnet,
    GnosisChiado,

    AvalancheMainnet,
    AvalancheFuji,

    InkMainnet,
    InkSepolia,

    LensMainnet,
    LensSepolia,
}

impl Network {
    pub fn chain_id(&self) -> u64 {
        match self {
            Network::EthereumMainnet => 1,
            Network::EthereumSepolia => 11155111,
            Network::EthereumHolesky => 17000,
            Network::EthereumHoodi => 17001,

            Network::OptimismMainnet => 10,
            Network::OptimismSepolia => 11155420,

            Network::ArbitrumMainnet => 42161,
            Network::ArbitrumSepolia => 421614,

            Network::ArbitrumNovaMainnet => 42170,

            Network::PolygonZkEvmMainnet => 1101,
            Network::PolygonZkEvmCardona => 1102,

            Network::ShapeMainnet => 1000,
            Network::ShapeSepolia => 1001,

            Network::ZkSyncMainnet => 324,
            Network::ZkSyncSepolia => 280,

            Network::PolygonMainnet => 137,
            Network::PolygonAmoy => 80001,

            Network::StarknetMainnet => 9000,
            Network::StarknetSepolia => 9001,

            Network::AstarMainnet => 592,

            Network::ZetachainMainnet => 106,
            Network::ZetachainTestnet => 107,

            Network::FantomOperaMainnet => 250,

            Network::MantleMainnet => 5000,
            Network::MantleSepolia => 5001,

            Network::BlastMainnet => 8453,
            Network::BlastSepolia => 8454,

            Network::LineaMainnet => 59144,
            Network::LineaSepolia => 59145,

            Network::ZoraMainnet => 7777777,
            Network::ZoraSepolia => 7777778,

            Network::RootstockMainnet => 30,
            Network::RootstockTestnet => 31,

            Network::BaseMainnet => 8453,
            Network::BaseSepolia => 8454,

            Network::FraxMainnet => 122,
            Network::FraxSepolia => 123,

            Network::UnichainMainnet => 10000,
            Network::UnichainSepolia => 10001,

            Network::FlowMainnet => 747,
            Network::FlowTestnet => 646,

            Network::PolynomialMainnet => 10001,
            Network::PolynomialSepolia => 10002,

            Network::ScrollMainnet => 534352,
            Network::ScrollSepolia => 534353,
            Network::SoneiumMainnet => 100000,
            Network::SoneiumMinato => 100001,
            Network::CrossFiMainnet => 1000000,
            Network::CrossFiTestnet => 1000001,
            Network::WorldchainMainnet => 10000000,
            Network::WorldchainSepolia => 10000001,
            Network::BerachainMainnet => 100000000,
            Network::BerachainBepolia => 100000001,
            Network::RoninMainnet => 2020,
            Network::RoninSaigon => 2021,
            Network::SettlusMainnet => 1000000000,
            Network::SettlusSepolia => 1000000001,
            Network::MegaEthTestnet => 10000000000,
            Network::TeaSepolia => 10000000001,
            Network::CeloMainnet => 42220,
            Network::CeloAlfajores => 44787,
            Network::AnimeMainnet => 100000000000,
            Network::AnimeSepolia => 100000000001,
            Network::ApechainMainnet => 1000000000000,
            Network::ApechainCurtis => 1000000000001,
            Network::DegenMainnet => 10000000000000,
            Network::MonadTestnet => 100000000000000,
            Network::SuperseedMainnet => 1000000000000000,
            Network::SuperseedSepolia => 1000000000000001,
            Network::BscMainnet => 56,
            Network::BscTestnet => 97,
            Network::GnosisMainnet => 100,
            Network::GnosisChiado => 10200,
            Network::AvalancheMainnet => 43114,
            Network::AvalancheFuji => 43113,
            Network::InkMainnet => 10000000000000000,
            Network::InkSepolia => 10000000000000001,
            Network::LensMainnet => 100000000000000000,
            Network::LensSepolia => 100000000000000001,
        }
    }

    pub fn is_mainnet(&self) -> bool {
        matches!(
            self,
            Network::EthereumMainnet
                | Network::OptimismMainnet
                | Network::ArbitrumMainnet
                | Network::ArbitrumNovaMainnet
                | Network::PolygonZkEvmMainnet
                | Network::ShapeMainnet
                | Network::ZkSyncMainnet
                | Network::PolygonMainnet
                | Network::StarknetMainnet
                | Network::AstarMainnet
                | Network::ZetachainMainnet
                | Network::FantomOperaMainnet
                | Network::MantleMainnet
                | Network::BlastMainnet
                | Network::LineaMainnet
                | Network::ZoraMainnet
                | Network::RootstockMainnet
                | Network::BaseMainnet
                | Network::FraxMainnet
                | Network::UnichainMainnet
                | Network::FlowMainnet
                | Network::PolynomialMainnet
                | Network::ScrollMainnet
                | Network::SoneiumMainnet
                | Network::CrossFiMainnet
                | Network::WorldchainMainnet
                | Network::BerachainMainnet
                | Network::RoninMainnet
                | Network::SettlusMainnet
                | Network::CeloMainnet
                | Network::AnimeMainnet
                | Network::ApechainMainnet
                | Network::DegenMainnet
                | Network::SuperseedMainnet
        )
    }

    pub fn is_testnet(&self) -> bool {
        matches!(
            self,
            Network::EthereumSepolia
                | Network::EthereumHolesky
                | Network::EthereumHoodi
                | Network::OptimismSepolia
                | Network::ArbitrumSepolia
                | Network::PolygonZkEvmCardona
                | Network::ShapeSepolia
                | Network::ZkSyncSepolia
                | Network::PolygonAmoy
                | Network::StarknetSepolia
                | Network::ZetachainTestnet
                | Network::MantleSepolia
                | Network::BlastSepolia
                | Network::LineaSepolia
                | Network::ZoraSepolia
                | Network::RootstockTestnet
                | Network::BaseSepolia
                | Network::FraxSepolia
                | Network::UnichainSepolia
                | Network::FlowTestnet
                | Network::PolynomialSepolia
                | Network::ScrollSepolia
                | Network::SoneiumMinato
                | Network::CrossFiTestnet
                | Network::WorldchainSepolia
                | Network::BerachainBepolia
                | Network::RoninSaigon
                | Network::SettlusSepolia
                | Network::MegaEthTestnet
                | Network::TeaSepolia
                | Network::CeloAlfajores
                | Network::AnimeSepolia
                | Network::ApechainCurtis
                | Network::MonadTestnet
                | Network::SuperseedSepolia
        )
    }
}