use serde::{Deserialize, Serialize};
use crate::provider::{FinishReason, ModelName, ProviderId, TokenUsage, ToolCall};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "type")]
#[non_exhaustive]
pub enum ChatStreamEvent {
Started {
provider: ProviderId,
model: ModelName,
},
TextDelta {
delta: String,
},
ToolCallStarted {
id: String,
name: String,
},
ToolCallArgumentsDelta {
id: String,
delta: String,
},
ToolCallCompleted {
call: ToolCall,
},
Finished {
finish_reason: FinishReason,
usage: Option<TokenUsage>,
},
}