#[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
)
}
}