use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct ModelTokenUsage {
pub input_tokens: Option<u64>,
pub output_tokens: Option<u64>,
pub reasoning_tokens: Option<u64>,
pub cache_read_input_tokens: Option<u64>,
pub cache_creation_input_tokens: Option<u64>,
pub cache_write_input_tokens: Option<u64>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ModelCallStatus {
Success,
Error,
Cancelled,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ModelCallUsage {
pub schema_version: u8,
pub event_id: String,
pub call_id: String,
pub session_id: String,
pub run_id: Option<String>,
pub provider: Option<String>,
pub model: Option<String>,
pub status: ModelCallStatus,
pub trace_id: Option<String>,
pub span_id: Option<String>,
pub usage: Option<ModelTokenUsage>,
}