import { QueryPlan } from '../types/graph.js';
import { GraphDatabase } from '../core/graph-database.js';
import { VectorStore } from '../core/vector-store.js';
export interface QueryAnalysis {
    intent: 'factual' | 'analytical' | 'exploratory' | 'comparative';
    entities: string[];
    concepts: string[];
    complexity: 'low' | 'medium' | 'high';
    expectedResultSize: 'small' | 'medium' | 'large';
    requiresReasoning: boolean;
    temporalAspects: boolean;
}
export declare class QueryPlanner {
    private graphDb;
    private vectorStore;
    private planCache;
    constructor(graphDb: GraphDatabase, vectorStore: VectorStore);
    createQueryPlan(query: string, context?: any): Promise<QueryPlan>;
    private analyzeQuery;
    private extractEntities;
    private extractConcepts;
    private determineComplexity;
    private estimateResultSize;
    private requiresReasoning;
    private hasTemporalAspects;
    private createOperatorChain;
    private getQueryEmbedding;
    private getTopKForAnalysis;
    private getThresholdForAnalysis;
    private getRelevantNodeTypes;
    private determineExecutionPattern;
    private determineFusionStrategy;
    private estimateExecutionCost;
    private determinePriority;
    private generateCacheKey;
    optimizePlan(plan: QueryPlan): Promise<QueryPlan>;
    private optimizeOperatorChain;
    private removeRedundantOperators;
    private reorderOperators;
    private optimizeOperatorConfigs;
    clearCache(): void;
    getCacheStats(): {
        size: number;
        keys: string[];
    };
}
//# sourceMappingURL=query-planner.d.ts.map