use js_export_macro::js_export;
use miden_client::note::NoteDetails as NativeNoteDetails;
use super::note_assets::NoteAssets;
use super::note_recipient::NoteRecipient;
#[derive(Clone)]
#[js_export]
pub struct NoteDetails(NativeNoteDetails);
#[js_export]
impl NoteDetails {
#[js_export(constructor)]
pub fn new(note_assets: &NoteAssets, note_recipient: &NoteRecipient) -> NoteDetails {
NoteDetails(NativeNoteDetails::new(note_assets.into(), note_recipient.into()))
}
pub fn assets(&self) -> NoteAssets {
self.0.assets().into()
}
pub fn recipient(&self) -> NoteRecipient {
self.0.recipient().into()
}
}
impl From<NoteDetails> for NativeNoteDetails {
fn from(note_details: NoteDetails) -> Self {
note_details.0
}
}
impl From<&NoteDetails> for NativeNoteDetails {
fn from(note_details: &NoteDetails) -> Self {
note_details.0.clone()
}
}
impl From<NativeNoteDetails> for NoteDetails {
fn from(note_details: NativeNoteDetails) -> NoteDetails {
NoteDetails(note_details)
}
}
impl From<&NativeNoteDetails> for NoteDetails {
fn from(note_details: &NativeNoteDetails) -> NoteDetails {
NoteDetails(note_details.clone())
}
}
impl_napi_from_value!(NoteDetails);