use miden_objects::{
accounts::AccountId,
assembly::ProgramAst,
notes::{NoteInputs, NoteRecipient, NoteScript},
NoteError, Word,
};
use crate::transaction::TransactionKernel;
pub fn build_note_script(bytes: &[u8]) -> Result<NoteScript, NoteError> {
let note_assembler = TransactionKernel::assembler();
let script_ast = ProgramAst::from_bytes(bytes).map_err(NoteError::NoteDeserializationError)?;
let (note_script, _) = NoteScript::new(script_ast, ¬e_assembler)?;
Ok(note_script)
}
pub fn build_p2id_recipient(
target: AccountId,
serial_num: Word,
) -> Result<NoteRecipient, NoteError> {
let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/assets/note_scripts/P2ID.masb"));
let note_script = build_note_script(bytes)?;
let note_inputs = NoteInputs::new(vec![target.into()])?;
Ok(NoteRecipient::new(serial_num, note_script, note_inputs))
}