/**
 * Query Router
 *
 * Implements intelligent query routing for the Hybrid Storage Manager
 * to optimize query performance across different storage layers.
 */
import { EventEmitter } from 'events';
import { QueryRouterConfig, QueryRequest, QueryRoute, QueryMetrics, StorageLayer, RoutingDecision } from './types';
export declare class QueryRouter extends EventEmitter {
    private routingRules;
    private performanceMetrics;
    private metricsCollectionTimer?;
    constructor(_config: QueryRouterConfig);
    /**
     * Initialize the query router
     */
    initialize(): Promise<void>;
    /**
     * Route a query to the optimal storage layer
     */
    routeQuery(request: QueryRequest): Promise<RoutingDecision>;
    /**
     * Update performance metrics for a storage layer
     */
    updatePerformanceMetrics(layer: StorageLayer, latency: number, success: boolean, resultSize?: number): void;
    /**
     * Get performance metrics for all storage layers
     */
    getPerformanceMetrics(): Map<StorageLayer, QueryMetrics>;
    /**
     * Get routing statistics
     */
    getRoutingStats(): Record<string, any>;
    /**
     * Add custom routing rule
     */
    addRoutingRule(ruleId: string, route: QueryRoute): void;
    /**
     * Remove routing rule
     */
    removeRoutingRule(ruleId: string): boolean;
    /**
     * Shutdown the query router
     */
    shutdown(): Promise<void>;
    private initializeRoutingRules;
    private initializeMetrics;
    private createEmptyMetrics;
    private setupMetricsCollection;
    private collectAndEmitMetrics;
    private analyzeQuery;
    private selectOptimalLayer;
    private getFallbackLayers;
    private generateRoutingReasoning;
    private estimateLatency;
    private getDefaultLatency;
    private determineCacheStrategy;
    private generateQueryId;
    private updateRoutingMetrics;
}
export default QueryRouter;
//# sourceMappingURL=QueryRouter.d.ts.map