miden_objects/note/
details.rs1use miden_crypto::{
2 utils::{ByteReader, ByteWriter, Deserializable, Serializable},
3 Word,
4};
5use vm_processor::DeserializationError;
6
7use super::{NoteAssets, NoteId, NoteInputs, NoteRecipient, NoteScript, Nullifier};
8
9#[derive(Clone, Debug, PartialEq, Eq)]
16pub struct NoteDetails {
17 assets: NoteAssets,
18 recipient: NoteRecipient,
19}
20
21impl NoteDetails {
22 pub fn new(assets: NoteAssets, recipient: NoteRecipient) -> Self {
27 Self { assets, recipient }
28 }
29
30 pub fn id(&self) -> NoteId {
37 NoteId::from(self)
38 }
39
40 pub fn assets(&self) -> &NoteAssets {
42 &self.assets
43 }
44
45 pub fn serial_num(&self) -> Word {
47 self.recipient.serial_num()
48 }
49
50 pub fn script(&self) -> &NoteScript {
52 self.recipient.script()
53 }
54
55 pub fn inputs(&self) -> &NoteInputs {
57 self.recipient.inputs()
58 }
59
60 pub fn recipient(&self) -> &NoteRecipient {
62 &self.recipient
63 }
64
65 pub fn nullifier(&self) -> Nullifier {
69 Nullifier::from(self)
70 }
71
72 pub fn into_parts(self) -> (NoteAssets, NoteRecipient) {
74 (self.assets, self.recipient)
75 }
76}
77
78impl Serializable for NoteDetails {
82 fn write_into<W: ByteWriter>(&self, target: &mut W) {
83 let Self { assets, recipient } = self;
84
85 assets.write_into(target);
86 recipient.write_into(target);
87 }
88}
89
90impl Deserializable for NoteDetails {
91 fn read_from<R: ByteReader>(source: &mut R) -> Result<Self, DeserializationError> {
92 let assets = NoteAssets::read_from(source)?;
93 let recipient = NoteRecipient::read_from(source)?;
94 Ok(Self::new(assets, recipient))
95 }
96}