use serde::Deserialize;
#[derive(Debug, Deserialize)]
#[allow(dead_code)]
pub(crate) struct CohereChatResponse {
pub(crate) id: String,
pub(crate) model: String,
pub(crate) message: Option<CohereMessage>,
pub(crate) usage: Option<CohereUsage>,
}
#[derive(Debug, Deserialize)]
#[allow(dead_code)]
pub(crate) struct CohereMessage {
pub(crate) role: String,
pub(crate) content: Vec<CohereContentPart>,
#[serde(default)]
pub(crate) tool_calls: Vec<CohereToolCall>,
}
#[derive(Debug, Deserialize)]
#[allow(dead_code)]
pub(crate) struct CohereContentPart {
pub(crate) r#type: String,
pub(crate) text: String,
}
#[derive(Debug, Deserialize)]
#[allow(dead_code)]
pub(crate) struct CohereToolCall {
pub(crate) id: String,
pub(crate) r#type: String,
pub(crate) function: CohereFunctionCall,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereFunctionCall {
pub(crate) name: String,
pub(crate) arguments: String,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereUsage {
pub(crate) tokens: CohereTokenUsage,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereTokenUsage {
pub(crate) input_tokens: usize,
pub(crate) output_tokens: usize,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereStreamEvent {
#[serde(rename = "type", default)]
pub(crate) event_type: String,
#[serde(default)]
pub(crate) delta: Option<CohereStreamDelta>,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereStreamDelta {
#[serde(default)]
pub(crate) message: Option<CohereStreamMessage>,
#[serde(default)]
pub(crate) usage: Option<CohereUsage>,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereStreamMessage {
#[serde(default)]
pub(crate) content: Option<CohereStreamContent>,
}
#[derive(Debug, Deserialize)]
pub(crate) struct CohereStreamContent {
#[serde(default)]
pub(crate) text: Option<String>,
}