1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use cml_chain::{
    auxdata::{AuxiliaryData, ConwayFormatAuxData},
    transaction::TransactionWitnessSet,
    Script,
};

use super::{BabbageAuxiliaryData, BabbageScript, BabbageTransactionWitnessSet};

impl From<BabbageScript> for Script {
    fn from(script: BabbageScript) -> Script {
        match script {
            BabbageScript::Native {
                script,
                len_encoding,
                tag_encoding,
            } => Script::Native {
                script,
                len_encoding,
                tag_encoding,
            },
            BabbageScript::PlutusV1 {
                script,
                len_encoding,
                tag_encoding,
            } => Script::PlutusV1 {
                script,
                len_encoding,
                tag_encoding,
            },
            BabbageScript::PlutusV2 {
                script,
                len_encoding,
                tag_encoding,
            } => Script::PlutusV2 {
                script,
                len_encoding,
                tag_encoding,
            },
        }
    }
}

impl From<BabbageAuxiliaryData> for AuxiliaryData {
    fn from(aux: BabbageAuxiliaryData) -> Self {
        match aux {
            BabbageAuxiliaryData::Shelley(md) => AuxiliaryData::new_shelley(md.clone()),
            BabbageAuxiliaryData::ShelleyMA(md) => AuxiliaryData::new_shelley_m_a(md.clone()),
            BabbageAuxiliaryData::Babbage(md) => AuxiliaryData::new_conway({
                let mut conway = ConwayFormatAuxData::new();
                conway.metadata = md.metadata.clone();
                conway.native_scripts = md.native_scripts.clone();
                conway.plutus_v1_scripts = md.plutus_v1_scripts.clone();
                conway.plutus_v2_scripts = md.plutus_v2_scripts.clone();
                conway
            }),
        }
    }
}

impl From<BabbageTransactionWitnessSet> for TransactionWitnessSet {
    fn from(wits: BabbageTransactionWitnessSet) -> Self {
        let mut new_wits = TransactionWitnessSet::new();
        new_wits.vkeywitnesses = wits.vkeywitnesses;
        new_wits.native_scripts = wits.native_scripts;
        new_wits.bootstrap_witnesses = wits.bootstrap_witnesses;
        new_wits.redeemers = wits.redeemers;
        new_wits.plutus_datums = wits.plutus_datums;
        new_wits.plutus_v1_scripts = wits.plutus_v1_scripts;
        new_wits.plutus_v2_scripts = wits.plutus_v2_scripts;
        new_wits
    }
}