use miden_protocol::note::NoteScriptRoot;
use miden_standards::note::P2idNote;
use miden_standards::note::costs::{NoteConsumptionCost, NoteCost};
use super::xreserve_admin::XReserveSetAttesterNote;
use super::xreserve_burn::XReserveBurnNote;
use super::xreserve_mint::XUsdcMintNote;
pub const XUSDC_MINT_CONSUMPTION_CYCLES: u32 = 65787;
pub const XUSDC_BURN_CONSUMPTION_CYCLES: u32 = 35540;
pub const XRESERVE_SET_ATTESTER_CONSUMPTION_CYCLES: u32 = 30314;
impl NoteConsumptionCost for XUsdcMintNote {
fn consumption_cycles() -> u32 {
XUSDC_MINT_CONSUMPTION_CYCLES
}
fn created_notes() -> Vec<NoteScriptRoot> {
vec![P2idNote::script_root()]
}
}
impl NoteConsumptionCost for XReserveBurnNote {
fn consumption_cycles() -> u32 {
XUSDC_BURN_CONSUMPTION_CYCLES
}
}
impl NoteConsumptionCost for XReserveSetAttesterNote {
fn consumption_cycles() -> u32 {
XRESERVE_SET_ATTESTER_CONSUMPTION_CYCLES
}
}
pub(crate) fn note_costs() -> [(NoteScriptRoot, NoteCost); 3] {
[
(XUsdcMintNote::script_root(), NoteCost::of::<XUsdcMintNote>()),
(XReserveBurnNote::script_root(), NoteCost::of::<XReserveBurnNote>()),
(
XReserveSetAttesterNote::script_root(),
NoteCost::of::<XReserveSetAttesterNote>(),
),
]
}