/**
 * Lazy Handler Wrapper
 * Wraps handlers to load dependencies only when their tools are actually used
 */
import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { BaseToolHandler } from './base-handler.js';
export declare class LazyHandlerWrapper extends BaseToolHandler {
    protected wrappedHandler: BaseToolHandler;
    protected loadedDependencies: Map<string, Map<string, any>>;
    protected isLoadingDeps: Map<string, Promise<void>>;
    tools: Tool[];
    constructor(handler: BaseToolHandler);
    getTools(): Tool[];
    handle(toolName: string, args: any, sessions: Map<string, any>): Promise<any>;
    protected loadDependencies(toolName: string): Promise<void>;
    /**
     * Get loaded dependencies for a tool
     */
    getLoadedDependencies(toolName: string): Map<string, any> | undefined;
    /**
     * Cleanup loaded dependencies to free memory
     */
    cleanup(): Promise<void>;
    /**
     * Get memory usage stats
     */
    getMemoryStats(): {
        loadedTools: string[];
        totalDependencies: number;
        estimatedMemoryMB: number;
    };
}
/**
 * Create a lazy-loaded version of a handler
 */
export declare function createLazyHandler(handler: BaseToolHandler): LazyHandlerWrapper;
//# sourceMappingURL=lazy-handler-wrapper.d.ts.map