import { Logger } from '../logger.js'; import { EventEmitter } from 'events'; import { BrowserType } from '../browser/types.js'; export interface PerformanceMetrics { timestamp: number; cpu: { usage: number; cores: number; loadAverage: number[]; }; memory: { total: number; free: number; used: number; usagePercent: number; }; browser: { type: BrowserType; activeSessions: number; idleSessions: number; failedSessions: number; averageSessionAge: number; averageUseCount: number; }[]; network: { requestsPerSecond: number; averageResponseTime: number; errorRate: number; cacheHitRate: number; }; test: { totalTests: number; runningTests: number; completedTests: number; failedTests: number; averageTestDuration: number; }; } export interface Alert { level: 'info' | 'warn' | 'error'; message: string; timestamp: number; metrics: Partial; } interface PerformanceMonitorEvents { 'alert': (alert: Alert) => void; 'metrics': (metrics: PerformanceMetrics) => void; } export declare class PerformanceMonitor extends EventEmitter { private logger; private metrics; private alerts; private monitoringInterval; private readonly maxMetricsHistory; private readonly maxAlertsHistory; private readonly thresholds; constructor(logger: Logger); startMonitoring(intervalMs?: number): void; stopMonitoring(): void; private collectMetrics; private getCpuMetrics; private getMemoryMetrics; private checkAlerts; private addAlert; updateBrowserMetrics(browserType: BrowserType, metrics: PerformanceMetrics['browser'][0]): void; updateNetworkMetrics(metrics: Partial): void; updateTestMetrics(metrics: Partial): void; getMetricsHistory(): PerformanceMetrics[]; getAlertsHistory(): Alert[]; getLatestMetrics(): PerformanceMetrics | null; getMetricsSummary(): { averageCpuUsage: number; averageMemoryUsage: number; averageErrorRate: number; averageTestDuration: number; totalAlerts: number; }; } declare module 'events' { interface EventEmitter { on(event: K, listener: PerformanceMonitorEvents[K]): this; emit(event: K, ...args: Parameters): boolean; } } export {};