/**
 * Ollama Local Model Client
 * Phase 5, Checkpoint E1 - Local AI integration for asset generation
 */
export interface OllamaConfig {
    baseUrl: string;
    model: string;
    timeout: number;
    maxRetries: number;
    fallbackModels?: string[];
}
export interface GenerateRequest {
    model: string;
    prompt: string;
    system?: string;
    template?: string;
    context?: number[];
    stream?: boolean;
    raw?: boolean;
    format?: 'json';
    options?: {
        num_keep?: number;
        seed?: number;
        num_predict?: number;
        top_k?: number;
        top_p?: number;
        tfs_z?: number;
        typical_p?: number;
        repeat_last_n?: number;
        temperature?: number;
        repeat_penalty?: number;
        presence_penalty?: number;
        frequency_penalty?: number;
        mirostat?: number;
        mirostat_tau?: number;
        mirostat_eta?: number;
        penalize_newline?: boolean;
        stop?: string[];
    };
}
export interface GenerateResponse {
    model: string;
    created_at: string;
    response: string;
    done: boolean;
    context?: number[];
    total_duration?: number;
    load_duration?: number;
    prompt_eval_count?: number;
    prompt_eval_duration?: number;
    eval_count?: number;
    eval_duration?: number;
}
export interface ModelInfo {
    name: string;
    modified_at: string;
    size: number;
    digest: string;
    details: {
        format: string;
        family: string;
        families?: string[];
        parameter_size: string;
        quantization_level: string;
    };
}
export interface ConnectionStatus {
    connected: boolean;
    version?: string;
    availableModels: string[];
    recommendedModel?: string;
    error?: string;
}
export declare class OllamaClient {
    private config;
    private isHealthy;
    private lastHealthCheck;
    private healthCheckInterval;
    constructor(config?: Partial<OllamaConfig>);
    /**
     * Check if Ollama is available and healthy
     */
    checkHealth(): Promise<ConnectionStatus>;
    /**
     * Generate text using Ollama
     */
    generate(request: Omit<GenerateRequest, 'model'> & {
        model?: string;
    }): Promise<GenerateResponse>;
    /**
     * Generate structured JSON response
     */
    generateJSON<T = any>(prompt: string, system?: string, schema?: any): Promise<T>;
    /**
     * Get available models
     */
    listModels(): Promise<ModelInfo[]>;
    /**
     * Pull a model if not available
     */
    pullModel(name: string, onProgress?: (progress: any) => void): Promise<boolean>;
    /**
     * Get Ollama version
     */
    private getVersion;
    /**
     * Find the best available model from our preferences
     */
    private findBestModel;
    /**
     * Make HTTP request to Ollama API
     */
    private makeRequest;
    /**
     * Basic schema validation
     */
    private validateSchema;
    /**
     * Simple delay utility
     */
    private delay;
    /**
     * Get connection status
     */
    isConnected(): boolean;
    /**
     * Get current configuration
     */
    getConfig(): OllamaConfig;
    /**
     * Update configuration
     */
    updateConfig(updates: Partial<OllamaConfig>): void;
}
export declare const ollamaClient: OllamaClient;
//# sourceMappingURL=ollama-client.d.ts.map