import { EventEmitter } from 'events';
export interface PerformanceMonitorConfig {
    enableAutoMonitoring: boolean;
    monitoringInterval: number;
    maxRecords: number;
    cpuThreshold: number;
    memoryThreshold: number;
    responseTimeThreshold: number;
    enableAlerts: boolean;
    enableReporting: boolean;
    reportInterval: number;
    enableProfiling: boolean;
    profilingSampleRate: number;
}
export interface PerformanceMetrics {
    timestamp: number;
    cpuUsage: number;
    memoryUsage: number;
    heapUsage: number;
    eventLoopDelay: number;
    renderTime: number;
    apiResponseTime: number;
    apiCallCount: number;
    errorCount: number;
    cacheHitRate: number;
    activeConnections: number;
    gcPauseTime: number;
    frameRate: number;
    systemLoad: number[];
}
export interface PerformanceTrend {
    metric: string;
    direction: 'increasing' | 'decreasing' | 'stable';
    strength: number;
    average: number;
    min: number;
    max: number;
    standardDeviation: number;
    prediction: number;
}
export interface PerformanceAlert {
    id: string;
    type: 'warning' | 'critical' | 'info';
    message: string;
    metric: string;
    currentValue: number;
    threshold: number;
    timestamp: number;
    severity: number;
    suggestedActions: string[];
}
export interface PerformanceReport {
    timestamp: number;
    period: {
        start: number;
        end: number;
    };
    summary: {
        averageCpuUsage: number;
        averageMemoryUsage: number;
        averageResponseTime: number;
        totalApiCalls: number;
        totalErrors: number;
        averageCacheHitRate: number;
        uptime: number;
        systemHealth: 'healthy' | 'degraded' | 'critical';
    };
    trends: PerformanceTrend[];
    alerts: PerformanceAlert[];
    recommendations: string[];
    metrics: PerformanceMetrics[];
}
export interface PerformanceProfile {
    id: string;
    name: string;
    startTime: number;
    endTime: number;
    duration: number;
    cpuSamples: Array<{
        timestamp: number;
        usage: number;
    }>;
    memorySamples: Array<{
        timestamp: number;
        usage: number;
    }>;
    callStack: Array<{
        function: string;
        duration: number;
        calls: number;
    }>;
    hotSpots: Array<{
        location: string;
        time: number;
        percentage: number;
    }>;
}
export declare class PerformanceMonitor extends EventEmitter {
    private config;
    private metrics;
    private alerts;
    private profiles;
    private monitoringTimer?;
    private reportTimer?;
    private isRunning;
    private startTime;
    private lastCpuUsage;
    private lastMeasurement;
    private alertIdCounter;
    private activeProfiles;
    constructor(config?: Partial<PerformanceMonitorConfig>);
    start(): void;
    stop(): void;
    collectMetrics(): PerformanceMetrics;
    recordMetrics(metrics: Partial<PerformanceMetrics>): void;
    startProfile(profileId: string, name: string): void;
    stopProfile(profileId: string): PerformanceProfile | null;
    getMetrics(timeRange?: {
        start: number;
        end: number;
    }): PerformanceMetrics[];
    getTrends(timeRange?: {
        start: number;
        end: number;
    }): PerformanceTrend[];
    getAlerts(timeRange?: {
        start: number;
        end: number;
    }): PerformanceAlert[];
    generateReport(timeRange?: {
        start: number;
        end: number;
    }): PerformanceReport;
    getProfile(profileId: string): PerformanceProfile | null;
    clearData(): void;
    updateConfig(newConfig: Partial<PerformanceMonitorConfig>): void;
    private measureEventLoopDelay;
    private startMonitoring;
    private startReporting;
    private checkAlerts;
    private startProfilingSampling;
    private analyzeProfile;
    private findHotSpots;
    private calculateTrend;
    private calculateSummary;
    private generateRecommendations;
    private setupEventHandlers;
}
//# sourceMappingURL=performance-monitor.d.ts.map