import type { ToolCall } from '@qvac/sdk'; import type { OpenAiFinishReason } from './completion-result.js'; import { type OpenAIToolCall, type OpenAIToolCallDelta } from './tool-calls.js'; interface ChatCompletionResponseParams { id: string; created: number; model: string; text: string; /** Model reasoning; surfaced as `message.reasoning_content` when present. */ reasoning?: string; toolCalls: ToolCall[]; completionTokens: number; promptTokens?: number; cachedTokens?: number; finishReason: OpenAiFinishReason; } interface ChatCompletionMessage { role: 'assistant'; content: string | null; reasoning_content?: string; tool_calls?: OpenAIToolCall[]; } interface ChatCompletionResponse { id: string; object: 'chat.completion'; created: number; model: string; choices: Array<{ index: number; message: ChatCompletionMessage; finish_reason: OpenAiFinishReason; }>; usage: ChatCompletionUsage; } export interface ChatCompletionDelta { role?: 'assistant'; content?: string; reasoning_content?: string; tool_calls?: OpenAIToolCallDelta[]; } interface ChatCompletionChunkParams { id: string; created: number; model: string; delta: ChatCompletionDelta; finishReason: OpenAiFinishReason | null; usage?: ChatCompletionUsage; } export interface ChatCompletionUsage { prompt_tokens: number; completion_tokens: number; total_tokens: number; prompt_tokens_details?: { cached_tokens: number; }; } /** * Builds an OpenAI `usage` object from SDK token stats. `prompt_tokens` and * `cached_tokens` are only reported when the SDK provided them; `total_tokens` * is the sum of prompt and completion tokens. */ export declare function buildUsage(params: { completionTokens: number; promptTokens?: number; cachedTokens?: number; }): ChatCompletionUsage; interface ChatCompletionChunk { id: string; object: 'chat.completion.chunk'; created: number; model: string; choices: Array<{ index: number; delta: ChatCompletionDelta; finish_reason: OpenAiFinishReason | null; }>; usage?: ChatCompletionUsage; } export declare function chatCompletionResponse(params: ChatCompletionResponseParams): ChatCompletionResponse; export declare function chatCompletionChunk(params: ChatCompletionChunkParams): ChatCompletionChunk; /** * OpenAI streams token usage only when the client sets * `stream_options.include_usage`, and delivers it in a trailing chunk whose * `choices` array is empty (it follows the finish_reason chunk). Kept separate * from `chatCompletionChunk` so a normal delta chunk never ships empty choices. */ export declare function chatCompletionUsageChunk(params: { id: string; created: number; model: string; usage: ChatCompletionUsage; }): ChatCompletionChunk; export {}; //# sourceMappingURL=chat-shapes.d.ts.map