import { QueryPerformance, OptimizationConfig, CacheStatistics, DatabaseStats } from './types.js'; export declare class QueryOptimizer { private config; private queryCache; private queryStats; private databaseStats; private indexUsageStats; constructor(config: OptimizationConfig['query']); optimizeQuery(queryType: string, queryFn: () => Promise, cacheKey?: string, indexHints?: string[]): Promise<{ result: T; performance: QueryPerformance; }>; createOptimizedQuery(baseQuery: string, options?: { useIndex?: string[]; limit?: number; orderBy?: string; where?: string; }): string; private restructureForIndexUsage; private optimizeWhereClause; generateCacheKey(queryType: string, params: any): string; invalidateCache(pattern?: string): void; private shouldCacheResult; private getResultCount; private calculateOptimizationLevel; private recordQueryPerformance; getQueryStats(queryType?: string): QueryPerformance[]; getCacheStatistics(): CacheStatistics; getDatabaseStats(): DatabaseStats; getSlowQueries(thresholdMs?: number): QueryPerformance[]; analyzeQueryPatterns(): { mostFrequent: Array<{ queryType: string; count: number; }>; slowest: Array<{ queryType: string; avgDuration: number; }>; cacheMissRates: Array<{ queryType: string; missRate: number; }>; }; optimizeIndexUsage(): string[]; createQueryPlan(query: string): { estimatedCost: number; suggestedIndexes: string[]; optimizations: string[]; }; exportPerformanceReport(): { summary: { totalQueries: number; averageQueryTime: number; cacheHitRate: number; slowQueriesCount: number; }; topQueries: QueryPerformance[]; cacheStats: CacheStatistics; recommendations: string[]; }; resetStats(): void; } //# sourceMappingURL=QueryOptimizer.d.ts.map