import { EventEmitter } from 'events';
import type { GatewayRequest, GatewayResponse } from '../types/gateway-types';
export interface PerformanceThresholds {
    latency: {
        p50: number;
        p95: number;
        p99: number;
    };
    errorRate: number;
    throughput: {
        min: number;
        max: number;
    };
    memory: {
        max: number;
        growthRate: number;
    };
}
export interface Anomaly {
    type: 'latency' | 'error_rate' | 'throughput' | 'memory' | 'cpu';
    severity: 'low' | 'medium' | 'high' | 'critical';
    value: number;
    threshold: number;
    timestamp: number;
    message: string;
}
export interface PerformanceMetrics {
    requests: {
        total: number;
        rate: number;
        active: number;
    };
    latency: {
        current: number;
        p50: number;
        p95: number;
        p99: number;
        avg: number;
        min: number;
        max: number;
    };
    errors: {
        total: number;
        rate: number;
        byType: Record<string, number>;
    };
    throughput: {
        current: number;
        avg: number;
        peak: number;
    };
    resources: {
        cpu: {
            usage: number;
            system: number;
            user: number;
        };
        memory: {
            used: number;
            rss: number;
            heapUsed: number;
            heapTotal: number;
            external: number;
        };
        connections: {
            active: number;
            idle: number;
            waiting: number;
        };
    };
}
export declare class PerformanceMonitor extends EventEmitter {
    private metrics;
    private thresholds;
    private requests;
    private latencies;
    private windowSize;
    private lastReset;
    private anomalies;
    constructor(thresholds?: Partial<PerformanceThresholds>);
    startRequest(request: GatewayRequest): void;
    endRequest(request: GatewayRequest, response: GatewayResponse): void;
    private collectMetrics;
    private recordResourceMetrics;
    private checkSLACompliance;
    detectAnomalies(): Anomaly[];
    private detectLatencySpikes;
    private detectMemoryLeaks;
    private detectErrorRateIncrease;
    private detectThroughputDegradation;
    private checkAnomalies;
    private cleanupOldData;
    private calculatePercentile;
    getMetrics(): PerformanceMetrics;
    private calculateErrorRate;
    private getErrorsByType;
    private calculateCPUUsage;
    private startMetricCollection;
    reset(): void;
    getAnomalies(): Anomaly[];
}
//# sourceMappingURL=performance-monitor.d.ts.map