cml_chain_wasm/builders/
input_builder.rs1use crate::builders::{
2 tx_builder::TransactionUnspentOutput,
3 witness_builder::{NativeScriptWitnessInfo, PartialPlutusWitness},
4};
5use crate::{
6 plutus::PlutusData,
7 transaction::{TransactionInput, TransactionOutput},
8 NativeScript, RequiredSigners,
9};
10use cml_core_wasm::impl_wasm_conversions;
11use wasm_bindgen::prelude::{wasm_bindgen, JsError};
12
13#[wasm_bindgen]
14#[derive(Clone, Debug)]
15pub struct InputBuilderResult(cml_chain::builders::input_builder::InputBuilderResult);
16
17impl_wasm_conversions!(
18 cml_chain::builders::input_builder::InputBuilderResult,
19 InputBuilderResult
20);
21
22#[wasm_bindgen]
23#[derive(Clone)]
24pub struct SingleInputBuilder(cml_chain::builders::input_builder::SingleInputBuilder);
25
26impl_wasm_conversions!(
27 cml_chain::builders::input_builder::SingleInputBuilder,
28 SingleInputBuilder
29);
30
31#[wasm_bindgen]
32impl SingleInputBuilder {
33 pub fn new(input: &TransactionInput, utxo_info: &TransactionOutput) -> Self {
34 cml_chain::builders::input_builder::SingleInputBuilder::new(
35 input.clone().into(),
36 utxo_info.clone().into(),
37 )
38 .into()
39 }
40
41 pub fn from_transaction_unspent_output(utxo: &TransactionUnspentOutput) -> Self {
42 cml_chain::builders::input_builder::SingleInputBuilder::from(Into::<
43 cml_chain::builders::tx_builder::TransactionUnspentOutput,
44 >::into(utxo.clone()))
45 .into()
46 }
47
48 pub fn payment_key(&self) -> Result<InputBuilderResult, JsError> {
49 self.0
50 .clone()
51 .payment_key()
52 .map(Into::into)
53 .map_err(Into::into)
54 }
55
56 pub fn native_script(
57 &self,
58 native_script: &NativeScript,
59 witness_info: &NativeScriptWitnessInfo,
60 ) -> Result<InputBuilderResult, JsError> {
61 self.0
62 .clone()
63 .native_script(native_script.clone().into(), witness_info.clone().into())
64 .map(Into::into)
65 .map_err(Into::into)
66 }
67
68 pub fn plutus_script(
69 &self,
70 partial_witness: &PartialPlutusWitness,
71 required_signers: &RequiredSigners,
72 datum: &PlutusData,
73 ) -> Result<InputBuilderResult, JsError> {
74 self.0
75 .clone()
76 .plutus_script(
77 partial_witness.clone().into(),
78 required_signers.clone().into(),
79 datum.clone().into(),
80 )
81 .map(Into::into)
82 .map_err(Into::into)
83 }
84
85 pub fn plutus_script_inline_datum(
86 &self,
87 partial_witness: &PartialPlutusWitness,
88 required_signers: &RequiredSigners,
89 ) -> Result<InputBuilderResult, JsError> {
90 self.0
91 .clone()
92 .plutus_script_inline_datum(
93 partial_witness.clone().into(),
94 required_signers.clone().into(),
95 )
96 .map(Into::into)
97 .map_err(Into::into)
98 }
99}