Merge pull request #17 from TheBlueMatt/2021-04-upstream-confirm
[ldk-c-bindings] / lightning-c-bindings / src / bitcoin / network.rs
1 //! A C-mapped version fo bitcoin::network::constants::Network
2
3 use bitcoin::network::constants::Network as BitcoinNetwork;
4
5 #[repr(C)]
6 /// An enum representing the possible Bitcoin or test networks which we can run on
7 pub enum Network {
8         /// The main Bitcoin blockchain.
9         Bitcoin,
10         /// The testnet3 blockchain.
11         Testnet,
12         /// A local test blockchain.
13         Regtest,
14         /// A blockchain on which blocks are signed instead of mined.
15         Signet,
16 }
17
18 impl Network {
19         pub(crate) fn into_bitcoin(&self) -> BitcoinNetwork {
20                 match self {
21                         Network::Bitcoin => BitcoinNetwork::Bitcoin,
22                         Network::Testnet => BitcoinNetwork::Testnet,
23                         Network::Regtest => BitcoinNetwork::Regtest,
24                         Network::Signet => BitcoinNetwork::Signet,
25                 }
26         }
27         pub(crate) fn from_bitcoin(net: &BitcoinNetwork) -> Self {
28                 match net {
29                         BitcoinNetwork::Bitcoin => Network::Bitcoin,
30                         BitcoinNetwork::Testnet => Network::Testnet,
31                         BitcoinNetwork::Regtest => Network::Regtest,
32                         BitcoinNetwork::Signet => Network::Signet,
33                 }
34         }
35 }