/**
 * Provider Registry System - MVP Implementation
 *
 * Simplified registry for managing LLM providers with minimal complexity.
 * This is a Minimum Viable Product focused on core functionality.
 *
 * MVP Features:
 * - Basic provider registration and retrieval
 * - Simple default provider selection
 * - Essential configuration support
 *
 * Advanced features (commented out for future implementation):
 * - Health monitoring, complex selection strategies, dynamic management
 */
import { LLMProvider, LLMProviderFactory, LLMProviderConfig } from './llm-service.js';
/**
 * MVP Provider Registry Configuration - Simplified
 */
export interface ProviderRegistryConfig {
    /** Default provider name to use */
    defaultProvider?: string;
    /** Provider configurations */
    providers: LLMProviderConfig[];
}
/**
 * MVP Provider Registry Class
 * Simplified provider management focused on core functionality
 */
export declare class ProviderRegistry {
    private providers;
    private factories;
    private configs;
    private config;
    private initialized;
    constructor(config: ProviderRegistryConfig);
    /**
     * MVP Initialize the registry with configured providers
     */
    initialize(): Promise<void>;
    /**
     * Register a provider factory
     */
    registerFactory(factory: LLMProviderFactory): void;
    /**
     * MVP Register a provider instance directly
     */
    registerProvider(provider: LLMProvider, config?: LLMProviderConfig): Promise<void>;
    /**
     * Get a provider by name
     */
    getProvider(providerName: string): LLMProvider | undefined;
    /**
     * Get the default provider
     */
    getDefaultProvider(): LLMProvider | undefined;
    /**
     * MVP Select a provider - simplified to default selection only
     */
    selectProvider(): LLMProvider;
    /**
     * MVP Set default provider
     */
    setDefaultProvider(providerName: string): void;
    /**
     * MVP Shutdown the registry
     */
    shutdown(): Promise<void>;
    /**
     * Private Methods
     */
    private initializeProvider;
}
/**
 * Get or create the global provider registry
 */
export declare function getGlobalProviderRegistry(): ProviderRegistry;
/**
 * Initialize the global provider registry
 */
export declare function initializeGlobalProviderRegistry(config: ProviderRegistryConfig): ProviderRegistry;
/**
 * Shutdown the global provider registry
 */
export declare function shutdownGlobalProviderRegistry(): Promise<void>;
//# sourceMappingURL=provider-registry.d.ts.map