import winston from 'winston';
import { DIContainer } from '../container/DIContainer.js';
import { ToolAndPromptRegistry } from './ToolAndPromptRegistry.js';
import { RegistryValidator } from './RegistryValidator.js';
import { VersionManager } from './VersionManager.js';
import { DiscoveryService } from './DiscoveryService.js';
import { RegistryConfig } from './types.js';
/**
 * Service tokens for dependency injection
 */
export declare const REGISTRY_TOKENS: {
    readonly TOOL_AND_PROMPT_REGISTRY: "ToolAndPromptRegistry";
    readonly REGISTRY_VALIDATOR: "RegistryValidator";
    readonly VERSION_MANAGER: "VersionManager";
    readonly DISCOVERY_SERVICE: "DiscoveryService";
    readonly REGISTRY_CONFIG: "RegistryConfig";
    readonly REGISTRY_LOGGER: "RegistryLogger";
};
/**
 * Configuration options for registry factory
 */
export interface RegistryFactoryConfig {
    registryConfig?: Partial<RegistryConfig>;
    loggerConfig?: winston.LoggerOptions;
    enableValidation?: boolean;
    enableVersioning?: boolean;
    enableDiscovery?: boolean;
}
/**
 * Factory for creating and configuring registry services with dependency injection
 */
export declare class RegistryFactory {
    private readonly container;
    private initialized;
    constructor(container: DIContainer);
    /**
     * Initialize registry services and register them with the DI container
     */
    initialize(config?: RegistryFactoryConfig): Promise<void>;
    /**
     * Create a configured tool and prompt registry
     */
    createToolAndPromptRegistry(): ToolAndPromptRegistry;
    /**
     * Create a registry validator
     */
    createRegistryValidator(): RegistryValidator;
    /**
     * Create a version manager
     */
    createVersionManager(): VersionManager;
    /**
     * Create a discovery service
     */
    createDiscoveryService(): DiscoveryService;
    /**
     * Create registry configuration
     */
    createRegistryConfig(partial?: Partial<RegistryConfig>): RegistryConfig;
    /**
     * Create logger configuration
     */
    createLogger(options?: winston.LoggerOptions): winston.Logger;
    /**
     * Get the main registry instance
     */
    getRegistry(): ToolAndPromptRegistry;
    /**
     * Get the registry validator
     */
    getValidator(): RegistryValidator;
    /**
     * Get the version manager
     */
    getVersionManager(): VersionManager;
    /**
     * Get the discovery service
     */
    getDiscoveryService(): DiscoveryService;
    /**
     * Check if the factory has been initialized
     */
    isInitialized(): boolean;
    /**
     * Reset the factory (useful for testing)
     */
    reset(): void;
    /**
     * Create a registry factory with default configuration
     */
    static createDefault(container: DIContainer): Promise<RegistryFactory>;
    /**
     * Create a registry factory with custom configuration
     */
    static createWithConfig(container: DIContainer, config: RegistryFactoryConfig): Promise<RegistryFactory>;
    /**
     * Create a minimal registry for testing
     */
    static createForTesting(container: DIContainer): Promise<RegistryFactory>;
    /**
     * Validate registry configuration
     */
    private validateConfig;
    /**
     * Setup migration handlers if versioning is enabled
     */
    private setupMigrationHandlers;
}
//# sourceMappingURL=RegistryFactory.d.ts.map