use super::model::ModelPricing;
use crate::wire::canonical::CanonicalUsage;
impl ModelPricing {
#[must_use]
pub fn cost_microdollars(&self, usage: &CanonicalUsage) -> i64 {
let rate = |count: u32, per_million: f64| (f64::from(count) / 1_000_000.0) * per_million;
let total = rate(usage.input_tokens, self.input_per_million)
+ rate(usage.output_tokens, self.output_per_million)
+ rate(usage.cache_read_tokens, self.cache_read_rate())
+ rate(usage.cache_creation_tokens, self.cache_write_rate());
(total * 1_000_000.0).round() as i64
}
}