cml_chain_wasm/auxdata/
mod.rs

1// This file was code-generated using an experimental CDDL to rust tool:
2// https://github.com/dcSpark/cddl-codegen
3
4use super::{NativeScriptList, PlutusV1ScriptList, PlutusV2ScriptList, PlutusV3ScriptList};
5use cml_core_wasm::{impl_wasm_cbor_json_api, impl_wasm_conversions};
6use wasm_bindgen::prelude::wasm_bindgen;
7
8pub mod metadata;
9pub mod utils;
10
11pub use metadata::*;
12
13#[derive(Clone, Debug)]
14#[wasm_bindgen]
15pub struct AuxiliaryData(cml_chain::auxdata::AuxiliaryData);
16
17impl_wasm_cbor_json_api!(AuxiliaryData);
18
19impl_wasm_conversions!(cml_chain::auxdata::AuxiliaryData, AuxiliaryData);
20
21#[wasm_bindgen]
22impl AuxiliaryData {
23    pub fn new_shelley(shelley: &ShelleyFormatAuxData) -> Self {
24        Self(cml_chain::auxdata::AuxiliaryData::new_shelley(
25            shelley.clone().into(),
26        ))
27    }
28
29    pub fn new_shelley_ma(shelley_ma: &ShelleyMAFormatAuxData) -> Self {
30        Self(cml_chain::auxdata::AuxiliaryData::new_shelley_ma(
31            shelley_ma.clone().into(),
32        ))
33    }
34
35    pub fn new_conway(conway: &ConwayFormatAuxData) -> Self {
36        Self(cml_chain::auxdata::AuxiliaryData::new_conway(
37            conway.clone().into(),
38        ))
39    }
40
41    pub fn kind(&self) -> AuxiliaryDataKind {
42        match &self.0 {
43            cml_chain::auxdata::AuxiliaryData::Shelley(_) => AuxiliaryDataKind::Shelley,
44            cml_chain::auxdata::AuxiliaryData::ShelleyMA(_) => AuxiliaryDataKind::ShelleyMA,
45            cml_chain::auxdata::AuxiliaryData::Conway(_) => AuxiliaryDataKind::Conway,
46        }
47    }
48
49    pub fn as_shelley(&self) -> Option<ShelleyFormatAuxData> {
50        match &self.0 {
51            cml_chain::auxdata::AuxiliaryData::Shelley(shelley) => Some(shelley.clone().into()),
52            _ => None,
53        }
54    }
55
56    pub fn as_shelley_ma(&self) -> Option<ShelleyMAFormatAuxData> {
57        match &self.0 {
58            cml_chain::auxdata::AuxiliaryData::ShelleyMA(shelley_ma) => {
59                Some(shelley_ma.clone().into())
60            }
61            _ => None,
62        }
63    }
64
65    pub fn as_conway(&self) -> Option<ConwayFormatAuxData> {
66        match &self.0 {
67            cml_chain::auxdata::AuxiliaryData::Conway(conway) => Some(conway.clone().into()),
68            _ => None,
69        }
70    }
71}
72
73#[wasm_bindgen]
74pub enum AuxiliaryDataKind {
75    Shelley,
76    ShelleyMA,
77    Conway,
78}
79
80#[derive(Clone, Debug)]
81#[wasm_bindgen]
82pub struct ConwayFormatAuxData(cml_chain::auxdata::ConwayFormatAuxData);
83
84impl_wasm_cbor_json_api!(ConwayFormatAuxData);
85
86impl_wasm_conversions!(cml_chain::auxdata::ConwayFormatAuxData, ConwayFormatAuxData);
87
88#[wasm_bindgen]
89impl ConwayFormatAuxData {
90    pub fn set_metadata(&mut self, metadata: &Metadata) {
91        self.0.metadata = Some(metadata.clone().into())
92    }
93
94    pub fn metadata(&self) -> Option<Metadata> {
95        self.0.metadata.clone().map(std::convert::Into::into)
96    }
97
98    pub fn set_native_scripts(&mut self, native_scripts: &NativeScriptList) {
99        self.0.native_scripts = Some(native_scripts.clone().into())
100    }
101
102    pub fn native_scripts(&self) -> Option<NativeScriptList> {
103        self.0.native_scripts.clone().map(std::convert::Into::into)
104    }
105
106    pub fn set_plutus_v1_scripts(&mut self, plutus_v1_scripts: &PlutusV1ScriptList) {
107        self.0.plutus_v1_scripts = Some(plutus_v1_scripts.clone().into())
108    }
109
110    pub fn plutus_v1_scripts(&self) -> Option<PlutusV1ScriptList> {
111        self.0
112            .plutus_v1_scripts
113            .clone()
114            .map(std::convert::Into::into)
115    }
116
117    pub fn set_plutus_v2_scripts(&mut self, plutus_v2_scripts: &PlutusV2ScriptList) {
118        self.0.plutus_v2_scripts = Some(plutus_v2_scripts.clone().into())
119    }
120
121    pub fn plutus_v2_scripts(&self) -> Option<PlutusV2ScriptList> {
122        self.0
123            .plutus_v2_scripts
124            .clone()
125            .map(std::convert::Into::into)
126    }
127
128    pub fn set_plutus_v3_scripts(&mut self, plutus_v3_scripts: &PlutusV3ScriptList) {
129        self.0.plutus_v3_scripts = Some(plutus_v3_scripts.clone().into())
130    }
131
132    pub fn plutus_v3_scripts(&self) -> Option<PlutusV3ScriptList> {
133        self.0
134            .plutus_v3_scripts
135            .clone()
136            .map(std::convert::Into::into)
137    }
138
139    pub fn new() -> Self {
140        Self(cml_chain::auxdata::ConwayFormatAuxData::new())
141    }
142}
143
144pub type ShelleyFormatAuxData = Metadata;
145
146#[derive(Clone, Debug)]
147#[wasm_bindgen]
148pub struct ShelleyMAFormatAuxData(cml_chain::auxdata::ShelleyMAFormatAuxData);
149
150impl_wasm_cbor_json_api!(ShelleyMAFormatAuxData);
151
152impl_wasm_conversions!(
153    cml_chain::auxdata::ShelleyMAFormatAuxData,
154    ShelleyMAFormatAuxData
155);
156
157#[wasm_bindgen]
158impl ShelleyMAFormatAuxData {
159    pub fn transaction_metadata(&self) -> Metadata {
160        self.0.transaction_metadata.clone().into()
161    }
162
163    pub fn auxiliary_scripts(&self) -> NativeScriptList {
164        self.0.auxiliary_scripts.clone().into()
165    }
166
167    pub fn new(transaction_metadata: &Metadata, auxiliary_scripts: &NativeScriptList) -> Self {
168        Self(cml_chain::auxdata::ShelleyMAFormatAuxData::new(
169            transaction_metadata.clone().into(),
170            auxiliary_scripts.clone().into(),
171        ))
172    }
173}