import { EventEmitter } from 'events';
export interface ResourceMetrics {
    memory: {
        used: number;
        total: number;
        percentage: number;
        heapUsed: number;
        heapTotal: number;
        external: number;
    };
    cpu: {
        usage: number;
        loadAverage: number[];
        uptime: number;
    };
    network: {
        activeConnections: number;
        bytesReceived: number;
        bytesSent: number;
        requestsPerSecond: number;
    };
    system: {
        uptime: number;
        platform: string;
        arch: string;
        nodeVersion: string;
    };
}
export interface ResourceLimits {
    maxMemoryUsage?: number;
    maxCpuUsage?: number;
    maxNetworkConnections?: number;
    maxRequestsPerSecond?: number;
}
export interface ResourceAlert {
    type: 'memory' | 'cpu' | 'network' | 'system';
    level: 'warning' | 'critical';
    message: string;
    value: number;
    limit: number;
    timestamp: Date;
}
export interface ResourceMonitorOptions {
    enabled?: boolean;
    interval?: number;
    limits?: ResourceLimits;
    enableAlerts?: boolean;
    enableLogging?: boolean;
    enableThrottling?: boolean;
}
export declare class ResourceMonitor extends EventEmitter {
    private options;
    private isMonitoring;
    private intervalId;
    private startTime;
    private metrics;
    private alerts;
    private networkStats;
    constructor(options?: ResourceMonitorOptions);
    start(): Promise<void>;
    stop(): void;
    private collectMetrics;
    private getMemoryMetrics;
    private getCpuMetrics;
    private getNetworkMetrics;
    private getSystemMetrics;
    private checkAlerts;
    private logMetrics;
    recordRequest(): void;
    recordRequestComplete(): void;
    recordNetworkTraffic(bytesReceived: number, bytesSent: number): void;
    shouldThrottle(): boolean;
    getMetrics(): ResourceMetrics | null;
    getAlerts(): ResourceAlert[];
    getCriticalAlerts(): ResourceAlert[];
    getWarningAlerts(): ResourceAlert[];
    getUptime(): number;
    getMonitoringStatus(): boolean;
    updateLimits(limits: Partial<ResourceLimits>): void;
    updateInterval(interval: number): void;
    cleanup(): Promise<void>;
}
//# sourceMappingURL=resource-monitor.d.ts.map