cml_chain_wasm/builders/
withdrawal_builder.rs

1use crate::builders::witness_builder::PartialPlutusWitness;
2use crate::*;
3use cml_core_wasm::impl_wasm_conversions;
4use wasm_bindgen::prelude::{wasm_bindgen, JsError};
5
6use super::witness_builder::NativeScriptWitnessInfo;
7
8use crate::{address::RewardAddress, RequiredSigners};
9
10#[wasm_bindgen]
11#[derive(Clone)]
12pub struct WithdrawalBuilderResult(
13    cml_chain::builders::withdrawal_builder::WithdrawalBuilderResult,
14);
15
16impl_wasm_conversions!(
17    cml_chain::builders::withdrawal_builder::WithdrawalBuilderResult,
18    WithdrawalBuilderResult
19);
20
21#[wasm_bindgen]
22#[derive(Clone)]
23pub struct SingleWithdrawalBuilder(
24    cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder,
25);
26
27impl_wasm_conversions!(
28    cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder,
29    SingleWithdrawalBuilder
30);
31
32#[wasm_bindgen]
33impl SingleWithdrawalBuilder {
34    pub fn new(address: &RewardAddress, amount: Coin) -> Self {
35        cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder::new(
36            address.clone().into(),
37            amount,
38        )
39        .into()
40    }
41
42    pub fn payment_key(&self) -> Result<WithdrawalBuilderResult, JsError> {
43        self.0
44            .clone()
45            .payment_key()
46            .map(Into::into)
47            .map_err(Into::into)
48    }
49
50    pub fn native_script(
51        self,
52        native_script: &NativeScript,
53        witness_info: &NativeScriptWitnessInfo,
54    ) -> Result<WithdrawalBuilderResult, JsError> {
55        self.0
56            .native_script(native_script.as_ref(), witness_info.as_ref())
57            .map(Into::into)
58            .map_err(Into::into)
59    }
60
61    pub fn plutus_script(
62        self,
63        partial_witness: PartialPlutusWitness,
64        required_signers: RequiredSigners,
65    ) -> Result<WithdrawalBuilderResult, JsError> {
66        self.0
67            .plutus_script(partial_witness.into(), required_signers.into())
68            .map(Into::into)
69            .map_err(Into::into)
70    }
71}