/**
 * Request router implementation
 * Routes tool calls to appropriate underlying MCP servers
 */
import { EventEmitter } from "events";
import { CallToolRequest, CallToolResult } from "@modelcontextprotocol/sdk/types.js";
import { IRequestRouter, RouteContext, RoutingResult, RouterConfig, RouterStats } from "./types.js";
import { IToolDiscoveryEngine, DiscoveredTool } from "../discovery/types.js";
import { IConnectionManager } from "../connection/types.js";
/**
 * Request router implementation
 */
export declare class RequestRouter extends EventEmitter implements IRequestRouter {
    private config;
    private discoveryEngine;
    private connectionManager;
    private stats;
    private requestLog;
    constructor(discoveryEngine: IToolDiscoveryEngine, connectionManager: IConnectionManager);
    /**
     * Initialize the router with configuration
     */
    initialize(config?: RouterConfig): Promise<void>;
    /**
     * Route a tool call request to the appropriate server
     */
    routeToolCall(request: CallToolRequest["params"], context?: Partial<RouteContext>): Promise<CallToolResult>;
    /**
     * Resolve tool name to routing information
     */
    resolveToolRoute(toolName: string): Promise<RoutingResult>;
    /**
     * Validate request parameters against tool schema
     */
    validateRequest(request: CallToolRequest["params"], tool: DiscoveredTool): Promise<boolean>;
    /**
     * Make tool call to underlying server
     */
    private makeToolCall;
    /**
     * Get router statistics
     */
    getStats(): RouterStats;
    /**
     * Clear router statistics
     */
    clearStats(): void;
    /**
     * Enable or disable request logging
     */
    setLogging(enabled: boolean): void;
    /**
     * Create empty statistics object
     */
    private createEmptyStats;
    /**
     * Update statistics after a request
     */
    private updateStats;
    /**
     * Log message if logging is enabled
     */
    private log;
}
//# sourceMappingURL=router.d.ts.map