export interface OllamaMessage {
    role: "user" | "assistant" | "system";
    content: string;
}
export interface OllamaChatRequest {
    model: string;
    messages: OllamaMessage[];
    stream?: boolean;
}
export interface OllamaChatStreamResponse {
    model: string;
    created_at: string;
    message: {
        role: "assistant";
        content: string;
    };
    done: boolean;
    total_duration?: number;
    load_duration?: number;
    prompt_eval_count?: number;
    prompt_eval_duration?: number;
    eval_count?: number;
    eval_duration?: number;
}
export interface OllamaStreamCallbacks {
    onStart: (generationId: string) => void;
    onToken: (token: string, fullContent: string) => void;
    onEnd: (fullContent: string) => void;
    onError: (error: string) => void;
}
/**
 * Check if Ollama is running and accessible
 */
export declare function checkOllamaHealth(): Promise<boolean>;
/**
 * Check if a specific model is available in Ollama
 */
export declare function checkModelAvailable(model?: string): Promise<boolean>;
/**
 * Send a chat message to Ollama with streaming response
 * This mimics the WebSocket behavior of the main chat
 *
 * When running in Tauri, uses Tauri commands to proxy the request
 * to avoid mixed content (HTTPS -> HTTP) browser blocking.
 */
export declare function streamOllamaChat(messages: OllamaMessage[], callbacks: OllamaStreamCallbacks, abortController?: AbortController): Promise<void>;
/**
 * Convert chat history to Ollama format
 */
export declare function convertToOllamaMessages(messages: Array<{
    role: "user" | "assistant" | "system";
    content: string;
}>): OllamaMessage[];
/**
 * Get system prompt for the local LLM
 */
export declare function getLocalLLMSystemPrompt(): OllamaMessage;
