cml_chain_wasm/builders/
mint_builder.rs

1use crate::builders::witness_builder::{NativeScriptWitnessInfo, PartialPlutusWitness};
2
3use cml_core_wasm::impl_wasm_conversions;
4use wasm_bindgen::prelude::wasm_bindgen;
5
6use crate::{AssetName, MapAssetNameToNonZeroInt64, NativeScript, RequiredSigners};
7
8#[wasm_bindgen]
9#[derive(Clone)]
10pub struct MintBuilderResult(cml_chain::builders::mint_builder::MintBuilderResult);
11
12impl_wasm_conversions!(
13    cml_chain::builders::mint_builder::MintBuilderResult,
14    MintBuilderResult
15);
16
17#[wasm_bindgen]
18#[derive(Clone)]
19pub struct SingleMintBuilder(cml_chain::builders::mint_builder::SingleMintBuilder);
20
21impl_wasm_conversions!(
22    cml_chain::builders::mint_builder::SingleMintBuilder,
23    SingleMintBuilder
24);
25
26#[wasm_bindgen]
27impl SingleMintBuilder {
28    pub fn new(assets: &MapAssetNameToNonZeroInt64) -> Self {
29        cml_chain::builders::mint_builder::SingleMintBuilder::new(assets.clone().into()).into()
30    }
31
32    pub fn new_single_asset(asset: &AssetName, amount: i64) -> Self {
33        cml_chain::builders::mint_builder::SingleMintBuilder::new_single_asset(
34            asset.clone().into(),
35            amount,
36        )
37        .into()
38    }
39
40    pub fn native_script(
41        self,
42        native_script: &NativeScript,
43        witness_info: &NativeScriptWitnessInfo,
44    ) -> MintBuilderResult {
45        self.0
46            .native_script(native_script.clone().into(), witness_info.clone().into())
47            .into()
48    }
49
50    pub fn plutus_script(
51        self,
52        partial_witness: &PartialPlutusWitness,
53        required_signers: &RequiredSigners,
54    ) -> MintBuilderResult {
55        self.0
56            .plutus_script(
57                partial_witness.clone().into(),
58                required_signers.clone().into(),
59            )
60            .into()
61    }
62}