cml_chain_wasm/genesis/
network_info.rs1use 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 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}