use miden_client::transaction::{TransactionRequest, TransactionRequestBuilder};
use miden_objects::note::NoteId;
use miden_objects::{Felt, Word};
use crate::error::{MultisigError, Result};
pub fn build_consume_notes_transaction_request<I>(
note_ids: Vec<NoteId>,
salt: Word,
signature_advice: I,
) -> Result<TransactionRequest>
where
I: IntoIterator<Item = (Word, Vec<Felt>)>,
{
if note_ids.is_empty() {
return Err(MultisigError::InvalidConfig(
"no notes specified for consumption".to_string(),
));
}
let request = TransactionRequestBuilder::new()
.authenticated_input_notes(note_ids.iter().map(|id| (*id, None)).collect::<Vec<_>>())
.extend_advice_map(signature_advice)
.auth_arg(salt)
.build()?;
Ok(request)
}