/**
 * Chat API client
 * Handles LLM chat interactions via /api/llm/chat
 */

import { apiPost } from "./client";

export interface ChatMessage {
  role: "system" | "user" | "assistant";
  content: string;
}

export interface ChatRequest {
  model: string;
  messages: ChatMessage[];
  stream?: boolean;
  temperature?: number;
  maxTokens?: number;
  systemPrompt?: string;
}

export interface ChatResponse {
  model: string;
  message: {
    role: "assistant";
    content: string;
  };
  done: boolean;
  totalDuration?: number;
  promptEvalCount?: number;
  evalCount?: number;
}

/**
 * Send a chat message to the LLM
 */
export async function sendChatMessage(request: ChatRequest): Promise<ChatResponse> {
  return apiPost<ChatResponse>("/api/llm/chat", request);
}

/**
 * Stream a chat message from the LLM (not implemented yet)
 * TODO: Implement streaming support
 */
export function streamChatMessage(
  request: ChatRequest,
  onChunk: (chunk: string) => void,
  onComplete: () => void,
  onError: (error: Error) => void
): void {
  // Streaming implementation would go here
  void request;
  void onChunk;
  void onComplete;
  void onError;
  throw new Error("Streaming not implemented yet");
}
