use serde::{Deserialize, Serialize};
use super::request::NativeContent;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NativeResponse {
#[serde(default)]
pub candidates: Vec<NativeCandidate>,
#[serde(default)]
pub usage_metadata: NativeUsageMetadata,
#[serde(default)]
pub model_version: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NativeCandidate {
pub content: NativeContent,
#[serde(default)]
pub finish_reason: Option<NativeFinishReason>,
#[serde(default)]
pub index: u32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum NativeFinishReason {
Stop,
MaxTokens,
Safety,
Recitation,
ToolUse,
Other,
FinishReasonUnspecified,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NativeUsageMetadata {
#[serde(default)]
pub prompt_token_count: u32,
#[serde(default)]
pub candidates_token_count: u32,
#[serde(default)]
pub total_token_count: u32,
}