use miden_client::note::NoteStorage as NativeNoteStorage;
use wasm_bindgen::prelude::*;
use super::felt::Felt;
use crate::models::miden_arrays::FeltArray;
#[derive(Clone)]
#[wasm_bindgen]
pub struct NoteStorage(NativeNoteStorage);
#[wasm_bindgen]
impl NoteStorage {
#[wasm_bindgen(constructor)]
pub fn new(felt_array: &FeltArray) -> Result<NoteStorage, JsValue> {
let native_felts = felt_array.into();
let native_note_storage = NativeNoteStorage::new(native_felts)
.map_err(|err| JsValue::from_str(&format!("Invalid note storage: {err}")))?;
Ok(NoteStorage(native_note_storage))
}
pub fn items(&self) -> Vec<Felt> {
self.0.items().iter().map(Into::into).collect()
}
}
impl From<NativeNoteStorage> for NoteStorage {
fn from(native_note_storage: NativeNoteStorage) -> Self {
NoteStorage(native_note_storage)
}
}
impl From<&NativeNoteStorage> for NoteStorage {
fn from(native_note_storage: &NativeNoteStorage) -> Self {
NoteStorage(native_note_storage.clone())
}
}
impl From<NoteStorage> for NativeNoteStorage {
fn from(note_storage: NoteStorage) -> Self {
note_storage.0
}
}
impl From<&NoteStorage> for NativeNoteStorage {
fn from(note_storage: &NoteStorage) -> Self {
note_storage.0.clone()
}
}