/**
 * Core LLM functionality - Separated from index.ts to avoid circular dependencies
 * with React integration.
 *
 * @module local-llm/core
 */
export type { Backend, Device, Quantization, LLMConfig, MessageRole, ChatMessage, StreamCallback, LoadProgress, LoadProgressCallback, GenerateOptions, LLMProvider as LLMProviderInterface, AttachOptions, BrowserCapabilities, } from './types';
export { checkWebGPU, checkWasm, detectCapabilities, logCapabilities } from './detect';
export { WebLLMProvider, createWebLLMProvider, DEFAULT_WEBLLM_MODEL, WEBLLM_MODELS, } from './backends/webllm';
export { TransformersProvider, createTransformersProvider, DEFAULT_TRANSFORMERS_MODEL, TRANSFORMERS_MODELS, } from './backends/transformers';
export { createOutputStreamer, attachToElements, createChatUI, createLoadingIndicator, } from './helpers';
import type { LLMConfig, ChatMessage, GenerateOptions, StreamCallback, AttachOptions } from './types';
/**
 * Main LLM interface with simplified API
 */
export interface LocalLLM {
    /**
     * Whether the model is loaded and ready
     */
    readonly isReady: boolean;
    /**
     * The current model ID
     */
    readonly modelId: string | null;
    /**
     * The backend being used
     */
    readonly backend: 'webllm' | 'transformers';
    /**
     * Generate a chat response
     */
    chat(messages: ChatMessage[] | string, options?: GenerateOptions): Promise<string>;
    /**
     * Generate with streaming output
     */
    stream(messages: ChatMessage[] | string, onToken: StreamCallback, options?: GenerateOptions): Promise<string>;
    /**
     * Attach to input/output elements for automatic generation
     */
    attachToInput(inputSelector: string | HTMLInputElement | HTMLTextAreaElement, outputSelector: string | HTMLElement, options?: AttachOptions): () => void;
    /**
     * Unload the model and free resources
     */
    unload(): Promise<void>;
}
/**
 * Create a LocalLLM instance
 *
 * @param config - Configuration options
 * @returns Promise that resolves to a LocalLLM instance once the model is loaded
 *
 * @example
 * ```typescript
 * // Simple usage with defaults
 * const llm = await createLLM();
 *
 * // With configuration
 * const llm = await createLLM({
 *   model: 'phi-3-mini',
 *   backend: 'webllm',
 *   systemPrompt: 'You are a helpful assistant.',
 *   onLoadProgress: (p) => console.log(p.progress)
 * });
 * ```
 */
export declare function createLLM(config?: LLMConfig): Promise<LocalLLM>;
/**
 * Quick helper to test if the current browser supports WebGPU
 */
export declare function isWebGPUSupported(): Promise<boolean>;
//# sourceMappingURL=core.d.ts.map