export interface ChatMessage {
    role: "system" | "user" | "assistant" | "tool";
    content: string;
    toolCallId?: string;
    name?: string;
}
export interface ToolCall {
    id: string;
    name: string;
    arguments: Record<string, unknown>;
}
export interface ToolDefinition {
    name: string;
    description: string;
    parameters: {
        type: "object";
        properties: Record<string, ToolParameterSchema>;
        required?: string[];
    };
}
export interface ToolParameterSchema {
    type: "string" | "number" | "boolean" | "array" | "object";
    description: string;
    enum?: string[];
    items?: ToolParameterSchema;
    default?: unknown;
}
export interface LlmOptions {
    temperature?: number;
    maxTokens?: number;
    tools?: ToolDefinition[];
    responseFormat?: "text" | "json";
    stop?: string[];
}
export interface LlmResponse {
    content: string;
    toolCalls?: ToolCall[];
    usage?: {
        promptTokens: number;
        completionTokens: number;
        totalTokens: number;
    };
    finishReason: "stop" | "tool_calls" | "length" | "error";
    model?: string;
    latencyMs?: number;
}
export interface LlmAdapter {
    /** Human-readable name (e.g., "Ollama (llama3.1:8b)") */
    readonly name: string;
    /** Provider identifier */
    readonly provider: "ollama" | "gemini" | "openai" | "github";
    /** Check if this adapter is available (API key set, server running, etc.) */
    available(): Promise<boolean>;
    /** Send a chat completion request */
    chat(messages: ChatMessage[], options?: LlmOptions): Promise<LlmResponse>;
}
export interface OllamaConfig {
    baseUrl: string;
    model: string;
}
export interface GeminiConfig {
    apiKey: string;
    model: string;
}
export interface OpenAIConfig {
    apiKey: string;
    model: string;
    baseUrl?: string;
}
export interface GitHubModelsConfig {
    token: string;
    model: string;
    baseUrl: string;
}
//# sourceMappingURL=llm-types.d.ts.map