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
use super::common::*;
use super::hash::*;
use cbored::CborRepr;

#[derive(Clone, Debug, CborRepr, PartialEq, Eq)]
#[cborrepr(enumtype = "tagvariant")]
pub enum NativeScript {
    ScriptPubkey(Ed25519KeyHash),
    ScriptAll(NativeScripts),
    ScriptAny(NativeScripts),
    ScriptNOfK(u32, NativeScripts),
    TimelockStart { slot: u64 },
    TimelockExpiry { slot: u64 },
}

#[derive(Clone, Debug, CborRepr, PartialEq, Eq)]
#[cborrepr(structure = "flat")]
pub struct PlutusScript(pub Bytes);

#[derive(Clone, Debug, CborRepr, PartialEq, Eq)]
#[cborrepr(structure = "flat")]
pub struct PlutusScriptV2(pub Bytes);

#[derive(Clone, Debug, CborRepr, PartialEq, Eq)]
#[cborrepr(structure = "flat")]
pub struct PlutusData(pub AnyCbor);

crate::vec_structure!(PlutusScripts, PlutusScript);
crate::vec_structure!(PlutusScriptsV2, PlutusScriptV2);
crate::vec_structure!(PlutusList, PlutusData);
crate::vec_structure!(NativeScripts, NativeScript);