export type ModelInfo = { name: string; family?: string | null; parameter_size?: string | null; quantization?: string | null; }; export type ModelsResponse = { models: ModelInfo[]; }; export type Role = 'system' | 'user' | 'assistant'; export type Message = { role: Role; content: string; }; export type ChatRequest = { model: string; stream?: boolean; temperature?: number; top_p?: number; top_k?: number; repeat_penalty?: number; seed?: number; num_ctx?: number; num_predict?: number; stop?: string[]; keep_alive?: string; messages: Message[]; }; export type ChatCompletionResponse = { id: string; object: string; created: number; model: string; choices: ChatChoice[]; usage?: Usage; }; export type FinishReason = 'Stop' | 'Length' | 'ContentFilter' | 'ToolCalls'; export type ChatChoice = { index: number; message: Message; finish_reason: FinishReason; }; export type Usage = { prompt_tokens: number; completion_tokens: number; total_tokens: number; };