diff --git a/rs/README.md b/rs/README.md index 89ce2b5..69073f2 100644 --- a/rs/README.md +++ b/rs/README.md @@ -14,20 +14,20 @@ cargo add --git https://github.com/smartcontractkit/chain-selectors --tag ```rust use std::str::FromStr; -use chainselectors::generated_chains; +use chainselectors::generated_chains::{ChainName, ChainSelector, ChainId}; fn main() { - let chain = generated_chains::ChainName::try_from(420).unwrap(); - assert_eq!(chain, generated_chains::ChainName::EthereumTestnetGoerliOptimism1); + let chain = ChainName::try_from(ChainId(420)).unwrap(); + assert_eq!(chain, ChainName::EthereumTestnetGoerliOptimism1); - let selector = generated_chains::chain_selector(generated_chains::ChainName::EthereumTestnetGoerliOptimism1); + let selector = ChainSelector::from(ChainName::EthereumTestnetGoerliOptimism1); assert_eq!( selector, - 2664363617261496610, + ChainSelector(2664363617261496610), ); - let chain_from_str = generated_chains::ChainName::from_str("ethereum-testnet-goerli-optimism-1").unwrap(); - assert_eq!(chain_from_str, generated_chains::ChainName::EthereumTestnetGoerliOptimism1); + let chain_from_str = ChainName::from_str("ethereum-testnet-goerli-optimism-1").unwrap(); + assert_eq!(chain_from_str, ChainName::EthereumTestnetGoerliOptimism1); } ``` diff --git a/rs/chainselectors/src/generated_chains.rs b/rs/chainselectors/src/generated_chains.rs index b944e80..637f82d 100644 --- a/rs/chainselectors/src/generated_chains.rs +++ b/rs/chainselectors/src/generated_chains.rs @@ -11,16 +11,33 @@ pub enum Error { #[error("unknown chain name: {0}")] UnknownChainName(String), #[error("unknown chain id: {0}")] - UnknownChainId(u64), + UnknownChainId(ChainId), #[error("unknown chain selector: {0}")] - UnknownChainSelector(u64), + UnknownChainSelector(ChainSelector), } -#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] +#[derive( + Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, +)] pub struct ChainId(pub u64); -#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] + +impl Display for ChainId { + fn fmt(&self, f: &mut Formatter) -> FmtResult { + write!(f, "{}", self.0) + } +} + +#[derive( + Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, +)] pub struct ChainSelector(pub u64); +impl Display for ChainSelector { + fn fmt(&self, f: &mut Formatter) -> FmtResult { + write!(f, "{}", self.0) + } +} + #[derive( Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, )] @@ -277,8 +294,251 @@ impl From for ChainId { } impl From for ChainSelector { - fn from(chain_name: ChainName) -> ChainSelector { - chain_selector(chain_name) + fn from(chain: ChainName) -> Self { + match chain { + ChainName::AreonMainnet => Self(1939936305787790600), + ChainName::AreonTestnet => Self(7317911323415911000), + ChainName::AvalancheMainnet => Self(6433500567565415381), + ChainName::AvalancheSubnetDexalotMainnet => Self(5463201557265485081), + ChainName::AvalancheSubnetDexalotTestnet => Self(1458281248224512906), + ChainName::AvalancheTestnetFuji => Self(14767482510784806043), + ChainName::AvalancheTestnetNexon => Self(7837562506228496256), + ChainName::BerachainTestnetArtio => Self(12336603543561911511), + ChainName::BerachainTestnetBartio => Self(8999465244383784164), + ChainName::BinanceSmartChainMainnet => Self(11344663589394136015), + ChainName::BinanceSmartChainMainnetOpbnb1 => Self(465944652040885897), + ChainName::BinanceSmartChainTestnet => Self(13264668187771770619), + ChainName::BinanceSmartChainTestnetOpbnb1 => Self(13274425992935471758), + ChainName::BitcichainMainnet => Self(4874388048629246000), + ChainName::BitcichainTestnet => Self(4888058894222120000), + ChainName::BitcoinMainnetBitlayer1 => Self(7937294810946806131), + ChainName::BitcoinMainnetBob1 => Self(3849287863852499584), + ChainName::BitcoinMainnetBotanix => Self(4560701533377838164), + ChainName::BitcoinMainnetBsquared1 => Self(5406759801798337480), + ChainName::BitcoinMerlinMainnet => Self(241851231317828981), + ChainName::BitcoinTestnetBitlayer1 => Self(3789623672476206327), + ChainName::BitcoinTestnetBotanix => Self(1467223411771711614), + ChainName::BitcoinTestnetBsquared1 => Self(1948510578179542068), + ChainName::BitcoinTestnetMerlin => Self(5269261765892944301), + ChainName::BitcoinTestnetRootstock => Self(8953668971247136127), + ChainName::BitcoinTestnetSepoliaBob1 => Self(5535534526963509396), + ChainName::BittorrentChainMainnet => Self(3776006016387883143), + ChainName::BittorrentChainTestnet => Self(4459371029167934217), + ChainName::CeloMainnet => Self(1346049177634351622), + ChainName::CeloTestnetAlfajores => Self(3552045678561919002), + ChainName::CoinexSmartChainMainnet => Self(1761333065194157300), + ChainName::CoinexSmartChainTestnet => Self(8955032871639343000), + ChainName::CronosMainnet => Self(1456215246176062136), + ChainName::CronosTestnet => Self(2995292832068775165), + ChainName::CronosTestnetZkevm1 => Self(3842103497652714138), + ChainName::EthereumMainnet => Self(5009297550715157269), + ChainName::EthereumMainnetArbitrum1 => Self(4949039107694359620), + ChainName::EthereumMainnetArbitrum1L3x1 => Self(3162193654116181371), + ChainName::EthereumMainnetArbitrum1Treasure1 => Self(1010349088906777999), + ChainName::EthereumMainnetAstarZkevm1 => Self(1540201334317828111), + ChainName::EthereumMainnetBase1 => Self(15971525489660198786), + ChainName::EthereumMainnetBlast1 => Self(4411394078118774322), + ChainName::EthereumMainnetImmutableZkevm1 => Self(1237925231416731909), + ChainName::EthereumMainnetKroma1 => Self(3719320017875267166), + ChainName::EthereumMainnetLinea1 => Self(4627098889531055414), + ChainName::EthereumMainnetMantle1 => Self(1556008542357238666), + ChainName::EthereumMainnetMetis1 => Self(8805746078405598895), + ChainName::EthereumMainnetMode1 => Self(7264351850409363825), + ChainName::EthereumMainnetOptimism1 => Self(3734403246176062136), + ChainName::EthereumMainnetPolygonZkevm1 => Self(4348158687435793198), + ChainName::EthereumMainnetScroll1 => Self(13204309965629103672), + ChainName::EthereumMainnetTaiko1 => Self(16468599424800719238), + ChainName::EthereumMainnetWorldchain1 => Self(2049429975587534727), + ChainName::EthereumMainnetXlayer1 => Self(3016212468291539606), + ChainName::EthereumMainnetZircuit1 => Self(17198166215261833993), + ChainName::EthereumMainnetZksync1 => Self(1562403441176082196), + ChainName::EthereumTestnetGoerliArbitrum1 => Self(6101244977088475029), + ChainName::EthereumTestnetGoerliBase1 => Self(5790810961207155433), + ChainName::EthereumTestnetGoerliLinea1 => Self(1355246678561316402), + ChainName::EthereumTestnetGoerliMantle1 => Self(4168263376276232250), + ChainName::EthereumTestnetGoerliOptimism1 => Self(2664363617261496610), + ChainName::EthereumTestnetGoerliPolygonZkevm1 => Self(11059667695644972511), + ChainName::EthereumTestnetGoerliZksync1 => Self(6802309497652714138), + ChainName::EthereumTestnetHolesky => Self(7717148896336251131), + ChainName::EthereumTestnetHoleskyFraxtal1 => Self(8901520481741771655), + ChainName::EthereumTestnetHoleskyMorph1 => Self(8304510386741731151), + ChainName::EthereumTestnetHoleskyTaiko1 => Self(7248756420937879088), + ChainName::EthereumTestnetSepolia => Self(16015286601757825753), + ChainName::EthereumTestnetSepoliaArbitrum1 => Self(3478487238524512106), + ChainName::EthereumTestnetSepoliaArbitrum1L3x1 => Self(3486622437121596122), + ChainName::EthereumTestnetSepoliaArbitrum1Treasure1 => Self(10443705513486043421), + ChainName::EthereumTestnetSepoliaBase1 => Self(10344971235874465080), + ChainName::EthereumTestnetSepoliaBlast1 => Self(2027362563942762617), + ChainName::EthereumTestnetSepoliaCorn1 => Self(1467427327723633929), + ChainName::EthereumTestnetSepoliaImmutableZkevm1 => Self(4526165231216331901), + ChainName::EthereumTestnetSepoliaKroma1 => Self(5990477251245693094), + ChainName::EthereumTestnetSepoliaLens1 => Self(6827576821754315911), + ChainName::EthereumTestnetSepoliaLinea1 => Self(5719461335882077547), + ChainName::EthereumTestnetSepoliaLisk1 => Self(5298399861320400553), + ChainName::EthereumTestnetSepoliaMantle1 => Self(8236463271206331221), + ChainName::EthereumTestnetSepoliaMetis1 => Self(3777822886988675105), + ChainName::EthereumTestnetSepoliaMode1 => Self(829525985033418733), + ChainName::EthereumTestnetSepoliaOptimism1 => Self(5224473277236331295), + ChainName::EthereumTestnetSepoliaPolygonValidium1 => Self(4418231248214522936), + ChainName::EthereumTestnetSepoliaPolygonZkevm1 => Self(1654667687261492630), + ChainName::EthereumTestnetSepoliaScroll1 => Self(2279865765895943307), + ChainName::EthereumTestnetSepoliaSoneium1 => Self(686603546605904534), + ChainName::EthereumTestnetSepoliaUnichain1 => Self(14135854469784514356), + ChainName::EthereumTestnetSepoliaWorldchain1 => Self(5299555114858065850), + ChainName::EthereumTestnetSepoliaXlayer1 => Self(2066098519157881736), + ChainName::EthereumTestnetSepoliaZircuit1 => Self(4562743618362911021), + ChainName::EthereumTestnetSepoliaZksync1 => Self(6898391096552792247), + ChainName::FantomMainnet => Self(3768048213127883732), + ChainName::FantomTestnet => Self(4905564228793744293), + ChainName::FilecoinMainnet => Self(4561443241176882990), + ChainName::FilecoinTestnet => Self(7060342227814389000), + ChainName::FraxtalMainnet => Self(1462016016387883143), + ChainName::GethDevnet2 => Self(12922642891491394802), + ChainName::GethDevnet3 => Self(4793464827907405086), + ChainName::GethTestnet => Self(3379446385462418246), + ChainName::GnosisChainMainnet => Self(465200170687744372), + ChainName::GnosisChainTestnetChiado => Self(8871595565390010547), + ChainName::HederaMainnet => Self(3229138320728879060), + ChainName::HederaTestnet => Self(222782988166878823), + ChainName::HyperliquidTestnet => Self(4286062357653186312), + ChainName::KavaMainnet => Self(7550000543357438061), + ChainName::KavaTestnet => Self(2110537777356199208), + ChainName::KusamaMainnetMoonriver => Self(1355020143337428062), + ChainName::NearMainnet => Self(2039744413822257700), + ChainName::NearTestnet => Self(5061593697262339000), + ChainName::NeonlinkMainnet => Self(8239338020728974000), + ChainName::NeonlinkTestnet => Self(1113014352258747600), + ChainName::PlumeTestnet => Self(14684575664602284776), + ChainName::PolkadotMainnetAstar => Self(6422105447186081193), + ChainName::PolkadotMainnetCentrifuge => Self(8175830712062617656), + ChainName::PolkadotMainnetDarwinia => Self(8866418665544333000), + ChainName::PolkadotMainnetMoonbeam => Self(1252863800116739621), + ChainName::PolkadotTestnetAstarShibuya => Self(6955638871347136141), + ChainName::PolkadotTestnetCentrifugeAltair => Self(2333097300889804761), + ChainName::PolkadotTestnetDarwiniaPangoro => Self(4340886533089894000), + ChainName::PolkadotTestnetMoonbeamMoonbase => Self(5361632739113536121), + ChainName::PolygonMainnet => Self(4051577828743386545), + ChainName::PolygonTestnetAmoy => Self(16281711391670634445), + ChainName::PolygonTestnetMumbai => Self(12532609583862916517), + ChainName::PrivateTestnetMica => Self(4489326297382772450), + ChainName::PrivateTestnetOpala => Self(8446413392851542429), + ChainName::RoninMainnet => Self(6916147374840168594), + ChainName::RoninTestnetSaigon => Self(13116810400804392105), + ChainName::SeiMainnet => Self(9027416829622342829), + ChainName::SeiTestnetAtlantic => Self(1216300075444106652), + ChainName::SonicTestnet => Self(3676871237479449268), + ChainName::StoryTestnet => Self(4237030917318060427), + ChainName::TelosEvmMainnet => Self(1477345371608778000), + ChainName::TelosEvmTestnet => Self(729797994450396300), + ChainName::Test1000 => Self(11787463284727550157), + ChainName::Test76578 => Self(781901677223027175), + ChainName::Test90000001 => Self(909606746561742123), + ChainName::Test90000002 => Self(5548718428018410741), + ChainName::Test90000003 => Self(789068866484373046), + ChainName::Test90000004 => Self(5721565186521185178), + ChainName::Test90000005 => Self(964127714438319834), + ChainName::Test90000006 => Self(8966794841936584464), + ChainName::Test90000007 => Self(8412806778050735057), + ChainName::Test90000008 => Self(4066443121807923198), + ChainName::Test90000009 => Self(6747736380229414777), + ChainName::Test90000010 => Self(8694984074292254623), + ChainName::Test90000011 => Self(328334718812072308), + ChainName::Test90000012 => Self(7715160997071429212), + ChainName::Test90000013 => Self(3574539439524578558), + ChainName::Test90000014 => Self(4543928599863227519), + ChainName::Test90000015 => Self(6443235356619661032), + ChainName::Test90000016 => Self(13087962012083037329), + ChainName::Test90000017 => Self(11985232338641871056), + ChainName::Test90000018 => Self(7777066535355430289), + ChainName::Test90000019 => Self(1273605685587320666), + ChainName::Test90000020 => Self(17810359353458878177), + ChainName::Test90000021 => Self(13648736134397881410), + ChainName::Test90000022 => Self(6742472197519042017), + ChainName::Test90000023 => Self(16702426279731183946), + ChainName::Test90000024 => Self(16449698933146693970), + ChainName::Test90000025 => Self(5614341928911841614), + ChainName::Test90000026 => Self(9932483170498916221), + ChainName::Test90000027 => Self(9248511054298050610), + ChainName::Test90000028 => Self(15733873364998401606), + ChainName::Test90000029 => Self(10199579733509604193), + ChainName::Test90000030 => Self(11754399446572002459), + ChainName::Test90000031 => Self(15804983202763665802), + ChainName::Test90000032 => Self(8794884152664322911), + ChainName::Test90000033 => Self(7005880874640146484), + ChainName::Test90000034 => Self(15998314635132476942), + ChainName::Test90000035 => Self(6676710761873615962), + ChainName::Test90000036 => Self(13973515790491921010), + ChainName::Test90000037 => Self(12226902941055802385), + ChainName::Test90000038 => Self(10547673735879567911), + ChainName::Test90000039 => Self(2953028829530698683), + ChainName::Test90000040 => Self(3740583887329090549), + ChainName::Test90000041 => Self(4716670523656754658), + ChainName::Test90000042 => Self(12965905455277595820), + ChainName::Test90000043 => Self(6448403805635971860), + ChainName::Test90000044 => Self(176199025415897437), + ChainName::Test90000045 => Self(17251043223284625647), + ChainName::Test90000046 => Self(14943531413383612703), + ChainName::Test90000047 => Self(8015762103567576333), + ChainName::Test90000048 => Self(2783890746839497525), + ChainName::Test90000049 => Self(16591966440843528322), + ChainName::Test90000050 => Self(9156614022853705708), + ChainName::Test90000051 => Self(10089241509396411113), + ChainName::Test90000052 => Self(7585715102059681757), + ChainName::Test90000053 => Self(9574369650680012313), + ChainName::Test90000054 => Self(15767478222558315144), + ChainName::Test90000055 => Self(928756709184343973), + ChainName::Test90000056 => Self(13936493323944617843), + ChainName::Test90000057 => Self(9264503539336248559), + ChainName::Test90000058 => Self(7032045258883126022), + ChainName::Test90000059 => Self(13781595843667691007), + ChainName::Test90000060 => Self(6751512843227450641), + ChainName::Test90000061 => Self(12027427861168955422), + ChainName::Test90000062 => Self(6690738652320128159), + ChainName::Test90000063 => Self(12513826466599144030), + ChainName::Test90000064 => Self(7823363553221722351), + ChainName::Test90000065 => Self(17759418850483131633), + ChainName::Test90000066 => Self(1488785539820432596), + ChainName::Test90000067 => Self(12470167056735102403), + ChainName::Test90000068 => Self(6059917085984771915), + ChainName::Test90000069 => Self(8698844633699288298), + ChainName::Test90000070 => Self(11335955773964346155), + ChainName::Test90000071 => Self(15210860601736105873), + ChainName::Test90000072 => Self(15447447865219782832), + ChainName::Test90000073 => Self(7404045285477377670), + ChainName::Test90000074 => Self(14506622911400094011), + ChainName::Test90000075 => Self(18316006852148771137), + ChainName::Test90000076 => Self(7961714422080771198), + ChainName::Test90000077 => Self(15168140751097121912), + ChainName::Test90000078 => Self(8354317460459584308), + ChainName::Test90000079 => Self(1974710175227680991), + ChainName::Test90000080 => Self(15896959195233368219), + ChainName::Test90000081 => Self(13819071330241498802), + ChainName::Test90000082 => Self(3632230855428784129), + ChainName::Test90000083 => Self(3330151784927722907), + ChainName::Test90000084 => Self(973671184102733124), + ChainName::Test90000085 => Self(7353384334508842175), + ChainName::Test90000086 => Self(4174149892778961910), + ChainName::Test90000087 => Self(10497629267361915835), + ChainName::Test90000088 => Self(10537986502862404866), + ChainName::Test90000089 => Self(10106333385848939617), + ChainName::Test90000090 => Self(2509173735760116798), + ChainName::Test90000091 => Self(12499149790922928210), + ChainName::Test90000092 => Self(665284410079532457), + ChainName::Test90000093 => Self(17514102371649734225), + ChainName::Test90000094 => Self(8211981504472319767), + ChainName::Test90000095 => Self(15945074456050759193), + ChainName::Test90000096 => Self(17580537314894454709), + ChainName::Test90000097 => Self(13443138560923813712), + ChainName::Test90000098 => Self(9675086780529785020), + ChainName::Test90000099 => Self(7431973150957944526), + ChainName::Test90000100 => Self(6875898693582952601), + ChainName::VelasMainnet => Self(374210358663784372), + ChainName::VelasTestnet => Self(572210378683744374), + ChainName::WemixMainnet => Self(5142893604156789321), + ChainName::WemixTestnet => Self(9284632837123596123), + ChainName::ZklinkNovaMainnet => Self(4350319965322101699), + ChainName::ZklinkNovaTestnet => Self(5837261596322416298), + } } } @@ -529,7 +789,7 @@ impl TryFrom for ChainName { 1112 => Ok(Self::WemixTestnet), 810180 => Ok(Self::ZklinkNovaMainnet), 810181 => Ok(Self::ZklinkNovaTestnet), - _ => Err(Error::UnknownChainId(chain_id.0)), + _ => Err(Error::UnknownChainId(chain_id)), } } } @@ -781,7 +1041,7 @@ impl TryFrom for ChainName { 9284632837123596123 => Ok(Self::WemixTestnet), 4350319965322101699 => Ok(Self::ZklinkNovaMainnet), 5837261596322416298 => Ok(Self::ZklinkNovaTestnet), - _ => Err(Error::UnknownChainSelector(chain_selector.0)), + _ => Err(Error::UnknownChainSelector(chain_selector)), } } } @@ -1308,250 +1568,3 @@ impl Display for ChainName { ) } } - -pub fn chain_selector(chain: ChainName) -> ChainSelector { - match chain { - ChainName::AreonMainnet => ChainSelector(1939936305787790600), - ChainName::AreonTestnet => ChainSelector(7317911323415911000), - ChainName::AvalancheMainnet => ChainSelector(6433500567565415381), - ChainName::AvalancheSubnetDexalotMainnet => ChainSelector(5463201557265485081), - ChainName::AvalancheSubnetDexalotTestnet => ChainSelector(1458281248224512906), - ChainName::AvalancheTestnetFuji => ChainSelector(14767482510784806043), - ChainName::AvalancheTestnetNexon => ChainSelector(7837562506228496256), - ChainName::BerachainTestnetArtio => ChainSelector(12336603543561911511), - ChainName::BerachainTestnetBartio => ChainSelector(8999465244383784164), - ChainName::BinanceSmartChainMainnet => ChainSelector(11344663589394136015), - ChainName::BinanceSmartChainMainnetOpbnb1 => ChainSelector(465944652040885897), - ChainName::BinanceSmartChainTestnet => ChainSelector(13264668187771770619), - ChainName::BinanceSmartChainTestnetOpbnb1 => ChainSelector(13274425992935471758), - ChainName::BitcichainMainnet => ChainSelector(4874388048629246000), - ChainName::BitcichainTestnet => ChainSelector(4888058894222120000), - ChainName::BitcoinMainnetBitlayer1 => ChainSelector(7937294810946806131), - ChainName::BitcoinMainnetBob1 => ChainSelector(3849287863852499584), - ChainName::BitcoinMainnetBotanix => ChainSelector(4560701533377838164), - ChainName::BitcoinMainnetBsquared1 => ChainSelector(5406759801798337480), - ChainName::BitcoinMerlinMainnet => ChainSelector(241851231317828981), - ChainName::BitcoinTestnetBitlayer1 => ChainSelector(3789623672476206327), - ChainName::BitcoinTestnetBotanix => ChainSelector(1467223411771711614), - ChainName::BitcoinTestnetBsquared1 => ChainSelector(1948510578179542068), - ChainName::BitcoinTestnetMerlin => ChainSelector(5269261765892944301), - ChainName::BitcoinTestnetRootstock => ChainSelector(8953668971247136127), - ChainName::BitcoinTestnetSepoliaBob1 => ChainSelector(5535534526963509396), - ChainName::BittorrentChainMainnet => ChainSelector(3776006016387883143), - ChainName::BittorrentChainTestnet => ChainSelector(4459371029167934217), - ChainName::CeloMainnet => ChainSelector(1346049177634351622), - ChainName::CeloTestnetAlfajores => ChainSelector(3552045678561919002), - ChainName::CoinexSmartChainMainnet => ChainSelector(1761333065194157300), - ChainName::CoinexSmartChainTestnet => ChainSelector(8955032871639343000), - ChainName::CronosMainnet => ChainSelector(1456215246176062136), - ChainName::CronosTestnet => ChainSelector(2995292832068775165), - ChainName::CronosTestnetZkevm1 => ChainSelector(3842103497652714138), - ChainName::EthereumMainnet => ChainSelector(5009297550715157269), - ChainName::EthereumMainnetArbitrum1 => ChainSelector(4949039107694359620), - ChainName::EthereumMainnetArbitrum1L3x1 => ChainSelector(3162193654116181371), - ChainName::EthereumMainnetArbitrum1Treasure1 => ChainSelector(1010349088906777999), - ChainName::EthereumMainnetAstarZkevm1 => ChainSelector(1540201334317828111), - ChainName::EthereumMainnetBase1 => ChainSelector(15971525489660198786), - ChainName::EthereumMainnetBlast1 => ChainSelector(4411394078118774322), - ChainName::EthereumMainnetImmutableZkevm1 => ChainSelector(1237925231416731909), - ChainName::EthereumMainnetKroma1 => ChainSelector(3719320017875267166), - ChainName::EthereumMainnetLinea1 => ChainSelector(4627098889531055414), - ChainName::EthereumMainnetMantle1 => ChainSelector(1556008542357238666), - ChainName::EthereumMainnetMetis1 => ChainSelector(8805746078405598895), - ChainName::EthereumMainnetMode1 => ChainSelector(7264351850409363825), - ChainName::EthereumMainnetOptimism1 => ChainSelector(3734403246176062136), - ChainName::EthereumMainnetPolygonZkevm1 => ChainSelector(4348158687435793198), - ChainName::EthereumMainnetScroll1 => ChainSelector(13204309965629103672), - ChainName::EthereumMainnetTaiko1 => ChainSelector(16468599424800719238), - ChainName::EthereumMainnetWorldchain1 => ChainSelector(2049429975587534727), - ChainName::EthereumMainnetXlayer1 => ChainSelector(3016212468291539606), - ChainName::EthereumMainnetZircuit1 => ChainSelector(17198166215261833993), - ChainName::EthereumMainnetZksync1 => ChainSelector(1562403441176082196), - ChainName::EthereumTestnetGoerliArbitrum1 => ChainSelector(6101244977088475029), - ChainName::EthereumTestnetGoerliBase1 => ChainSelector(5790810961207155433), - ChainName::EthereumTestnetGoerliLinea1 => ChainSelector(1355246678561316402), - ChainName::EthereumTestnetGoerliMantle1 => ChainSelector(4168263376276232250), - ChainName::EthereumTestnetGoerliOptimism1 => ChainSelector(2664363617261496610), - ChainName::EthereumTestnetGoerliPolygonZkevm1 => ChainSelector(11059667695644972511), - ChainName::EthereumTestnetGoerliZksync1 => ChainSelector(6802309497652714138), - ChainName::EthereumTestnetHolesky => ChainSelector(7717148896336251131), - ChainName::EthereumTestnetHoleskyFraxtal1 => ChainSelector(8901520481741771655), - ChainName::EthereumTestnetHoleskyMorph1 => ChainSelector(8304510386741731151), - ChainName::EthereumTestnetHoleskyTaiko1 => ChainSelector(7248756420937879088), - ChainName::EthereumTestnetSepolia => ChainSelector(16015286601757825753), - ChainName::EthereumTestnetSepoliaArbitrum1 => ChainSelector(3478487238524512106), - ChainName::EthereumTestnetSepoliaArbitrum1L3x1 => ChainSelector(3486622437121596122), - ChainName::EthereumTestnetSepoliaArbitrum1Treasure1 => ChainSelector(10443705513486043421), - ChainName::EthereumTestnetSepoliaBase1 => ChainSelector(10344971235874465080), - ChainName::EthereumTestnetSepoliaBlast1 => ChainSelector(2027362563942762617), - ChainName::EthereumTestnetSepoliaCorn1 => ChainSelector(1467427327723633929), - ChainName::EthereumTestnetSepoliaImmutableZkevm1 => ChainSelector(4526165231216331901), - ChainName::EthereumTestnetSepoliaKroma1 => ChainSelector(5990477251245693094), - ChainName::EthereumTestnetSepoliaLens1 => ChainSelector(6827576821754315911), - ChainName::EthereumTestnetSepoliaLinea1 => ChainSelector(5719461335882077547), - ChainName::EthereumTestnetSepoliaLisk1 => ChainSelector(5298399861320400553), - ChainName::EthereumTestnetSepoliaMantle1 => ChainSelector(8236463271206331221), - ChainName::EthereumTestnetSepoliaMetis1 => ChainSelector(3777822886988675105), - ChainName::EthereumTestnetSepoliaMode1 => ChainSelector(829525985033418733), - ChainName::EthereumTestnetSepoliaOptimism1 => ChainSelector(5224473277236331295), - ChainName::EthereumTestnetSepoliaPolygonValidium1 => ChainSelector(4418231248214522936), - ChainName::EthereumTestnetSepoliaPolygonZkevm1 => ChainSelector(1654667687261492630), - ChainName::EthereumTestnetSepoliaScroll1 => ChainSelector(2279865765895943307), - ChainName::EthereumTestnetSepoliaSoneium1 => ChainSelector(686603546605904534), - ChainName::EthereumTestnetSepoliaUnichain1 => ChainSelector(14135854469784514356), - ChainName::EthereumTestnetSepoliaWorldchain1 => ChainSelector(5299555114858065850), - ChainName::EthereumTestnetSepoliaXlayer1 => ChainSelector(2066098519157881736), - ChainName::EthereumTestnetSepoliaZircuit1 => ChainSelector(4562743618362911021), - ChainName::EthereumTestnetSepoliaZksync1 => ChainSelector(6898391096552792247), - ChainName::FantomMainnet => ChainSelector(3768048213127883732), - ChainName::FantomTestnet => ChainSelector(4905564228793744293), - ChainName::FilecoinMainnet => ChainSelector(4561443241176882990), - ChainName::FilecoinTestnet => ChainSelector(7060342227814389000), - ChainName::FraxtalMainnet => ChainSelector(1462016016387883143), - ChainName::GethDevnet2 => ChainSelector(12922642891491394802), - ChainName::GethDevnet3 => ChainSelector(4793464827907405086), - ChainName::GethTestnet => ChainSelector(3379446385462418246), - ChainName::GnosisChainMainnet => ChainSelector(465200170687744372), - ChainName::GnosisChainTestnetChiado => ChainSelector(8871595565390010547), - ChainName::HederaMainnet => ChainSelector(3229138320728879060), - ChainName::HederaTestnet => ChainSelector(222782988166878823), - ChainName::HyperliquidTestnet => ChainSelector(4286062357653186312), - ChainName::KavaMainnet => ChainSelector(7550000543357438061), - ChainName::KavaTestnet => ChainSelector(2110537777356199208), - ChainName::KusamaMainnetMoonriver => ChainSelector(1355020143337428062), - ChainName::NearMainnet => ChainSelector(2039744413822257700), - ChainName::NearTestnet => ChainSelector(5061593697262339000), - ChainName::NeonlinkMainnet => ChainSelector(8239338020728974000), - ChainName::NeonlinkTestnet => ChainSelector(1113014352258747600), - ChainName::PlumeTestnet => ChainSelector(14684575664602284776), - ChainName::PolkadotMainnetAstar => ChainSelector(6422105447186081193), - ChainName::PolkadotMainnetCentrifuge => ChainSelector(8175830712062617656), - ChainName::PolkadotMainnetDarwinia => ChainSelector(8866418665544333000), - ChainName::PolkadotMainnetMoonbeam => ChainSelector(1252863800116739621), - ChainName::PolkadotTestnetAstarShibuya => ChainSelector(6955638871347136141), - ChainName::PolkadotTestnetCentrifugeAltair => ChainSelector(2333097300889804761), - ChainName::PolkadotTestnetDarwiniaPangoro => ChainSelector(4340886533089894000), - ChainName::PolkadotTestnetMoonbeamMoonbase => ChainSelector(5361632739113536121), - ChainName::PolygonMainnet => ChainSelector(4051577828743386545), - ChainName::PolygonTestnetAmoy => ChainSelector(16281711391670634445), - ChainName::PolygonTestnetMumbai => ChainSelector(12532609583862916517), - ChainName::PrivateTestnetMica => ChainSelector(4489326297382772450), - ChainName::PrivateTestnetOpala => ChainSelector(8446413392851542429), - ChainName::RoninMainnet => ChainSelector(6916147374840168594), - ChainName::RoninTestnetSaigon => ChainSelector(13116810400804392105), - ChainName::SeiMainnet => ChainSelector(9027416829622342829), - ChainName::SeiTestnetAtlantic => ChainSelector(1216300075444106652), - ChainName::SonicTestnet => ChainSelector(3676871237479449268), - ChainName::StoryTestnet => ChainSelector(4237030917318060427), - ChainName::TelosEvmMainnet => ChainSelector(1477345371608778000), - ChainName::TelosEvmTestnet => ChainSelector(729797994450396300), - ChainName::Test1000 => ChainSelector(11787463284727550157), - ChainName::Test76578 => ChainSelector(781901677223027175), - ChainName::Test90000001 => ChainSelector(909606746561742123), - ChainName::Test90000002 => ChainSelector(5548718428018410741), - ChainName::Test90000003 => ChainSelector(789068866484373046), - ChainName::Test90000004 => ChainSelector(5721565186521185178), - ChainName::Test90000005 => ChainSelector(964127714438319834), - ChainName::Test90000006 => ChainSelector(8966794841936584464), - ChainName::Test90000007 => ChainSelector(8412806778050735057), - ChainName::Test90000008 => ChainSelector(4066443121807923198), - ChainName::Test90000009 => ChainSelector(6747736380229414777), - ChainName::Test90000010 => ChainSelector(8694984074292254623), - ChainName::Test90000011 => ChainSelector(328334718812072308), - ChainName::Test90000012 => ChainSelector(7715160997071429212), - ChainName::Test90000013 => ChainSelector(3574539439524578558), - ChainName::Test90000014 => ChainSelector(4543928599863227519), - ChainName::Test90000015 => ChainSelector(6443235356619661032), - ChainName::Test90000016 => ChainSelector(13087962012083037329), - ChainName::Test90000017 => ChainSelector(11985232338641871056), - ChainName::Test90000018 => ChainSelector(7777066535355430289), - ChainName::Test90000019 => ChainSelector(1273605685587320666), - ChainName::Test90000020 => ChainSelector(17810359353458878177), - ChainName::Test90000021 => ChainSelector(13648736134397881410), - ChainName::Test90000022 => ChainSelector(6742472197519042017), - ChainName::Test90000023 => ChainSelector(16702426279731183946), - ChainName::Test90000024 => ChainSelector(16449698933146693970), - ChainName::Test90000025 => ChainSelector(5614341928911841614), - ChainName::Test90000026 => ChainSelector(9932483170498916221), - ChainName::Test90000027 => ChainSelector(9248511054298050610), - ChainName::Test90000028 => ChainSelector(15733873364998401606), - ChainName::Test90000029 => ChainSelector(10199579733509604193), - ChainName::Test90000030 => ChainSelector(11754399446572002459), - ChainName::Test90000031 => ChainSelector(15804983202763665802), - ChainName::Test90000032 => ChainSelector(8794884152664322911), - ChainName::Test90000033 => ChainSelector(7005880874640146484), - ChainName::Test90000034 => ChainSelector(15998314635132476942), - ChainName::Test90000035 => ChainSelector(6676710761873615962), - ChainName::Test90000036 => ChainSelector(13973515790491921010), - ChainName::Test90000037 => ChainSelector(12226902941055802385), - ChainName::Test90000038 => ChainSelector(10547673735879567911), - ChainName::Test90000039 => ChainSelector(2953028829530698683), - ChainName::Test90000040 => ChainSelector(3740583887329090549), - ChainName::Test90000041 => ChainSelector(4716670523656754658), - ChainName::Test90000042 => ChainSelector(12965905455277595820), - ChainName::Test90000043 => ChainSelector(6448403805635971860), - ChainName::Test90000044 => ChainSelector(176199025415897437), - ChainName::Test90000045 => ChainSelector(17251043223284625647), - ChainName::Test90000046 => ChainSelector(14943531413383612703), - ChainName::Test90000047 => ChainSelector(8015762103567576333), - ChainName::Test90000048 => ChainSelector(2783890746839497525), - ChainName::Test90000049 => ChainSelector(16591966440843528322), - ChainName::Test90000050 => ChainSelector(9156614022853705708), - ChainName::Test90000051 => ChainSelector(10089241509396411113), - ChainName::Test90000052 => ChainSelector(7585715102059681757), - ChainName::Test90000053 => ChainSelector(9574369650680012313), - ChainName::Test90000054 => ChainSelector(15767478222558315144), - ChainName::Test90000055 => ChainSelector(928756709184343973), - ChainName::Test90000056 => ChainSelector(13936493323944617843), - ChainName::Test90000057 => ChainSelector(9264503539336248559), - ChainName::Test90000058 => ChainSelector(7032045258883126022), - ChainName::Test90000059 => ChainSelector(13781595843667691007), - ChainName::Test90000060 => ChainSelector(6751512843227450641), - ChainName::Test90000061 => ChainSelector(12027427861168955422), - ChainName::Test90000062 => ChainSelector(6690738652320128159), - ChainName::Test90000063 => ChainSelector(12513826466599144030), - ChainName::Test90000064 => ChainSelector(7823363553221722351), - ChainName::Test90000065 => ChainSelector(17759418850483131633), - ChainName::Test90000066 => ChainSelector(1488785539820432596), - ChainName::Test90000067 => ChainSelector(12470167056735102403), - ChainName::Test90000068 => ChainSelector(6059917085984771915), - ChainName::Test90000069 => ChainSelector(8698844633699288298), - ChainName::Test90000070 => ChainSelector(11335955773964346155), - ChainName::Test90000071 => ChainSelector(15210860601736105873), - ChainName::Test90000072 => ChainSelector(15447447865219782832), - ChainName::Test90000073 => ChainSelector(7404045285477377670), - ChainName::Test90000074 => ChainSelector(14506622911400094011), - ChainName::Test90000075 => ChainSelector(18316006852148771137), - ChainName::Test90000076 => ChainSelector(7961714422080771198), - ChainName::Test90000077 => ChainSelector(15168140751097121912), - ChainName::Test90000078 => ChainSelector(8354317460459584308), - ChainName::Test90000079 => ChainSelector(1974710175227680991), - ChainName::Test90000080 => ChainSelector(15896959195233368219), - ChainName::Test90000081 => ChainSelector(13819071330241498802), - ChainName::Test90000082 => ChainSelector(3632230855428784129), - ChainName::Test90000083 => ChainSelector(3330151784927722907), - ChainName::Test90000084 => ChainSelector(973671184102733124), - ChainName::Test90000085 => ChainSelector(7353384334508842175), - ChainName::Test90000086 => ChainSelector(4174149892778961910), - ChainName::Test90000087 => ChainSelector(10497629267361915835), - ChainName::Test90000088 => ChainSelector(10537986502862404866), - ChainName::Test90000089 => ChainSelector(10106333385848939617), - ChainName::Test90000090 => ChainSelector(2509173735760116798), - ChainName::Test90000091 => ChainSelector(12499149790922928210), - ChainName::Test90000092 => ChainSelector(665284410079532457), - ChainName::Test90000093 => ChainSelector(17514102371649734225), - ChainName::Test90000094 => ChainSelector(8211981504472319767), - ChainName::Test90000095 => ChainSelector(15945074456050759193), - ChainName::Test90000096 => ChainSelector(17580537314894454709), - ChainName::Test90000097 => ChainSelector(13443138560923813712), - ChainName::Test90000098 => ChainSelector(9675086780529785020), - ChainName::Test90000099 => ChainSelector(7431973150957944526), - ChainName::Test90000100 => ChainSelector(6875898693582952601), - ChainName::VelasMainnet => ChainSelector(374210358663784372), - ChainName::VelasTestnet => ChainSelector(572210378683744374), - ChainName::WemixMainnet => ChainSelector(5142893604156789321), - ChainName::WemixTestnet => ChainSelector(9284632837123596123), - ChainName::ZklinkNovaMainnet => ChainSelector(4350319965322101699), - ChainName::ZklinkNovaTestnet => ChainSelector(5837261596322416298), - } -} diff --git a/rs/chainselectors/src/lib.rs b/rs/chainselectors/src/lib.rs index dba334d..d2c9dfd 100644 --- a/rs/chainselectors/src/lib.rs +++ b/rs/chainselectors/src/lib.rs @@ -38,9 +38,9 @@ mod tests { } #[test] - fn to_chain_selector() { + fn chain_selector_from_chain() { assert_eq!( - generated_chains::chain_selector(ChainName::EthereumMainnet), + ChainSelector::from(ChainName::EthereumMainnet), ChainSelector(5009297550715157269), ); } diff --git a/rs/generated_chains.rs.tmpl b/rs/generated_chains.rs.tmpl index cfc306b..4262408 100644 --- a/rs/generated_chains.rs.tmpl +++ b/rs/generated_chains.rs.tmpl @@ -11,16 +11,33 @@ pub enum Error { #[error("unknown chain name: {0}")] UnknownChainName(String), #[error("unknown chain id: {0}")] - UnknownChainId(u64), + UnknownChainId(ChainId), #[error("unknown chain selector: {0}")] - UnknownChainSelector(u64), + UnknownChainSelector(ChainSelector), } -#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] +#[derive( + Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, +)] pub struct ChainId(pub u64); -#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] + +impl Display for ChainId { + fn fmt(&self, f: &mut Formatter) -> FmtResult { + write!(f, "{}", self.0) + } +} + +#[derive( + Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, +)] pub struct ChainSelector(pub u64); +impl Display for ChainSelector { + fn fmt(&self, f: &mut Formatter) -> FmtResult { + write!(f, "{}", self.0) + } +} + #[derive( Debug, Hash, PartialEq, Eq, Clone, Copy, serde::Serialize, serde::Deserialize, PartialOrd, Ord, )] @@ -38,8 +55,12 @@ impl From for ChainId { } impl From for ChainSelector { - fn from(chain_name: ChainName) -> ChainSelector { - chain_selector(chain_name) + fn from(chain: ChainName) -> Self { + match chain { + {{- range .}} + ChainName::{{ .VarName }} => Self({{ .Selector }}), + {{- end}} + } } } @@ -51,7 +72,7 @@ impl TryFrom for ChainName { {{- range .}} {{ .EvmChainID }} => Ok(Self::{{ .VarName }}), {{- end}} - _ => Err(Error::UnknownChainId(chain_id.0)), + _ => Err(Error::UnknownChainId(chain_id)), } } } @@ -64,7 +85,7 @@ impl TryFrom for ChainName { {{- range .}} {{ .Selector }} => Ok(Self::{{ .VarName }}), {{- end}} - _ => Err(Error::UnknownChainSelector(chain_selector.0)), + _ => Err(Error::UnknownChainSelector(chain_selector)), } } } @@ -95,11 +116,3 @@ impl Display for ChainName { ) } } - -pub fn chain_selector(chain: ChainName) -> ChainSelector { - match chain { - {{- range .}} - ChainName::{{ .VarName }} => ChainSelector({{ .Selector }}), - {{- end}} - } -} \ No newline at end of file