templar_common/
utils.rs

1use near_sdk::near;
2
3/// Network configuration for NEAR
4#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, clap::ValueEnum)]
5#[near(serializers = [json])]
6pub enum Network {
7    /// NEAR mainnet
8    Mainnet,
9    /// NEAR testnet (default)
10    #[default]
11    Testnet,
12}
13
14impl std::fmt::Display for Network {
15    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
16        write!(
17            f,
18            "{}",
19            match self {
20                Network::Mainnet => "mainnet",
21                Network::Testnet => "testnet",
22            }
23        )
24    }
25}
26
27impl Network {
28    /// Get the RPC URL for this network
29    #[must_use]
30    pub fn rpc_url(&self) -> &str {
31        use near_jsonrpc_client::{NEAR_MAINNET_RPC_URL, NEAR_TESTNET_RPC_URL};
32
33        match self {
34            Network::Mainnet => NEAR_MAINNET_RPC_URL,
35            Network::Testnet => NEAR_TESTNET_RPC_URL,
36        }
37    }
38}