cml_chain_wasm/builders/
certificate_builder.rs1use 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::{certs::Certificate, RequiredSigners};
9
10#[wasm_bindgen]
11#[derive(Clone)]
12pub struct CertificateBuilderResult(
13 cml_chain::builders::certificate_builder::CertificateBuilderResult,
14);
15
16impl_wasm_conversions!(
17 cml_chain::builders::certificate_builder::CertificateBuilderResult,
18 CertificateBuilderResult
19);
20
21#[wasm_bindgen]
22#[derive(Clone)]
23pub struct SingleCertificateBuilder(
24 cml_chain::builders::certificate_builder::SingleCertificateBuilder,
25);
26
27impl_wasm_conversions!(
28 cml_chain::builders::certificate_builder::SingleCertificateBuilder,
29 SingleCertificateBuilder
30);
31
32#[wasm_bindgen]
33impl SingleCertificateBuilder {
34 pub fn new(cert: &Certificate) -> Self {
35 cml_chain::builders::certificate_builder::SingleCertificateBuilder::new(cert.clone().into())
36 .into()
37 }
38
39 pub fn skip_witness(&self) -> CertificateBuilderResult {
41 self.0.clone().skip_witness().into()
42 }
43
44 pub fn payment_key(&self) -> Result<CertificateBuilderResult, JsError> {
45 self.0
46 .clone()
47 .payment_key()
48 .map(Into::into)
49 .map_err(Into::into)
50 }
51
52 pub fn native_script(
54 &self,
55 native_script: &NativeScript,
56 witness_info: &NativeScriptWitnessInfo,
57 ) -> Result<CertificateBuilderResult, JsError> {
58 self.0
59 .clone()
60 .native_script(native_script.clone().into(), witness_info.clone().into())
61 .map(Into::into)
62 .map_err(Into::into)
63 }
64
65 pub fn plutus_script(
66 self,
67 partial_witness: &PartialPlutusWitness,
68 required_signers: &RequiredSigners,
69 ) -> Result<CertificateBuilderResult, JsError> {
70 self.0
71 .plutus_script(
72 partial_witness.clone().into(),
73 required_signers.clone().into(),
74 )
75 .map(Into::into)
76 .map_err(Into::into)
77 }
78}