cml_chain_wasm/auxdata/
mod.rs1use 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}