cml_chain/auxdata/
mod.rs

1// This file was code-generated using an experimental CDDL to rust tool:
2// https://github.com/dcSpark/cddl-codegen
3
4pub mod cbor_encodings;
5pub mod metadata;
6pub mod serialization;
7pub mod utils;
8
9use crate::plutus::{PlutusV1Script, PlutusV2Script, PlutusV3Script};
10use crate::transaction::NativeScript;
11use cbor_encodings::{ConwayFormatAuxDataEncoding, ShelleyMAFormatAuxDataEncoding};
12
13pub use metadata::*;
14
15#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
16pub enum AuxiliaryData {
17    Shelley(ShelleyFormatAuxData),
18    ShelleyMA(ShelleyMAFormatAuxData),
19    Conway(ConwayFormatAuxData),
20}
21
22impl AuxiliaryData {
23    pub fn new_shelley(shelley: ShelleyFormatAuxData) -> Self {
24        Self::Shelley(shelley)
25    }
26
27    pub fn new_shelley_ma(shelley_ma: ShelleyMAFormatAuxData) -> Self {
28        Self::ShelleyMA(shelley_ma)
29    }
30
31    pub fn new_conway(conway: ConwayFormatAuxData) -> Self {
32        Self::Conway(conway)
33    }
34}
35
36#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
37pub struct ConwayFormatAuxData {
38    pub metadata: Option<Metadata>,
39    pub native_scripts: Option<Vec<NativeScript>>,
40    pub plutus_v1_scripts: Option<Vec<PlutusV1Script>>,
41    pub plutus_v2_scripts: Option<Vec<PlutusV2Script>>,
42    pub plutus_v3_scripts: Option<Vec<PlutusV3Script>>,
43    #[serde(skip)]
44    pub encodings: Option<ConwayFormatAuxDataEncoding>,
45}
46
47impl ConwayFormatAuxData {
48    pub fn new() -> Self {
49        Self {
50            metadata: None,
51            native_scripts: None,
52            plutus_v1_scripts: None,
53            plutus_v2_scripts: None,
54            plutus_v3_scripts: None,
55            encodings: None,
56        }
57    }
58}
59
60impl Default for ConwayFormatAuxData {
61    fn default() -> Self {
62        Self::new()
63    }
64}
65
66pub type ShelleyFormatAuxData = Metadata;
67
68#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
69pub struct ShelleyMAFormatAuxData {
70    pub transaction_metadata: Metadata,
71    pub auxiliary_scripts: Vec<NativeScript>,
72    #[serde(skip)]
73    pub encodings: Option<ShelleyMAFormatAuxDataEncoding>,
74}
75
76impl ShelleyMAFormatAuxData {
77    pub fn new(transaction_metadata: Metadata, auxiliary_scripts: Vec<NativeScript>) -> Self {
78        Self {
79            transaction_metadata,
80            auxiliary_scripts,
81            encodings: None,
82        }
83    }
84}