/**
 * Lazy Handler Registry - Reduces memory usage by loading handlers on-demand
 * Only instantiates handlers when their tools are actually used
 */
import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { ToolHandler, BaseToolHandler } from './base-handler.js';
export interface HandlerFactory {
    name: string;
    tools: Tool[];
    factory: () => ToolHandler | BaseToolHandler;
    isLazy: boolean;
}
export declare class LazyHandlerRegistry {
    private handlerFactories;
    private instantiatedHandlers;
    private toolToFactoryMap;
    private registeredTools;
    /**
     * Register a handler factory instead of an instantiated handler
     */
    registerHandlerFactory(name: string, tools: Tool[], factory: () => ToolHandler | BaseToolHandler, isLazy?: boolean): void;
    /**
     * Instantiate a handler on-demand
     */
    private instantiateHandler;
    /**
     * Get handler for a specific tool (instantiates on-demand)
     */
    getHandlerForTool(toolName: string): ToolHandler | undefined;
    /**
     * Get all registered tools (without instantiating handlers)
     */
    getAllTools(): Tool[];
    /**
     * Get a specific tool by name
     */
    getTool(toolName: string): Tool | undefined;
    /**
     * Check if a tool exists
     */
    hasTool(toolName: string): boolean;
    /**
     * Execute a tool (instantiates handler on-demand)
     */
    executeTool(toolName: string, args: unknown): Promise<unknown>;
    /**
     * Get memory usage statistics
     */
    getMemoryStats(): {
        totalHandlers: number;
        instantiatedHandlers: number;
        totalTools: number;
        memoryReduction: string;
    };
}
//# sourceMappingURL=lazy-handler-registry.d.ts.map