1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
4pub enum Chain {
5 #[serde(rename = "ARB")]
6 Arbitrum,
7 #[serde(rename = "AURORA")]
8 Aurora,
9 #[serde(rename = "AVAX")]
10 Avax,
11 #[serde(rename = "BASE")]
12 Base,
13 #[serde(rename = "BLAST")]
14 Blast,
15 #[serde(rename = "BOB")]
16 Bob,
17 #[serde(rename = "BSC")]
18 Bsc,
19 #[serde(rename = "CSDK")]
20 Csdk,
21 #[serde(rename = "CYBER")]
22 Cyber,
23 #[serde(rename = "DOT")]
24 Polkadot,
25 #[serde(rename = "ES")]
26 Eclipse,
27 #[serde(rename = "ETH")]
28 Ethereum,
29 #[serde(rename = "ETHERLINK")]
30 Etherlink,
31 #[serde(rename = "FRAX")]
32 Fraxtal,
33 #[serde(rename = "HYPE")]
34 Hype,
35 #[serde(rename = "INK")]
36 Ink,
37 #[serde(rename = "LENS")]
38 Lens,
39 #[serde(rename = "LINEA")]
40 Linea,
41 #[serde(rename = "LISK")]
42 Lisk,
43 #[serde(rename = "METIS")]
44 Metis,
45 #[serde(rename = "MODE")]
46 Mode,
47 #[serde(rename = "NEO")]
48 Neo,
49 #[serde(rename = "NULS")]
50 Nuls,
51 #[serde(rename = "NULS2")]
52 Nuls2,
53 #[serde(rename = "OP")]
54 Optimism,
55 #[serde(rename = "POL")]
56 Pol,
57 #[serde(rename = "SOL")]
58 Sol,
59 #[serde(rename = "STT")]
60 Somnia,
61 #[serde(rename = "SONIC")]
62 Sonic,
63 #[serde(rename = "TEZOS")]
64 Tezos,
65 #[serde(rename = "UNICHAIN")]
66 Unichain,
67 #[serde(rename = "WLD")]
68 Worldchain,
69 #[serde(rename = "ZORA")]
70 Zora,
71}
72
73#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
74pub struct Address(String);
75
76impl std::fmt::Display for Address {
77 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
78 write!(f, "{}", self.0)
79 }
80}
81
82impl From<String> for Address {
83 fn from(value: String) -> Self {
84 Self(value)
85 }
86}
87
88#[macro_export]
97macro_rules! address {
98 ($address:expr) => {{ $crate::chain::Address::from($address.to_string()) }};
99}
100
101#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
102pub struct Signature(String);
103
104impl From<String> for Signature {
105 fn from(value: String) -> Self {
106 Self(value)
107 }
108}
109
110#[macro_export]
119macro_rules! signature {
120 ($signature:expr) => {{ $crate::chain::Signature::from($signature.to_string()) }};
121}