Skip to main content

cml_multi_era_wasm/babbage/
mod.rs

1// This file was code-generated using an experimental CDDL to rust tool:
2// https://github.com/dcSpark/cddl-codegen
3
4use crate::shelley::ProtocolVersionStruct;
5use crate::{
6    AllegraCertificateList, AlonzoRedeemerList, BabbageTransactionBodyList,
7    BabbageTransactionOutputList, BabbageTransactionWitnessSetList, GenesisHashList,
8    MapTransactionIndexToBabbageAuxiliaryData,
9};
10use cml_chain_wasm::address::Address;
11use cml_chain_wasm::assets::{Coin, Mint, Value};
12use cml_chain_wasm::auxdata::{ShelleyFormatAuxData, ShelleyMAFormatAuxData};
13use cml_chain_wasm::block::Header;
14use cml_chain_wasm::crypto::{AuxiliaryDataHash, GenesisHash, ScriptDataHash};
15use cml_chain_wasm::plutus::{CostModels, ExUnitPrices, ExUnits, PlutusV1Script, PlutusV2Script};
16use cml_chain_wasm::transaction::{AlonzoFormatTxOut, DatumOption, NativeScript};
17use cml_chain_wasm::{auxdata::Metadata, Epoch, Rational, UnitInterval, Withdrawals};
18use cml_chain_wasm::{
19    BootstrapWitnessList, NativeScriptList, NetworkId, PlutusDataList, PlutusV1ScriptList,
20    PlutusV2ScriptList, RequiredSigners, TransactionInputList, VkeywitnessList,
21};
22use cml_core::ordered_hash_map::OrderedHashMap;
23use cml_core::TransactionIndex;
24use cml_core_wasm::{impl_wasm_cbor_json_api, impl_wasm_conversions};
25use wasm_bindgen::prelude::wasm_bindgen;
26
27#[derive(Clone, Debug)]
28#[wasm_bindgen]
29pub struct BabbageAuxiliaryData(cml_multi_era::babbage::BabbageAuxiliaryData);
30
31impl_wasm_cbor_json_api!(BabbageAuxiliaryData);
32
33impl_wasm_conversions!(
34    cml_multi_era::babbage::BabbageAuxiliaryData,
35    BabbageAuxiliaryData
36);
37
38#[wasm_bindgen]
39impl BabbageAuxiliaryData {
40    pub fn new_shelley(shelley: &ShelleyFormatAuxData) -> Self {
41        Self(cml_multi_era::babbage::BabbageAuxiliaryData::new_shelley(
42            shelley.clone().into(),
43        ))
44    }
45
46    pub fn new_shelley_ma(shelley_ma: &ShelleyMAFormatAuxData) -> Self {
47        Self(
48            cml_multi_era::babbage::BabbageAuxiliaryData::new_shelley_ma(shelley_ma.clone().into()),
49        )
50    }
51
52    pub fn new_babbage(babbage: &BabbageFormatAuxData) -> Self {
53        Self(cml_multi_era::babbage::BabbageAuxiliaryData::new_babbage(
54            babbage.clone().into(),
55        ))
56    }
57
58    pub fn kind(&self) -> BabbageAuxiliaryDataKind {
59        match &self.0 {
60            cml_multi_era::babbage::BabbageAuxiliaryData::Shelley(_) => {
61                BabbageAuxiliaryDataKind::Shelley
62            }
63            cml_multi_era::babbage::BabbageAuxiliaryData::ShelleyMA(_) => {
64                BabbageAuxiliaryDataKind::ShelleyMA
65            }
66            cml_multi_era::babbage::BabbageAuxiliaryData::Babbage(_) => {
67                BabbageAuxiliaryDataKind::Babbage
68            }
69        }
70    }
71
72    pub fn as_shelley(&self) -> Option<ShelleyFormatAuxData> {
73        match &self.0 {
74            cml_multi_era::babbage::BabbageAuxiliaryData::Shelley(shelley) => {
75                Some(shelley.clone().into())
76            }
77            _ => None,
78        }
79    }
80
81    pub fn as_shelley_ma(&self) -> Option<ShelleyMAFormatAuxData> {
82        match &self.0 {
83            cml_multi_era::babbage::BabbageAuxiliaryData::ShelleyMA(shelley_ma) => {
84                Some(shelley_ma.clone().into())
85            }
86            _ => None,
87        }
88    }
89
90    pub fn as_babbage(&self) -> Option<BabbageFormatAuxData> {
91        match &self.0 {
92            cml_multi_era::babbage::BabbageAuxiliaryData::Babbage(babbage) => {
93                Some(babbage.clone().into())
94            }
95            _ => None,
96        }
97    }
98}
99
100#[wasm_bindgen]
101pub enum BabbageAuxiliaryDataKind {
102    Shelley,
103    ShelleyMA,
104    Babbage,
105}
106
107#[derive(Clone, Debug)]
108#[wasm_bindgen]
109pub struct BabbageBlock(cml_multi_era::babbage::BabbageBlock);
110
111impl_wasm_cbor_json_api!(BabbageBlock);
112
113impl_wasm_conversions!(cml_multi_era::babbage::BabbageBlock, BabbageBlock);
114
115#[wasm_bindgen]
116impl BabbageBlock {
117    pub fn header(&self) -> Header {
118        self.0.header.clone().into()
119    }
120
121    pub fn transaction_bodies(&self) -> BabbageTransactionBodyList {
122        self.0.transaction_bodies.clone().into()
123    }
124
125    pub fn transaction_witness_sets(&self) -> BabbageTransactionWitnessSetList {
126        self.0.transaction_witness_sets.clone().into()
127    }
128
129    pub fn auxiliary_data_set(&self) -> MapTransactionIndexToBabbageAuxiliaryData {
130        self.0.auxiliary_data_set.clone().into()
131    }
132
133    pub fn invalid_transactions(&self) -> Vec<TransactionIndex> {
134        self.0.invalid_transactions.clone()
135    }
136
137    pub fn new(
138        header: &Header,
139        transaction_bodies: &BabbageTransactionBodyList,
140        transaction_witness_sets: &BabbageTransactionWitnessSetList,
141        auxiliary_data_set: &MapTransactionIndexToBabbageAuxiliaryData,
142        invalid_transactions: Vec<TransactionIndex>,
143    ) -> Self {
144        Self(cml_multi_era::babbage::BabbageBlock::new(
145            header.clone().into(),
146            transaction_bodies.clone().into(),
147            transaction_witness_sets.clone().into(),
148            auxiliary_data_set.clone().into(),
149            invalid_transactions,
150        ))
151    }
152}
153
154pub type BabbageCostModels = CostModels;
155
156#[derive(Clone, Debug)]
157#[wasm_bindgen]
158pub struct BabbageFormatAuxData(cml_multi_era::babbage::BabbageFormatAuxData);
159
160impl_wasm_cbor_json_api!(BabbageFormatAuxData);
161
162impl_wasm_conversions!(
163    cml_multi_era::babbage::BabbageFormatAuxData,
164    BabbageFormatAuxData
165);
166
167#[wasm_bindgen]
168impl BabbageFormatAuxData {
169    pub fn set_metadata(&mut self, metadata: &Metadata) {
170        self.0.metadata = Some(metadata.clone().into())
171    }
172
173    pub fn metadata(&self) -> Option<Metadata> {
174        self.0.metadata.clone().map(std::convert::Into::into)
175    }
176
177    pub fn set_native_scripts(&mut self, native_scripts: &NativeScriptList) {
178        self.0.native_scripts = Some(native_scripts.clone().into())
179    }
180
181    pub fn native_scripts(&self) -> Option<NativeScriptList> {
182        self.0.native_scripts.clone().map(std::convert::Into::into)
183    }
184
185    pub fn set_plutus_v1_scripts(&mut self, plutus_v1_scripts: &PlutusV1ScriptList) {
186        self.0.plutus_v1_scripts = Some(plutus_v1_scripts.clone().into())
187    }
188
189    pub fn plutus_v1_scripts(&self) -> Option<PlutusV1ScriptList> {
190        self.0
191            .plutus_v1_scripts
192            .clone()
193            .map(std::convert::Into::into)
194    }
195
196    pub fn set_plutus_v2_scripts(&mut self, plutus_v2_scripts: &PlutusV2ScriptList) {
197        self.0.plutus_v2_scripts = Some(plutus_v2_scripts.clone().into())
198    }
199
200    pub fn plutus_v2_scripts(&self) -> Option<PlutusV2ScriptList> {
201        self.0
202            .plutus_v2_scripts
203            .clone()
204            .map(std::convert::Into::into)
205    }
206
207    pub fn new() -> Self {
208        Self(cml_multi_era::babbage::BabbageFormatAuxData::new())
209    }
210}
211
212#[derive(Clone, Debug)]
213#[wasm_bindgen]
214pub struct BabbageFormatTxOut(cml_multi_era::babbage::BabbageFormatTxOut);
215
216impl_wasm_cbor_json_api!(BabbageFormatTxOut);
217
218impl_wasm_conversions!(
219    cml_multi_era::babbage::BabbageFormatTxOut,
220    BabbageFormatTxOut
221);
222
223#[wasm_bindgen]
224impl BabbageFormatTxOut {
225    pub fn address(&self) -> Address {
226        self.0.address.clone().into()
227    }
228
229    pub fn amount(&self) -> Value {
230        self.0.amount.clone().into()
231    }
232
233    pub fn set_datum_option(&mut self, datum_option: &DatumOption) {
234        self.0.datum_option = Some(datum_option.clone().into())
235    }
236
237    pub fn datum_option(&self) -> Option<DatumOption> {
238        self.0.datum_option.clone().map(std::convert::Into::into)
239    }
240
241    pub fn set_script_reference(&mut self, script_reference: &BabbageScriptRef) {
242        self.0.script_reference = Some(script_reference.clone().into())
243    }
244
245    pub fn script_reference(&self) -> Option<BabbageScriptRef> {
246        self.0
247            .script_reference
248            .clone()
249            .map(std::convert::Into::into)
250    }
251
252    pub fn new(address: &Address, amount: &Value) -> Self {
253        Self(cml_multi_era::babbage::BabbageFormatTxOut::new(
254            address.clone().into(),
255            amount.clone().into(),
256        ))
257    }
258}
259
260#[derive(Clone, Debug)]
261#[wasm_bindgen]
262pub struct BabbageProposedProtocolParameterUpdates(
263    cml_multi_era::babbage::BabbageProposedProtocolParameterUpdates,
264);
265
266impl_wasm_conversions!(
267    cml_multi_era::babbage::BabbageProposedProtocolParameterUpdates,
268    BabbageProposedProtocolParameterUpdates
269);
270
271#[wasm_bindgen]
272impl BabbageProposedProtocolParameterUpdates {
273    pub fn new() -> Self {
274        Self(OrderedHashMap::new())
275    }
276
277    pub fn len(&self) -> usize {
278        self.0.len()
279    }
280
281    pub fn insert(
282        &mut self,
283        key: &GenesisHash,
284        value: &BabbageProtocolParamUpdate,
285    ) -> Option<BabbageProtocolParamUpdate> {
286        self.0
287            .insert(key.clone().into(), value.clone().into())
288            .map(Into::into)
289    }
290
291    pub fn get(&self, key: &GenesisHash) -> Option<BabbageProtocolParamUpdate> {
292        self.0.get(key.as_ref()).map(|v| v.clone().into())
293    }
294
295    pub fn keys(&self) -> GenesisHashList {
296        self.0.iter().map(|(k, _v)| *k).collect::<Vec<_>>().into()
297    }
298}
299
300#[derive(Clone, Debug)]
301#[wasm_bindgen]
302pub struct BabbageProtocolParamUpdate(cml_multi_era::babbage::BabbageProtocolParamUpdate);
303
304impl_wasm_cbor_json_api!(BabbageProtocolParamUpdate);
305
306impl_wasm_conversions!(
307    cml_multi_era::babbage::BabbageProtocolParamUpdate,
308    BabbageProtocolParamUpdate
309);
310
311#[wasm_bindgen]
312impl BabbageProtocolParamUpdate {
313    pub fn set_minfee_a(&mut self, minfee_a: u64) {
314        self.0.minfee_a = Some(minfee_a)
315    }
316
317    pub fn minfee_a(&self) -> Option<u64> {
318        self.0.minfee_a
319    }
320
321    pub fn set_minfee_b(&mut self, minfee_b: u64) {
322        self.0.minfee_b = Some(minfee_b)
323    }
324
325    pub fn minfee_b(&self) -> Option<u64> {
326        self.0.minfee_b
327    }
328
329    pub fn set_max_block_body_size(&mut self, max_block_body_size: u64) {
330        self.0.max_block_body_size = Some(max_block_body_size)
331    }
332
333    pub fn max_block_body_size(&self) -> Option<u64> {
334        self.0.max_block_body_size
335    }
336
337    pub fn set_max_transaction_size(&mut self, max_transaction_size: u64) {
338        self.0.max_transaction_size = Some(max_transaction_size)
339    }
340
341    pub fn max_transaction_size(&self) -> Option<u64> {
342        self.0.max_transaction_size
343    }
344
345    pub fn set_max_block_header_size(&mut self, max_block_header_size: u64) {
346        self.0.max_block_header_size = Some(max_block_header_size)
347    }
348
349    pub fn max_block_header_size(&self) -> Option<u64> {
350        self.0.max_block_header_size
351    }
352
353    pub fn set_key_deposit(&mut self, key_deposit: Coin) {
354        self.0.key_deposit = Some(key_deposit)
355    }
356
357    pub fn key_deposit(&self) -> Option<Coin> {
358        self.0.key_deposit
359    }
360
361    pub fn set_pool_deposit(&mut self, pool_deposit: Coin) {
362        self.0.pool_deposit = Some(pool_deposit)
363    }
364
365    pub fn pool_deposit(&self) -> Option<Coin> {
366        self.0.pool_deposit
367    }
368
369    pub fn set_maximum_epoch(&mut self, maximum_epoch: Epoch) {
370        self.0.maximum_epoch = Some(maximum_epoch)
371    }
372
373    pub fn maximum_epoch(&self) -> Option<Epoch> {
374        self.0.maximum_epoch
375    }
376
377    pub fn set_n_opt(&mut self, n_opt: u64) {
378        self.0.n_opt = Some(n_opt)
379    }
380
381    pub fn n_opt(&self) -> Option<u64> {
382        self.0.n_opt
383    }
384
385    pub fn set_pool_pledge_influence(&mut self, pool_pledge_influence: &Rational) {
386        self.0.pool_pledge_influence = Some(pool_pledge_influence.clone().into())
387    }
388
389    pub fn pool_pledge_influence(&self) -> Option<Rational> {
390        self.0
391            .pool_pledge_influence
392            .clone()
393            .map(std::convert::Into::into)
394    }
395
396    pub fn set_expansion_rate(&mut self, expansion_rate: &UnitInterval) {
397        self.0.expansion_rate = Some(expansion_rate.clone().into())
398    }
399
400    pub fn expansion_rate(&self) -> Option<UnitInterval> {
401        self.0.expansion_rate.clone().map(std::convert::Into::into)
402    }
403
404    pub fn set_treasury_growth_rate(&mut self, treasury_growth_rate: &UnitInterval) {
405        self.0.treasury_growth_rate = Some(treasury_growth_rate.clone().into())
406    }
407
408    pub fn treasury_growth_rate(&self) -> Option<UnitInterval> {
409        self.0
410            .treasury_growth_rate
411            .clone()
412            .map(std::convert::Into::into)
413    }
414
415    pub fn set_protocol_version(&mut self, protocol_version: &ProtocolVersionStruct) {
416        self.0.protocol_version = Some(protocol_version.clone().into())
417    }
418
419    pub fn protocol_version(&self) -> Option<ProtocolVersionStruct> {
420        self.0
421            .protocol_version
422            .clone()
423            .map(std::convert::Into::into)
424    }
425
426    pub fn set_min_pool_cost(&mut self, min_pool_cost: Coin) {
427        self.0.min_pool_cost = Some(min_pool_cost)
428    }
429
430    pub fn min_pool_cost(&self) -> Option<Coin> {
431        self.0.min_pool_cost
432    }
433
434    pub fn set_ada_per_utxo_byte(&mut self, ada_per_utxo_byte: Coin) {
435        self.0.ada_per_utxo_byte = Some(ada_per_utxo_byte)
436    }
437
438    pub fn ada_per_utxo_byte(&self) -> Option<Coin> {
439        self.0.ada_per_utxo_byte
440    }
441
442    pub fn set_cost_models_for_script_languages(
443        &mut self,
444        cost_models_for_script_languages: &BabbageCostModels,
445    ) {
446        self.0.cost_models_for_script_languages =
447            Some(cost_models_for_script_languages.clone().into())
448    }
449
450    pub fn cost_models_for_script_languages(&self) -> Option<BabbageCostModels> {
451        self.0
452            .cost_models_for_script_languages
453            .clone()
454            .map(std::convert::Into::into)
455    }
456
457    pub fn set_execution_costs(&mut self, execution_costs: &ExUnitPrices) {
458        self.0.execution_costs = Some(execution_costs.clone().into())
459    }
460
461    pub fn execution_costs(&self) -> Option<ExUnitPrices> {
462        self.0.execution_costs.clone().map(std::convert::Into::into)
463    }
464
465    pub fn set_max_tx_ex_units(&mut self, max_tx_ex_units: &ExUnits) {
466        self.0.max_tx_ex_units = Some(max_tx_ex_units.clone().into())
467    }
468
469    pub fn max_tx_ex_units(&self) -> Option<ExUnits> {
470        self.0.max_tx_ex_units.clone().map(std::convert::Into::into)
471    }
472
473    pub fn set_max_block_ex_units(&mut self, max_block_ex_units: &ExUnits) {
474        self.0.max_block_ex_units = Some(max_block_ex_units.clone().into())
475    }
476
477    pub fn max_block_ex_units(&self) -> Option<ExUnits> {
478        self.0
479            .max_block_ex_units
480            .clone()
481            .map(std::convert::Into::into)
482    }
483
484    pub fn set_max_value_size(&mut self, max_value_size: u64) {
485        self.0.max_value_size = Some(max_value_size)
486    }
487
488    pub fn max_value_size(&self) -> Option<u64> {
489        self.0.max_value_size
490    }
491
492    pub fn set_collateral_percentage(&mut self, collateral_percentage: u64) {
493        self.0.collateral_percentage = Some(collateral_percentage)
494    }
495
496    pub fn collateral_percentage(&self) -> Option<u64> {
497        self.0.collateral_percentage
498    }
499
500    pub fn set_max_collateral_inputs(&mut self, max_collateral_inputs: u64) {
501        self.0.max_collateral_inputs = Some(max_collateral_inputs)
502    }
503
504    pub fn max_collateral_inputs(&self) -> Option<u64> {
505        self.0.max_collateral_inputs
506    }
507
508    pub fn new() -> Self {
509        Self(cml_multi_era::babbage::BabbageProtocolParamUpdate::new())
510    }
511}
512
513#[derive(Clone, Debug)]
514#[wasm_bindgen]
515pub struct BabbageScript(cml_multi_era::babbage::BabbageScript);
516
517impl_wasm_cbor_json_api!(BabbageScript);
518
519impl_wasm_conversions!(cml_multi_era::babbage::BabbageScript, BabbageScript);
520
521#[wasm_bindgen]
522impl BabbageScript {
523    pub fn new_native(script: &NativeScript) -> Self {
524        Self(cml_multi_era::babbage::BabbageScript::new_native(
525            script.clone().into(),
526        ))
527    }
528
529    pub fn new_plutus_v1(script: &PlutusV1Script) -> Self {
530        Self(cml_multi_era::babbage::BabbageScript::new_plutus_v1(
531            script.clone().into(),
532        ))
533    }
534
535    pub fn new_plutus_v2(script: &PlutusV2Script) -> Self {
536        Self(cml_multi_era::babbage::BabbageScript::new_plutus_v2(
537            script.clone().into(),
538        ))
539    }
540
541    pub fn kind(&self) -> BabbageScriptKind {
542        match &self.0 {
543            cml_multi_era::babbage::BabbageScript::Native { .. } => BabbageScriptKind::Native,
544            cml_multi_era::babbage::BabbageScript::PlutusV1 { .. } => BabbageScriptKind::PlutusV1,
545            cml_multi_era::babbage::BabbageScript::PlutusV2 { .. } => BabbageScriptKind::PlutusV2,
546        }
547    }
548
549    pub fn as_native(&self) -> Option<NativeScript> {
550        match &self.0 {
551            cml_multi_era::babbage::BabbageScript::Native { script, .. } => {
552                Some(script.clone().into())
553            }
554            _ => None,
555        }
556    }
557
558    pub fn as_plutus_v1(&self) -> Option<PlutusV1Script> {
559        match &self.0 {
560            cml_multi_era::babbage::BabbageScript::PlutusV1 { script, .. } => {
561                Some(script.clone().into())
562            }
563            _ => None,
564        }
565    }
566
567    pub fn as_plutus_v2(&self) -> Option<PlutusV2Script> {
568        match &self.0 {
569            cml_multi_era::babbage::BabbageScript::PlutusV2 { script, .. } => {
570                Some(script.clone().into())
571            }
572            _ => None,
573        }
574    }
575}
576
577#[wasm_bindgen]
578pub enum BabbageScriptKind {
579    Native,
580    PlutusV1,
581    PlutusV2,
582}
583
584pub type BabbageScriptRef = BabbageScript;
585
586#[derive(Clone, Debug)]
587#[wasm_bindgen]
588pub struct BabbageTransaction(cml_multi_era::babbage::BabbageTransaction);
589
590impl_wasm_cbor_json_api!(BabbageTransaction);
591
592impl_wasm_conversions!(
593    cml_multi_era::babbage::BabbageTransaction,
594    BabbageTransaction
595);
596
597#[wasm_bindgen]
598impl BabbageTransaction {
599    pub fn body(&self) -> BabbageTransactionBody {
600        self.0.body.clone().into()
601    }
602
603    pub fn witness_set(&self) -> BabbageTransactionWitnessSet {
604        self.0.witness_set.clone().into()
605    }
606
607    pub fn is_valid(&self) -> bool {
608        self.0.is_valid
609    }
610
611    pub fn auxiliary_data(&self) -> Option<BabbageAuxiliaryData> {
612        self.0.auxiliary_data.clone().map(std::convert::Into::into)
613    }
614
615    pub fn new(
616        body: &BabbageTransactionBody,
617        witness_set: &BabbageTransactionWitnessSet,
618        is_valid: bool,
619        auxiliary_data: Option<BabbageAuxiliaryData>,
620    ) -> Self {
621        Self(cml_multi_era::babbage::BabbageTransaction::new(
622            body.clone().into(),
623            witness_set.clone().into(),
624            is_valid,
625            auxiliary_data.map(Into::into),
626        ))
627    }
628}
629
630#[derive(Clone, Debug)]
631#[wasm_bindgen]
632pub struct BabbageTransactionBody(cml_multi_era::babbage::BabbageTransactionBody);
633
634impl_wasm_cbor_json_api!(BabbageTransactionBody);
635
636impl_wasm_conversions!(
637    cml_multi_era::babbage::BabbageTransactionBody,
638    BabbageTransactionBody
639);
640
641#[wasm_bindgen]
642impl BabbageTransactionBody {
643    pub fn inputs(&self) -> TransactionInputList {
644        self.0.inputs.clone().into()
645    }
646
647    pub fn outputs(&self) -> BabbageTransactionOutputList {
648        self.0.outputs.clone().into()
649    }
650
651    pub fn fee(&self) -> Coin {
652        self.0.fee
653    }
654
655    pub fn set_ttl(&mut self, ttl: u64) {
656        self.0.ttl = Some(ttl)
657    }
658
659    pub fn ttl(&self) -> Option<u64> {
660        self.0.ttl
661    }
662
663    pub fn set_certs(&mut self, certs: &AllegraCertificateList) {
664        self.0.certs = Some(certs.clone().into())
665    }
666
667    pub fn certs(&self) -> Option<AllegraCertificateList> {
668        self.0.certs.clone().map(std::convert::Into::into)
669    }
670
671    pub fn set_withdrawals(&mut self, withdrawals: &Withdrawals) {
672        self.0.withdrawals = Some(withdrawals.clone().into())
673    }
674
675    pub fn withdrawals(&self) -> Option<Withdrawals> {
676        self.0.withdrawals.clone().map(std::convert::Into::into)
677    }
678
679    pub fn set_update(&mut self, update: &BabbageUpdate) {
680        self.0.update = Some(update.clone().into())
681    }
682
683    pub fn update(&self) -> Option<BabbageUpdate> {
684        self.0.update.clone().map(std::convert::Into::into)
685    }
686
687    pub fn set_auxiliary_data_hash(&mut self, auxiliary_data_hash: &AuxiliaryDataHash) {
688        self.0.auxiliary_data_hash = Some(auxiliary_data_hash.clone().into())
689    }
690
691    pub fn auxiliary_data_hash(&self) -> Option<AuxiliaryDataHash> {
692        self.0.auxiliary_data_hash.map(std::convert::Into::into)
693    }
694
695    pub fn set_validity_interval_start(&mut self, validity_interval_start: u64) {
696        self.0.validity_interval_start = Some(validity_interval_start)
697    }
698
699    pub fn validity_interval_start(&self) -> Option<u64> {
700        self.0.validity_interval_start
701    }
702
703    pub fn set_mint(&mut self, mint: &Mint) {
704        // hand-edit
705        self.0.mint = Some(cml_multi_era::babbage::utils::BabbageMint::from(Into::<
706            cml_chain::assets::Mint,
707        >::into(
708            mint.clone(),
709        )))
710    }
711
712    pub fn mint(&self) -> Option<Mint> {
713        // hand-edit
714        self.0
715            .mint
716            .as_ref()
717            .map(|mint| mint.to_mint().to_owned().into())
718    }
719
720    pub fn set_script_data_hash(&mut self, script_data_hash: &ScriptDataHash) {
721        self.0.script_data_hash = Some(script_data_hash.clone().into())
722    }
723
724    pub fn script_data_hash(&self) -> Option<ScriptDataHash> {
725        self.0.script_data_hash.map(std::convert::Into::into)
726    }
727
728    pub fn set_collateral_inputs(&mut self, collateral_inputs: &TransactionInputList) {
729        self.0.collateral_inputs = Some(collateral_inputs.clone().into())
730    }
731
732    pub fn collateral_inputs(&self) -> Option<TransactionInputList> {
733        self.0
734            .collateral_inputs
735            .clone()
736            .map(std::convert::Into::into)
737    }
738
739    pub fn set_required_signers(&mut self, required_signers: &RequiredSigners) {
740        self.0.required_signers = Some(required_signers.clone().into())
741    }
742
743    pub fn required_signers(&self) -> Option<RequiredSigners> {
744        self.0
745            .required_signers
746            .clone()
747            .map(std::convert::Into::into)
748    }
749
750    pub fn set_network_id(&mut self, network_id: &NetworkId) {
751        self.0.network_id = Some(network_id.clone().into())
752    }
753
754    pub fn network_id(&self) -> Option<NetworkId> {
755        self.0.network_id.map(std::convert::Into::into)
756    }
757
758    pub fn set_collateral_return(&mut self, collateral_return: &BabbageTransactionOutput) {
759        self.0.collateral_return = Some(collateral_return.clone().into())
760    }
761
762    pub fn collateral_return(&self) -> Option<BabbageTransactionOutput> {
763        self.0
764            .collateral_return
765            .clone()
766            .map(std::convert::Into::into)
767    }
768
769    pub fn set_total_collateral(&mut self, total_collateral: Coin) {
770        self.0.total_collateral = Some(total_collateral)
771    }
772
773    pub fn total_collateral(&self) -> Option<Coin> {
774        self.0.total_collateral
775    }
776
777    pub fn set_reference_inputs(&mut self, reference_inputs: &TransactionInputList) {
778        self.0.reference_inputs = Some(reference_inputs.clone().into())
779    }
780
781    pub fn reference_inputs(&self) -> Option<TransactionInputList> {
782        self.0
783            .reference_inputs
784            .clone()
785            .map(std::convert::Into::into)
786    }
787
788    pub fn new(
789        inputs: &TransactionInputList,
790        outputs: &BabbageTransactionOutputList,
791        fee: Coin,
792    ) -> Self {
793        Self(cml_multi_era::babbage::BabbageTransactionBody::new(
794            inputs.clone().into(),
795            outputs.clone().into(),
796            fee,
797        ))
798    }
799}
800
801#[derive(Clone, Debug)]
802#[wasm_bindgen]
803pub struct BabbageTransactionOutput(cml_multi_era::babbage::BabbageTransactionOutput);
804
805impl_wasm_cbor_json_api!(BabbageTransactionOutput);
806
807impl_wasm_conversions!(
808    cml_multi_era::babbage::BabbageTransactionOutput,
809    BabbageTransactionOutput
810);
811
812#[wasm_bindgen]
813impl BabbageTransactionOutput {
814    pub fn new_alonzo_format_tx_out(alonzo_format_tx_out: &AlonzoFormatTxOut) -> Self {
815        Self(
816            cml_multi_era::babbage::BabbageTransactionOutput::new_alonzo_format_tx_out(
817                alonzo_format_tx_out.clone().into(),
818            ),
819        )
820    }
821
822    pub fn new_babbage_format_tx_out(babbage_format_tx_out: &BabbageFormatTxOut) -> Self {
823        Self(
824            cml_multi_era::babbage::BabbageTransactionOutput::new_babbage_format_tx_out(
825                babbage_format_tx_out.clone().into(),
826            ),
827        )
828    }
829
830    pub fn kind(&self) -> BabbageTransactionOutputKind {
831        match &self.0 {
832            cml_multi_era::babbage::BabbageTransactionOutput::AlonzoFormatTxOut(_) => {
833                BabbageTransactionOutputKind::AlonzoFormatTxOut
834            }
835            cml_multi_era::babbage::BabbageTransactionOutput::BabbageFormatTxOut(_) => {
836                BabbageTransactionOutputKind::BabbageFormatTxOut
837            }
838        }
839    }
840
841    pub fn as_alonzo_format_tx_out(&self) -> Option<AlonzoFormatTxOut> {
842        match &self.0 {
843            cml_multi_era::babbage::BabbageTransactionOutput::AlonzoFormatTxOut(
844                alonzo_format_tx_out,
845            ) => Some(alonzo_format_tx_out.clone().into()),
846            _ => None,
847        }
848    }
849
850    pub fn as_babbage_format_tx_out(&self) -> Option<BabbageFormatTxOut> {
851        match &self.0 {
852            cml_multi_era::babbage::BabbageTransactionOutput::BabbageFormatTxOut(
853                babbage_format_tx_out,
854            ) => Some(babbage_format_tx_out.clone().into()),
855            _ => None,
856        }
857    }
858}
859
860#[wasm_bindgen]
861pub enum BabbageTransactionOutputKind {
862    AlonzoFormatTxOut,
863    BabbageFormatTxOut,
864}
865
866#[derive(Clone, Debug)]
867#[wasm_bindgen]
868pub struct BabbageTransactionWitnessSet(cml_multi_era::babbage::BabbageTransactionWitnessSet);
869
870impl_wasm_cbor_json_api!(BabbageTransactionWitnessSet);
871
872impl_wasm_conversions!(
873    cml_multi_era::babbage::BabbageTransactionWitnessSet,
874    BabbageTransactionWitnessSet
875);
876
877#[wasm_bindgen]
878impl BabbageTransactionWitnessSet {
879    pub fn set_vkeywitnesses(&mut self, vkeywitnesses: &VkeywitnessList) {
880        self.0.vkeywitnesses = Some(vkeywitnesses.clone().into())
881    }
882
883    pub fn vkeywitnesses(&self) -> Option<VkeywitnessList> {
884        self.0.vkeywitnesses.clone().map(std::convert::Into::into)
885    }
886
887    pub fn set_native_scripts(&mut self, native_scripts: &NativeScriptList) {
888        self.0.native_scripts = Some(native_scripts.clone().into())
889    }
890
891    pub fn native_scripts(&self) -> Option<NativeScriptList> {
892        self.0.native_scripts.clone().map(std::convert::Into::into)
893    }
894
895    pub fn set_bootstrap_witnesses(&mut self, bootstrap_witnesses: &BootstrapWitnessList) {
896        self.0.bootstrap_witnesses = Some(bootstrap_witnesses.clone().into())
897    }
898
899    pub fn bootstrap_witnesses(&self) -> Option<BootstrapWitnessList> {
900        self.0
901            .bootstrap_witnesses
902            .clone()
903            .map(std::convert::Into::into)
904    }
905
906    pub fn set_plutus_v1_scripts(&mut self, plutus_v1_scripts: &PlutusV1ScriptList) {
907        self.0.plutus_v1_scripts = Some(plutus_v1_scripts.clone().into())
908    }
909
910    pub fn plutus_v1_scripts(&self) -> Option<PlutusV1ScriptList> {
911        self.0
912            .plutus_v1_scripts
913            .clone()
914            .map(std::convert::Into::into)
915    }
916
917    pub fn set_plutus_datums(&mut self, plutus_datums: &PlutusDataList) {
918        self.0.plutus_datums = Some(plutus_datums.clone().into())
919    }
920
921    pub fn plutus_datums(&self) -> Option<PlutusDataList> {
922        self.0.plutus_datums.clone().map(std::convert::Into::into)
923    }
924
925    pub fn set_redeemers(&mut self, redeemers: &AlonzoRedeemerList) {
926        self.0.redeemers = Some(redeemers.clone().into())
927    }
928
929    pub fn redeemers(&self) -> Option<AlonzoRedeemerList> {
930        self.0.redeemers.clone().map(std::convert::Into::into)
931    }
932
933    pub fn set_plutus_v2_scripts(&mut self, plutus_v2_scripts: &PlutusV2ScriptList) {
934        self.0.plutus_v2_scripts = Some(plutus_v2_scripts.clone().into())
935    }
936
937    pub fn plutus_v2_scripts(&self) -> Option<PlutusV2ScriptList> {
938        self.0
939            .plutus_v2_scripts
940            .clone()
941            .map(std::convert::Into::into)
942    }
943
944    pub fn new() -> Self {
945        Self(cml_multi_era::babbage::BabbageTransactionWitnessSet::new())
946    }
947}
948
949#[derive(Clone, Debug)]
950#[wasm_bindgen]
951pub struct BabbageUpdate(cml_multi_era::babbage::BabbageUpdate);
952
953impl_wasm_cbor_json_api!(BabbageUpdate);
954
955impl_wasm_conversions!(cml_multi_era::babbage::BabbageUpdate, BabbageUpdate);
956
957#[wasm_bindgen]
958impl BabbageUpdate {
959    pub fn updates(&self) -> BabbageProposedProtocolParameterUpdates {
960        self.0.updates.clone().into()
961    }
962
963    pub fn epoch(&self) -> Epoch {
964        self.0.epoch
965    }
966
967    pub fn new(updates: &BabbageProposedProtocolParameterUpdates, epoch: Epoch) -> Self {
968        Self(cml_multi_era::babbage::BabbageUpdate::new(
969            updates.clone().into(),
970            epoch,
971        ))
972    }
973}