aleph_types/
chain.rs

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 for creating Address instances from string literals.
89///
90/// # Example
91///
92/// ```
93/// use aleph_types::address;
94/// let address = address!("0x238224C744F4b90b4494516e074D2676ECfC6803");
95/// ```
96#[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 for creating Signature instances from string literals.
111///
112/// # Example
113///
114/// ```
115/// use aleph_types::signature;
116/// let signature = signature!("0x123456789");
117/// ```
118#[macro_export]
119macro_rules! signature {
120    ($signature:expr) => {{ $crate::chain::Signature::from($signature.to_string()) }};
121}