use dynamic_grounding_for_github_copilot::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let quota_tracker = Arc::new(QuotaTracker::new());
println!("Quota tracker created with Gemini free tier limits:");
let status = quota_tracker.get_status();
println!(" RPM usage: {:.1}%", status.rpm_usage);
println!(" RPD usage: {:.1}%", status.rpd_usage);
println!(" TPM usage: {:.1}%", status.tpm_usage);
println!(" Remaining RPM: {}", status.remaining_rpm);
println!(" Remaining RPD: {}", status.remaining_rpd);
println!("\nSimulating API requests...");
for i in 1..=5 {
quota_tracker.record_request(100 + i * 50); println!("\nAfter request {}:", i);
let status = quota_tracker.get_status();
println!(" RPM usage: {:.1}%", status.rpm_usage);
println!(" RPD usage: {:.1}%", status.rpd_usage);
println!(" TPM usage: {:.1}%", status.tpm_usage);
println!(" Status: {}", status.format_message());
if status.warning {
println!(" ⚠️ Warning: Approaching quota limits!");
}
}
let final_status = quota_tracker.get_status();
println!("\n📊 Final quota status:");
println!(
" RPM: {:.1}% used ({} remaining)",
final_status.rpm_usage, final_status.remaining_rpm
);
println!(
" RPD: {:.1}% used ({} remaining)",
final_status.rpd_usage, final_status.remaining_rpd
);
println!(" TPM: {:.1}% used", final_status.tpm_usage);
if final_status.warning {
println!("\n⚠️ Warning: You're approaching quota limits!");
println!("Consider waiting before making more requests.");
} else {
println!("\n✓ All quota limits OK");
}
Ok(())
}