/**
 * WebLLM Backend Implementation
 * Primary backend using MLC's WebLLM for high-performance inference
 */
import type { LLMProvider, ChatMessage, GenerateOptions, StreamCallback, LoadProgressCallback, Backend } from '../types';
/**
 * Default model for WebLLM backend
 * Using Phi 3.5 Mini as it's well-tested and reasonably sized
 */
export declare const DEFAULT_WEBLLM_MODEL = "Phi-3.5-mini-instruct-q4f16_1-MLC";
/**
 * Popular WebLLM model options with correct MLC model IDs
 * These IDs must match exactly what's in web-llm's prebuiltAppConfig
 *
 * @see https://github.com/mlc-ai/web-llm/blob/main/src/config.ts
 */
export declare const WEBLLM_MODELS: {
    readonly 'llama-3.2-1b': "Llama-3.2-1B-Instruct-q4f16_1-MLC";
    readonly 'llama-3.2-3b': "Llama-3.2-3B-Instruct-q4f16_1-MLC";
    readonly 'llama-3.1-8b': "Llama-3.1-8B-Instruct-q4f16_1-MLC";
    readonly 'llama-3.1-8b-1k': "Llama-3.1-8B-Instruct-q4f16_1-MLC-1k";
    readonly 'phi-3.5-mini': "Phi-3.5-mini-instruct-q4f16_1-MLC";
    readonly 'phi-3.5-mini-1k': "Phi-3.5-mini-instruct-q4f16_1-MLC-1k";
    readonly 'phi-3.5-vision': "Phi-3.5-vision-instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-0.5b': "Qwen2.5-0.5B-Instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-1.5b': "Qwen2.5-1.5B-Instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-3b': "Qwen2.5-3B-Instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-7b': "Qwen2.5-7B-Instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-coder-0.5b': "Qwen2.5-Coder-0.5B-Instruct-q4f16_1-MLC";
    readonly 'qwen-2.5-coder-1.5b': "Qwen2.5-Coder-1.5B-Instruct-q4f16_1-MLC";
    readonly 'qwen-3-0.6b': "Qwen3-0.6B-q4f16_1-MLC";
    readonly 'qwen-3-1.7b': "Qwen3-1.7B-q4f16_1-MLC";
    readonly 'qwen-3-4b': "Qwen3-4B-q4f16_1-MLC";
    readonly 'qwen-3-8b': "Qwen3-8B-q4f16_1-MLC";
    readonly 'gemma-2-2b': "gemma-2-2b-it-q4f16_1-MLC";
    readonly 'gemma-2-2b-1k': "gemma-2-2b-it-q4f16_1-MLC-1k";
    readonly 'gemma-2-9b': "gemma-2-9b-it-q4f16_1-MLC";
    readonly 'smollm2-135m': "SmolLM2-135M-Instruct-q0f16-MLC";
    readonly 'smollm2-360m': "SmolLM2-360M-Instruct-q4f16_1-MLC";
    readonly 'smollm2-1.7b': "SmolLM2-1.7B-Instruct-q4f16_1-MLC";
    readonly 'mistral-7b': "Mistral-7B-Instruct-v0.3-q4f16_1-MLC";
    readonly 'deepseek-r1-qwen-7b': "DeepSeek-R1-Distill-Qwen-7B-q4f16_1-MLC";
    readonly 'deepseek-r1-llama-8b': "DeepSeek-R1-Distill-Llama-8B-q4f16_1-MLC";
    readonly 'hermes-3-llama-3.2-3b': "Hermes-3-Llama-3.2-3B-q4f16_1-MLC";
    readonly 'hermes-3-llama-3.1-8b': "Hermes-3-Llama-3.1-8B-q4f16_1-MLC";
};
export type WebLLMModelAlias = keyof typeof WEBLLM_MODELS;
/**
 * Model size estimates for UI display
 */
export declare const WEBLLM_MODEL_SIZES: Record<WebLLMModelAlias, string>;
/**
 * WebLLM provider implementation
 */
export declare class WebLLMProvider implements LLMProvider {
    readonly backend: Backend;
    private engine;
    private currentModel;
    get isReady(): boolean;
    get modelId(): string | null;
    load(modelId: string, onProgress?: LoadProgressCallback): Promise<void>;
    chat(messages: ChatMessage[], options?: GenerateOptions): Promise<string>;
    stream(messages: ChatMessage[], onToken: StreamCallback, options?: GenerateOptions): Promise<string>;
    unload(): Promise<void>;
}
/**
 * Create a WebLLM provider instance
 */
export declare function createWebLLMProvider(): WebLLMProvider;
//# sourceMappingURL=webllm.d.ts.map