/**
 * Comprehensive Performance Monitoring System
 * Tracks search times, memory usage, cache performance, and system metrics
 */
export interface PerformanceMetrics {
    searchTimes: number[];
    memoryUsage: MemoryUsage[];
    cacheStats: CachePerformance;
    systemStats: SystemStats;
    timestamp: Date;
}
export interface MemoryUsage {
    heapUsed: number;
    heapTotal: number;
    rss: number;
    external: number;
    timestamp: Date;
}
export interface CachePerformance {
    hitRate: number;
    avgHitTime: number;
    avgMissTime: number;
    totalHits: number;
    totalMisses: number;
    evictions: number;
}
export interface SystemStats {
    cpuUsage: number;
    loadAverage: number[];
    freeMemory: number;
    totalMemory: number;
    uptime: number;
}
export interface SearchMetrics {
    query: string;
    duration: number;
    resultCount: number;
    sources: string[];
    cacheHit: boolean;
    memoryBefore: number;
    memoryAfter: number;
    timestamp: Date;
}
export interface SlowQuery {
    query: string;
    duration: number;
    threshold: number;
    sources: string[];
    resultCount: number;
    memoryUsage: number;
    timestamp: Date;
}
export declare class PerformanceMonitor {
    private searchMetrics;
    private slowQueries;
    private memorySnapshots;
    private cacheMetrics;
    private readonly maxMetricsHistory;
    private readonly slowQueryThreshold;
    private readonly memorySnapshotInterval;
    private readonly maxSlowQueries;
    private memoryMonitorInterval?;
    private isMonitoring;
    private logListener?;
    addLogListener(fn: (level: 'debug' | 'info' | 'warn' | 'error', message: string, data?: Record<string, unknown>) => void): () => void;
    constructor();
    /**
     * Start performance monitoring
     */
    startMonitoring(): void;
    /**
     * Stop performance monitoring
     */
    stopMonitoring(): void;
    /**
     * Dispose monitoring state and timers.
     */
    dispose(): void;
    /**
     * Record search performance metrics
     */
    recordSearch(metrics: SearchMetrics): void;
    /**
     * Record cache performance metrics
     */
    recordCachePerformance(cacheName: string, stats: CachePerformance): void;
    /**
     * Get comprehensive performance metrics
     */
    getMetrics(): PerformanceMetrics;
    /**
     * Get search performance statistics
     */
    getSearchStats(): {
        totalSearches: number;
        averageTime: number;
        medianTime: number;
        p95Time: number;
        p99Time: number;
        slowQueries: number;
        cacheHitRate: number;
    };
    /**
     * Get memory usage statistics
     */
    getMemoryStats(): {
        currentUsage: MemoryUsage;
        peakUsage: MemoryUsage;
        averageUsage: MemoryUsage;
        growthRate: number;
    };
    /**
     * Get slow queries with analysis
     */
    getSlowQueries(limit?: number): SlowQuery[];
    /**
     * Analyze performance trends
     */
    analyzeTrends(): {
        performanceTrend: 'improving' | 'degrading' | 'stable';
        memoryTrend: 'growing' | 'shrinking' | 'stable';
        recommendations: string[];
    };
    /**
     * Reset all performance metrics
     */
    reset(): void;
    /**
     * Export metrics for external analysis
     */
    exportMetrics(): string;
    private recordSlowQuery;
    private startMemoryMonitoring;
    private takeMemorySnapshot;
    private aggregateCacheStats;
    private getSystemStats;
}
//# sourceMappingURL=PerformanceMonitor.d.ts.map