import type { LLMProvider, ProviderId, ReasoningEffortLevel, TextVerbosityLevel, ThinkingBudgetConfig, ThinkingLevel } from '../core/types.js';
export interface ProviderConfig {
    provider: ProviderId;
    model: string;
    temperature?: number;
    maxTokens?: number;
    reasoningEffort?: ReasoningEffortLevel;
    textVerbosity?: TextVerbosityLevel;
    /** Extended thinking configuration for supported models (Anthropic Claude 4/3.7, Gemini 2.5+) */
    thinking?: ThinkingBudgetConfig;
    /** Thinking level for models that support discrete intensities (Gemini 3 Pro) */
    thinkingLevel?: ThinkingLevel;
}
export type ProviderFactory = (config: ProviderConfig) => LLMProvider;
export interface RegisterProviderOptions {
    override?: boolean;
}
export declare function registerProvider(id: ProviderId, factory: ProviderFactory, options?: RegisterProviderOptions): void;
export declare function createProvider(config: ProviderConfig): LLMProvider;
export declare function listRegisteredProviders(): ProviderId[];
export declare function hasProvider(id: ProviderId): boolean;
//# sourceMappingURL=providerFactory.d.ts.map