1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Deserialize, Eq, PartialEq)]
47pub enum Blockchain {
48 #[serde(rename = "ETH")]
49 Eth,
50 #[serde(rename = "ETH-SEPOLIA")]
51 EthSepolia,
52 #[serde(rename = "AVAX")]
53 Avax,
54 #[serde(rename = "AVAX-FUJI")]
55 AvaxFuji,
56 #[serde(rename = "MATIC")]
57 Matic,
58 #[serde(rename = "MATIC-AMOY")]
59 MaticAmoy,
60 #[serde(rename = "SOL")]
61 Sol,
62 #[serde(rename = "SOL-DEVNET")]
63 SolDevnet,
64 #[serde(rename = "ARB")]
65 Arb,
66 #[serde(rename = "ARB-SEPOLIA")]
67 ArbSepolia,
68 #[serde(rename = "NEAR")]
69 Near,
70 #[serde(rename = "NEAR-TESTNET")]
71 NearTestnet,
72 #[serde(rename = "EVM")]
73 Evm,
74 #[serde(rename = "EVM-TESTNET")]
75 EvmTestnet,
76 #[serde(rename = "UNI")]
77 Uni,
78 #[serde(rename = "UNI-SEPOLIA")]
79 UniSepolia,
80 #[serde(rename = "BASE")]
81 Base,
82 #[serde(rename = "BASE-SEPOLIA")]
83 BaseSepolia,
84 #[serde(rename = "OP")]
85 Op,
86 #[serde(rename = "OP-SEPOLIA")]
87 OpSepolia,
88 #[serde(rename = "APTOS")]
89 Aptos,
90 #[serde(rename = "APTOS-TESTNET")]
91 AptosTestnet,
92 #[serde(rename = "ARC-TESTNET")]
93 ArcTestnet,
94}
95
96impl Blockchain {
97 pub fn as_str(&self) -> &'static str {
98 match self {
99 Blockchain::Eth => "ETH",
100 Blockchain::EthSepolia => "ETH-SEPOLIA",
101 Blockchain::Avax => "AVAX",
102 Blockchain::AvaxFuji => "AVAX-FUJI",
103 Blockchain::Matic => "MATIC",
104 Blockchain::MaticAmoy => "MATIC-AMOY",
105 Blockchain::Sol => "SOL",
106 Blockchain::SolDevnet => "SOL-DEVNET",
107 Blockchain::Arb => "ARB",
108 Blockchain::ArbSepolia => "ARB-SEPOLIA",
109 Blockchain::Near => "NEAR",
110 Blockchain::NearTestnet => "NEAR-TESTNET",
111 Blockchain::Evm => "EVM",
112 Blockchain::EvmTestnet => "EVM-TESTNET",
113 Blockchain::Uni => "UNI",
114 Blockchain::UniSepolia => "UNI-SEPOLIA",
115 Blockchain::Base => "BASE",
116 Blockchain::BaseSepolia => "BASE-SEPOLIA",
117 Blockchain::Op => "OP",
118 Blockchain::OpSepolia => "OP-SEPOLIA",
119 Blockchain::Aptos => "APTOS",
120 Blockchain::AptosTestnet => "APTOS-TESTNET",
121 Blockchain::ArcTestnet => "ARC-TESTNET",
122 }
123 }
124}
125
126impl Serialize for Blockchain {
127 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
128 where
129 S: serde::Serializer,
130 {
131 serializer.serialize_str(self.as_str())
132 }
133}