alchemy-api 0.1.0

A high-level binding for Alchemy Enhanced APIs, written in Rust.
Documentation
#![allow(missing_docs)]

use ethers_core::types::Chain;
use serde::{Deserialize, Serialize};

#[derive(Default, Debug, Clone, Copy, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum AlchemyChain {
    #[default]
    EthMainnet,
    EthGoerli,
    EthSepolia,
    OptMainnet,
    OptGoerli,
    ArbMainnet,
    ArbGoerli,
    MaticMainnet,
    MaticMumbai,
    AstarMainnet,
    PolygonzkevmMainnet,
    PolygonzkevmTestnet,
    BaseMainnet,
    BaseGoerli,
}

impl From<AlchemyChain> for Chain {
    fn from(alchemy_chain: AlchemyChain) -> Self {
        match alchemy_chain {
            AlchemyChain::EthMainnet => Chain::Mainnet,
            AlchemyChain::EthGoerli => Chain::Goerli,
            AlchemyChain::EthSepolia => Chain::Sepolia,
            AlchemyChain::OptMainnet => Chain::Optimism,
            AlchemyChain::OptGoerli => Chain::OptimismGoerli,
            AlchemyChain::ArbMainnet => Chain::Arbitrum,
            AlchemyChain::ArbGoerli => Chain::ArbitrumGoerli,
            AlchemyChain::MaticMainnet => Chain::Polygon,
            AlchemyChain::MaticMumbai => Chain::PolygonMumbai,
            AlchemyChain::AstarMainnet => unimplemented!("chain is not supported by ether-rs"),
            AlchemyChain::PolygonzkevmMainnet => Chain::PolygonZkEvm,
            AlchemyChain::PolygonzkevmTestnet => Chain::PolygonZkEvmTestnet,
            AlchemyChain::BaseMainnet => Chain::Base,
            AlchemyChain::BaseGoerli => Chain::BaseGoerli,
        }
    }
}