cardano_serialization_lib/builders/script_structs/
plutus_witness.rs1use crate::*;
2
3#[wasm_bindgen]
4#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
5pub struct PlutusWitness {
6 pub(crate) script: PlutusScriptSourceEnum,
7 pub(crate) datum: Option<DatumSourceEnum>,
8 pub(crate) redeemer: Redeemer,
9}
10
11#[wasm_bindgen]
12impl PlutusWitness {
13 pub fn new(script: &PlutusScript, datum: &PlutusData, redeemer: &Redeemer) -> Self {
14 Self {
15 script: PlutusScriptSourceEnum::Script(script.clone(), None),
16 datum: Some(DatumSourceEnum::Datum(datum.clone())),
17 redeemer: redeemer.clone(),
18 }
19 }
20
21 pub fn new_with_ref(
22 script: &PlutusScriptSource,
23 datum: &DatumSource,
24 redeemer: &Redeemer,
25 ) -> Self {
26 Self {
27 script: script.0.clone(),
28 datum: Some(datum.0.clone()),
29 redeemer: redeemer.clone(),
30 }
31 }
32
33 pub fn new_without_datum(script: &PlutusScript, redeemer: &Redeemer) -> Self {
34 Self {
35 script: PlutusScriptSourceEnum::Script(script.clone(), None),
36 datum: None,
37 redeemer: redeemer.clone(),
38 }
39 }
40
41 pub fn new_with_ref_without_datum(script: &PlutusScriptSource, redeemer: &Redeemer) -> Self {
42 Self {
43 script: script.0.clone(),
44 datum: None,
45 redeemer: redeemer.clone(),
46 }
47 }
48
49 pub fn script(&self) -> Option<PlutusScript> {
50 match &self.script {
51 PlutusScriptSourceEnum::Script(script, _) => Some(script.clone()),
52 _ => None,
53 }
54 }
55
56 pub fn datum(&self) -> Option<PlutusData> {
57 match &self.datum {
58 Some(DatumSourceEnum::Datum(datum)) => Some(datum.clone()),
59 _ => None,
60 }
61 }
62
63 pub fn redeemer(&self) -> Redeemer {
64 self.redeemer.clone()
65 }
66
67 pub(crate) fn clone_with_redeemer_index_and_tag(
68 &self,
69 index: &BigNum,
70 tag: &RedeemerTag,
71 ) -> Self {
72 Self {
73 script: self.script.clone(),
74 datum: self.datum.clone(),
75 redeemer: self.redeemer.clone_with_index_and_tag(index, tag),
76 }
77 }
78
79 pub(crate) fn get_required_signers(&self) -> Option<Ed25519KeyHashes> {
80 self.script.get_required_signers()
81 }
82}