wallet_adapter_common/
clusters.rs1pub const MAINNET_ENDPOINT: &str = "https://api.mainnet-beta.solana.com";
3pub const DEVNET_ENDPOINT: &str = "https://api.devnet.solana.com";
5pub const TESTNET_ENDPOINT: &str = "https://api.testnet.solana.com";
7pub const LOCALNET_ENDPOINT: &str = "http://localhost:8899";
9
10pub const MAINNET_IDENTIFIER: &str = "solana:mainnet";
12pub const DEVNET_IDENTIFIER: &str = "solana:devnet";
14pub const TESTNET_IDENTIFIER: &str = "solana:testnet";
16pub const LOCALNET_IDENTIFIER: &str = "solana:localnet";
18
19pub const MAINNET: &str = "mainnet";
21pub const DEVNET: &str = "devnet";
23pub const TESTNET: &str = "testnet";
25pub const LOCALNET: &str = "localnet";
27
28#[derive(Debug, PartialEq, Eq, Default, PartialOrd, Ord, Clone, Copy, Hash)]
30pub enum Cluster {
31 MainNet,
33 #[default]
35 DevNet,
36 TestNet,
38 LocalNet,
40}
41
42impl Cluster {
43 pub fn endpoint(&self) -> &str {
45 match self {
46 Cluster::MainNet => MAINNET_ENDPOINT,
47 Cluster::DevNet => DEVNET_ENDPOINT,
48 Cluster::TestNet => TESTNET_ENDPOINT,
49 Cluster::LocalNet => LOCALNET_ENDPOINT,
50 }
51 }
52
53 pub fn chain(&self) -> &str {
55 match self {
56 Cluster::MainNet => MAINNET_IDENTIFIER,
57 Cluster::DevNet => DEVNET_IDENTIFIER,
58 Cluster::TestNet => TESTNET_IDENTIFIER,
59 Cluster::LocalNet => LOCALNET_IDENTIFIER,
60 }
61 }
62
63 pub fn display(&self) -> &str {
65 match self {
66 Cluster::MainNet => MAINNET,
67 Cluster::DevNet => DEVNET,
68 Cluster::TestNet => TESTNET,
69 Cluster::LocalNet => LOCALNET,
70 }
71 }
72}
73
74impl core::fmt::Display for Cluster {
75 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
76 write!(f, "{}", self.display())
77 }
78}
79
80impl From<&str> for Cluster {
81 fn from(value: &str) -> Self {
82 match value {
83 MAINNET_IDENTIFIER => Self::MainNet,
84 DEVNET_IDENTIFIER => Self::DevNet,
85 TESTNET_IDENTIFIER => Self::TestNet,
86 LOCALNET_IDENTIFIER => Self::LocalNet,
87 MAINNET_ENDPOINT => Self::MainNet,
88 DEVNET_ENDPOINT => Self::DevNet,
89 TESTNET_ENDPOINT => Self::TestNet,
90 LOCALNET_ENDPOINT => Self::LocalNet,
91 MAINNET => Self::MainNet,
92 DEVNET => Self::DevNet,
93 TESTNET => Self::TestNet,
94 LOCALNET => Self::LocalNet,
95 _ => Self::DevNet,
96 }
97 }
98}