omniference 0.3.2

A multi-protocol inference engine with provider adapters
Documentation
use serde::{Deserialize, Serialize};

use crate::types::{CompletionTokensDetails, PromptTokensDetails};

#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum StreamEvent {
	TextDelta {
		content: String,
	},
	ReasoningDelta {
		content: String,
	},
	ToolCallStart {
		id: String,
		name: String,
		args_json: serde_json::Value,
	},
	ToolCallDelta {
		id: String,
		args_delta_json: serde_json::Value,
	},
	ToolCallEnd {
		id: String,
		args_json: serde_json::Value,
	},
	SystemNote {
		content: String,
	},
	Tokens {
		input: u32,
		output: u32,
	},
	FinalMessage {
		content: String,
		tool_calls: Vec<ToolCallSummary>,
	},
	OpenAIMetadata {
		system_fingerprint: Option<String>,
		service_tier: Option<String>,
		prompt_tokens_details: Option<PromptTokensDetails>,
		completion_tokens_details: Option<CompletionTokensDetails>,
	},
	OpenAIChatCompletion {
		response: serde_json::Value,
	},
	OpenAIChatCompletionChunk {
		chunk: serde_json::Value,
	},
	OpenAIResponsesResponse {
		response: serde_json::Value,
	},
	OpenAIResponsesEvent {
		event: Option<String>,
		data: serde_json::Value,
	},
	Cost {
		cost: CostDetails,
	},
	Error {
		code: String,
		message: String,
	},
	Done,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct ToolCallSummary {
	pub id: String,
	pub name: String,
	pub args_json: serde_json::Value,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CostDetails {
	pub total: f64,
	pub prompt: Option<f64>,
	pub completion: Option<f64>,
	pub reasoning: Option<f64>,
}