miden_testing/mock_chain/
note.rs1use miden_objects::{
2 NoteError,
3 note::{Note, NoteId, NoteInclusionProof, NoteMetadata, NoteType},
4 transaction::InputNote,
5};
6
7#[allow(clippy::large_enum_variant)]
12#[derive(Debug, Clone)]
13pub enum MockChainNote {
14 Private(NoteId, NoteMetadata, NoteInclusionProof),
17 Public(Note, NoteInclusionProof),
19}
20
21impl MockChainNote {
22 pub fn inclusion_proof(&self) -> &NoteInclusionProof {
24 match self {
25 MockChainNote::Private(_, _, inclusion_proof)
26 | MockChainNote::Public(_, inclusion_proof) => inclusion_proof,
27 }
28 }
29
30 pub fn metadata(&self) -> &NoteMetadata {
32 match self {
33 MockChainNote::Private(_, metadata, _) => metadata,
34 MockChainNote::Public(note, _) => note.metadata(),
35 }
36 }
37
38 pub fn id(&self) -> NoteId {
40 match self {
41 MockChainNote::Private(id, ..) => *id,
42 MockChainNote::Public(note, _) => note.id(),
43 }
44 }
45
46 pub fn note(&self) -> Option<&Note> {
48 match self {
49 MockChainNote::Private(..) => None,
50 MockChainNote::Public(note, _) => Some(note),
51 }
52 }
53}
54
55impl TryFrom<MockChainNote> for InputNote {
56 type Error = NoteError;
57
58 fn try_from(value: MockChainNote) -> Result<Self, Self::Error> {
59 match value {
60 MockChainNote::Private(..) => {
61 Err(NoteError::PublicUseCaseRequiresPublicNote(NoteType::Private))
62 },
63 MockChainNote::Public(note, proof) => Ok(InputNote::Authenticated { note, proof }),
64 }
65 }
66}