// Copyright 2026 ppyq882
// Licensed under the Apache License, Version 2.0
///|
/// Interactive scenario demonstrating Privacy Budget Ledger, Sub-Ledgers, and Odometers.
pub fn run_budget_demo() -> Unit {
println("==================================================")
println(" 1. Privacy Budget Ledger & Odometer Scenario ")
println("==================================================")
let init_b = match @core.PrivacyBudget::make(10.0, 0.001) {
Ok(b) => b
Err(_) => @core.PrivacyBudget::zero()
}
let acc = @ledger.PrivacyAccount::new(
"acc_analytics", "Data Science Team", init_b, 100,
)
println("Initial Account Budget: " + acc.initial_budget().to_string())
let odo = @ledger.PrivacyOdometer::new("analytics_odometer", 5.0)
let q_cost = match @core.PrivacyBudget::make(1.5, 0.0001) {
Ok(b) => b
Err(_) => @core.PrivacyBudget::zero()
}
let _ = acc.consume(q_cost)
let warned = odo.record(q_cost)
println("Executed Query 1 (Cost: " + q_cost.to_string() + ")")
println("Remaining Account Budget: " + acc.remaining_budget().to_string())
println(
"Odometer Total Measured: " +
odo.measured().to_string() +
", Warning Triggered: " +
warned.to_string(),
)
println("")
}