alchemy_api/types/
chain.rs

1#![allow(missing_docs)]
2
3use ethers_core::types::Chain;
4use serde::{Deserialize, Serialize};
5
6#[derive(Default, Debug, Clone, Copy, Serialize, Deserialize)]
7#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
8pub enum AlchemyChain {
9    #[default]
10    EthMainnet,
11    EthGoerli,
12    EthSepolia,
13    OptMainnet,
14    OptGoerli,
15    ArbMainnet,
16    ArbGoerli,
17    MaticMainnet,
18    MaticMumbai,
19    AstarMainnet,
20    PolygonzkevmMainnet,
21    PolygonzkevmTestnet,
22    BaseMainnet,
23    BaseGoerli,
24}
25
26impl From<AlchemyChain> for Chain {
27    fn from(alchemy_chain: AlchemyChain) -> Self {
28        match alchemy_chain {
29            AlchemyChain::EthMainnet => Chain::Mainnet,
30            AlchemyChain::EthGoerli => Chain::Goerli,
31            AlchemyChain::EthSepolia => Chain::Sepolia,
32            AlchemyChain::OptMainnet => Chain::Optimism,
33            AlchemyChain::OptGoerli => Chain::OptimismGoerli,
34            AlchemyChain::ArbMainnet => Chain::Arbitrum,
35            AlchemyChain::ArbGoerli => Chain::ArbitrumGoerli,
36            AlchemyChain::MaticMainnet => Chain::Polygon,
37            AlchemyChain::MaticMumbai => Chain::PolygonMumbai,
38            AlchemyChain::AstarMainnet => unimplemented!("chain is not supported by ether-rs"),
39            AlchemyChain::PolygonzkevmMainnet => Chain::PolygonZkEvm,
40            AlchemyChain::PolygonzkevmTestnet => Chain::PolygonZkEvmTestnet,
41            AlchemyChain::BaseMainnet => Chain::Base,
42            AlchemyChain::BaseGoerli => Chain::BaseGoerli,
43        }
44    }
45}