cml-chain-wasm 6.2.0

Multiplatform WASM SDK for main Cardano blockchain functionality
Documentation
use crate::builders::witness_builder::PartialPlutusWitness;
use crate::*;
use cml_core_wasm::impl_wasm_conversions;
use wasm_bindgen::prelude::{wasm_bindgen, JsError};

use super::witness_builder::NativeScriptWitnessInfo;

use crate::{address::RewardAddress, RequiredSigners};

#[wasm_bindgen]
#[derive(Clone)]
pub struct WithdrawalBuilderResult(
    cml_chain::builders::withdrawal_builder::WithdrawalBuilderResult,
);

impl_wasm_conversions!(
    cml_chain::builders::withdrawal_builder::WithdrawalBuilderResult,
    WithdrawalBuilderResult
);

#[wasm_bindgen]
#[derive(Clone)]
pub struct SingleWithdrawalBuilder(
    cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder,
);

impl_wasm_conversions!(
    cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder,
    SingleWithdrawalBuilder
);

#[wasm_bindgen]
impl SingleWithdrawalBuilder {
    pub fn new(address: &RewardAddress, amount: Coin) -> Self {
        cml_chain::builders::withdrawal_builder::SingleWithdrawalBuilder::new(
            address.clone().into(),
            amount,
        )
        .into()
    }

    pub fn payment_key(&self) -> Result<WithdrawalBuilderResult, JsError> {
        self.0
            .clone()
            .payment_key()
            .map(Into::into)
            .map_err(Into::into)
    }

    pub fn native_script(
        self,
        native_script: &NativeScript,
        witness_info: &NativeScriptWitnessInfo,
    ) -> Result<WithdrawalBuilderResult, JsError> {
        self.0
            .native_script(native_script.as_ref(), witness_info.as_ref())
            .map(Into::into)
            .map_err(Into::into)
    }

    pub fn plutus_script(
        self,
        partial_witness: PartialPlutusWitness,
        required_signers: RequiredSigners,
    ) -> Result<WithdrawalBuilderResult, JsError> {
        self.0
            .plutus_script(partial_witness.into(), required_signers.into())
            .map(Into::into)
            .map_err(Into::into)
    }
}