import { Provider } from "./Provider.js";
import { registerOpenAIProvider } from "./openai/index.js";
import { registerAnthropicProvider } from "./anthropic/index.js";
import { registerGeminiProvider } from "./gemini/index.js";
import { registerDeepSeekProvider } from "./deepseek/index.js";
import { registerOllamaProvider } from "./ollama/index.js";
import { registerOpenRouterProvider } from "./openrouter/index.js";
import { registerBedrockProvider } from "./bedrock/index.js";
import { registerXAIProvider } from "./xai/index.js";
import { registerMistralProvider } from "./mistral/index.js";
import { NodeLLMConfig } from "../config.js";
type ProviderFactory = (config?: NodeLLMConfig) => Provider;
export type ProviderInterceptor = (provider: Provider) => Provider;
declare class ProviderRegistry {
    private providers;
    private globalInterceptor?;
    setInterceptor(interceptor: ProviderInterceptor | undefined): void;
    /**
     * Register a provider factory
     */
    register(name: string, factory: ProviderFactory): void;
    /**
     * Resolve a provider by name
     */
    resolve(name: string, config?: NodeLLMConfig): Provider;
    /**
     * Check if a provider is registered
     */
    has(name: string): boolean;
    /**
     * Introspection / debugging
     */
    list(): string[];
}
/**
 * Global provider registry.
 *
 * @internal
 * This is an internal implementation detail. Use `NodeLLM.registerProvider()`
 * or `createLLM()` instead of accessing this directly.
 *
 * **For custom providers**, use the public API:
 * ```typescript
 * import { NodeLLM, BaseProvider } from '@node-llm/core';
 *
 * class MyProvider extends BaseProvider { ... }
 * NodeLLM.registerProvider("my-provider", () => new MyProvider());
 * ```
 */
export declare const providerRegistry: ProviderRegistry;
export { registerOpenAIProvider as ensureOpenAIRegistered, registerOpenAIProvider, registerAnthropicProvider, registerGeminiProvider, registerDeepSeekProvider, registerOllamaProvider, registerOpenRouterProvider, registerBedrockProvider, registerXAIProvider, registerMistralProvider };
//# sourceMappingURL=registry.d.ts.map