1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use borsh::{BorshDeserialize, BorshSerialize};

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, BorshSerialize, BorshDeserialize)]
pub enum Cluster {
    LocalNet,
    DevNet,
    TestNet,
    MainNetBeta,
}

impl Cluster {
    pub fn url(&self) -> &'static str {
        match self {
            Cluster::LocalNet => "https://127.0.0.1:8899",
            Cluster::DevNet => "https://api.devnet.solana.com",
            Cluster::TestNet => "https://api.testnet.solana.com",
            Cluster::MainNetBeta => "https://api.mainnet-beta.solana.com",
        }
    }
}

impl Default for Cluster {
    fn default() -> Self {
        Cluster::DevNet
    }
}