/**
 * Factory utilities for creating AI providers.
 */
import { ClaudeProvider, type ClaudeConfig } from '../providers/claude.js';
import { OpenAIProvider, type OpenAIConfig } from '../providers/openai.js';
import { GeminiProvider, type GeminiConfig } from '../providers/gemini.js';
import { OpenWebUIProvider, type OpenWebUIConfig } from '../providers/openwebui.js';
import { ClaudeCodeProvider, type ClaudeCodeConfig } from '../providers/claude-code.js';
import { BaseAIProvider } from '../providers/base.js';
export declare const PROVIDER_REGISTRY: {
    readonly claude: typeof ClaudeProvider;
    readonly openai: typeof OpenAIProvider;
    readonly gemini: typeof GeminiProvider;
    readonly openwebui: typeof OpenWebUIProvider;
    readonly 'claude-code': typeof ClaudeCodeProvider;
};
export type ProviderType = keyof typeof PROVIDER_REGISTRY;
export interface ProviderConfigMap {
    claude: ClaudeConfig;
    openai: OpenAIConfig;
    gemini: GeminiConfig;
    openwebui: OpenWebUIConfig;
    'claude-code': ClaudeCodeConfig;
}
export declare function createProvider<T extends ProviderType>(type: T, config: ProviderConfigMap[T]): BaseAIProvider;
export declare function createClaudeProvider(apiKey: string, options?: Partial<Omit<ClaudeConfig, 'apiKey'>>): ClaudeProvider;
export declare function createOpenAIProvider(apiKey: string, options?: Partial<Omit<OpenAIConfig, 'apiKey'>>): OpenAIProvider;
export declare function createGeminiProvider(apiKey: string, options?: Partial<Omit<GeminiConfig, 'apiKey'>>): GeminiProvider;
export declare function createOpenWebUIProvider(config: OpenWebUIConfig): OpenWebUIProvider;
export declare function createClaudeCodeProvider(options?: Partial<ClaudeCodeConfig>): ClaudeCodeProvider;
