use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AiTokenUsageEvent {
#[serde(rename = "provider")]
pub provider: models::AiProvider,
#[serde(rename = "model")]
pub model: String,
#[serde(rename = "session_id", skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
#[serde(rename = "input_tokens", skip_serializing_if = "Option::is_none")]
pub input_tokens: Option<i32>,
#[serde(rename = "cache_read_tokens", skip_serializing_if = "Option::is_none")]
pub cache_read_tokens: Option<i32>,
#[serde(rename = "cache_write_tokens", skip_serializing_if = "Option::is_none")]
pub cache_write_tokens: Option<i32>,
#[serde(rename = "output_tokens", skip_serializing_if = "Option::is_none")]
pub output_tokens: Option<i32>,
#[serde(rename = "reported_cost_nano_usd", skip_serializing_if = "Option::is_none")]
pub reported_cost_nano_usd: Option<i32>,
#[serde(rename = "requests", skip_serializing_if = "Option::is_none")]
pub requests: Option<i32>,
}
impl AiTokenUsageEvent {
pub fn new(provider: models::AiProvider, model: String) -> AiTokenUsageEvent {
AiTokenUsageEvent {
provider,
model,
session_id: None,
input_tokens: None,
cache_read_tokens: None,
cache_write_tokens: None,
output_tokens: None,
reported_cost_nano_usd: None,
requests: None,
}
}
}