cml_chain_wasm/genesis/
network_info.rs

1use crate::byron::utils::ProtocolMagic;
2use cml_core_wasm::impl_wasm_conversions;
3use wasm_bindgen::prelude::wasm_bindgen;
4use cml_crypto_wasm::TransactionHash;
5
6#[wasm_bindgen]
7pub struct NetworkInfo(cml_chain::genesis::network_info::NetworkInfo);
8
9impl_wasm_conversions!(cml_chain::genesis::network_info::NetworkInfo, NetworkInfo);
10
11#[wasm_bindgen]
12impl NetworkInfo {
13    pub fn new(network_id: u8, protocol_magic: &ProtocolMagic) -> Self {
14        cml_chain::genesis::network_info::NetworkInfo::new(network_id, *protocol_magic.as_ref())
15            .into()
16    }
17
18    pub fn network_id(&self) -> u8 {
19        self.0.network_id()
20    }
21
22    pub fn protocol_magic(&self) -> ProtocolMagic {
23        self.0.protocol_magic().into()
24    }
25
26    /// This is the old testnet - most likely you want to use preview()/preprod()
27    pub fn testnet() -> Self {
28        cml_chain::genesis::network_info::NetworkInfo::testnet().into()
29    }
30
31    pub fn mainnet() -> Self {
32        cml_chain::genesis::network_info::NetworkInfo::mainnet().into()
33    }
34
35    pub fn preview() -> Self {
36        cml_chain::genesis::network_info::NetworkInfo::preview().into()
37    }
38
39    pub fn preprod() -> Self {
40        cml_chain::genesis::network_info::NetworkInfo::preprod().into()
41    }
42
43    pub fn sancho_testnet() -> Self {
44        cml_chain::genesis::network_info::NetworkInfo::sancho_testnet().into()
45    }
46}
47
48#[wasm_bindgen]
49pub struct ByronGenesisRedeem(pub (crate) (cml_crypto::TransactionHash, cml_chain::byron::ByronAddress));
50
51#[wasm_bindgen]
52impl ByronGenesisRedeem {
53    pub fn new(txid: &TransactionHash, address: &crate::byron::ByronAddress) -> Self {
54        ByronGenesisRedeem((txid.clone().into(), address.clone().into()))
55    }
56
57    pub fn txid(&self) -> TransactionHash {
58        self.0.0.into()
59    }
60
61    pub fn address(&self) -> crate::byron::ByronAddress {
62        self.0.1.clone().into()
63    }
64}
65
66
67#[wasm_bindgen]
68pub fn genesis_txid_byron(pubkey: &cml_crypto_wasm::PublicKey, protocol_magic: Option<u32>) -> ByronGenesisRedeem {
69    let redeem = cml_chain::genesis::byron::parse::redeem_pubkey_to_txid(
70        &pubkey.clone().as_ref().0, 
71        protocol_magic.map(|pm| ProtocolMagic::new(pm).into())
72    );
73    ByronGenesisRedeem(redeem)
74}
75
76#[wasm_bindgen]
77pub fn genesis_txid_shelley(address: &crate::address::Address) -> TransactionHash {
78    TransactionHash::from(cml_chain::genesis::shelley::parse::redeem_address_to_txid(&address.clone().into()))
79}