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 From<String> for Address {
77    fn from(value: String) -> Self {
78        Self(value)
79    }
80}
81
82/// Macro for creating Address instances from string literals.
83///
84/// # Example
85///
86/// ```
87/// use aleph_types::address;
88/// let address = address!("0x238224C744F4b90b4494516e074D2676ECfC6803");
89/// ```
90#[macro_export]
91macro_rules! address {
92    ($address:expr) => {{ $crate::chain::Address::from($address.to_string()) }};
93}
94
95#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
96pub struct Signature(String);
97
98impl From<String> for Signature {
99    fn from(value: String) -> Self {
100        Self(value)
101    }
102}
103
104/// Macro for creating Signature instances from string literals.
105///
106/// # Example
107///
108/// ```
109/// use aleph_types::signature;
110/// let signature = signature!("0x123456789");
111/// ```
112#[macro_export]
113macro_rules! signature {
114    ($signature:expr) => {{ $crate::chain::Signature::from($signature.to_string()) }};
115}