export interface LazyHandlerConfig {
    priority?: 'high' | 'medium' | 'low';
    loadOnDemand?: boolean;
    toolNames?: string[];
    category?: string;
}
export interface HandlerConstructor {
    new (...args: any[]): any;
}
export interface LoadingError {
    handlerName: string;
    error: Error;
    timestamp: Date;
    retryCount: number;
}
export interface FallbackConfig {
    retryAttempts?: number;
    fallbackToEager?: boolean;
    notifyOnFailure?: boolean;
}
/**
 * LazyHandlerRegistry - Implements lazy loading for MCP handlers
 * Target: 30% startup time improvement through on-demand loading
 */
export declare class LazyHandlerRegistry {
    private lazyHandlers;
    private loadedHandlers;
    private loadingErrors;
    private fallbackConfig;
    /**
     * Register a handler for lazy loading
     */
    registerLazyHandler(name: string, constructor: () => any, config?: LazyHandlerConfig): void;
    /**
     * Check if a handler is loaded
     */
    isHandlerLoaded(name: string): boolean;
    /**
     * Get count of loaded handlers
     */
    getLoadedHandlerCount(): number;
    /**
     * Get total registered handler count
     */
    getTotalHandlerCount(): number;
    /**
     * Load a specific handler on demand
     */
    loadHandler(name: string): Promise<any | null>;
    /**
     * Get all available tools from loaded and lazy handlers
     */
    getAllAvailableTools(): Promise<Array<{
        name: string;
        description?: string;
    }>>;
    /**
     * Get available tool names without loading handlers (fast discovery)
     */
    getAvailableToolNames(): string[];
    /**
     * Execute a tool from a specific handler (loads handler if needed)
     */
    executeToolFromHandler(handlerName: string, toolName: string, args: any): Promise<any>;
    /**
     * Configure fallback behavior
     */
    configureFallback(config: FallbackConfig): void;
    /**
     * Get loading errors
     */
    getLoadingErrors(): LoadingError[];
    /**
     * Get failure notifications
     */
    getFailureNotifications(): Array<{
        handlerName: string;
        message: string;
        timestamp: Date;
    }>;
    /**
     * Clear all handlers and reset registry
     */
    clear(): void;
    /**
     * Get handler categories
     */
    getHandlersByCategory(category: string): string[];
    /**
     * Load handlers by priority
     */
    loadHandlersByPriority(priority: 'high' | 'medium' | 'low'): Promise<string[]>;
    /**
     * Get performance metrics
     */
    getPerformanceMetrics(): {
        totalRegistered: number;
        totalLoaded: number;
        loadingEfficiency: number;
        failureRate: number;
    };
    /**
     * Record loading error
     */
    private recordLoadingError;
}
/**
 * Global lazy handler registry instance
 */
export declare const globalLazyHandlerRegistry: LazyHandlerRegistry;
//# sourceMappingURL=lazy-handler-registry.d.ts.map