export interface ResourceMetrics {
    timestamp: number;
    memory: {
        rss: number;
        heapTotal: number;
        heapUsed: number;
        external: number;
        arrayBuffers?: number;
    };
    cpu: {
        user: number;
        system: number;
        percent: number;
    };
    loadAvg: number[];
    freeMemory: number;
}
export interface RequestMetrics {
    timestamp: number;
    method: string;
    path: string;
    statusCode: number;
    responseTime: number;
}
export declare class MetricsService {
    private readonly logger;
    private readonly maxHistoryPoints;
    private readonly resourceMetrics;
    private readonly requestMetrics;
    private maxMemoryUsage;
    private minMemoryUsage;
    private maxCpuUsage;
    private requestStats;
    private lastCpuUsage;
    private lastCpuUsageTime;
    constructor();
    recordRequest(method: string, path: string, statusCode: number, responseTime: number): void;
    private collectResourceMetrics;
    getMetrics(): {
        current: ResourceMetrics;
        max: {
            memory: {
                rss: number;
                heapTotal: number;
                heapUsed: number;
                external: number;
                arrayBuffers: number;
            };
            cpu: {
                user: number;
                system: number;
                percent: number;
            };
        };
        min: {
            memory: {
                rss: number;
                heapTotal: number;
                heapUsed: number;
                external: number;
                arrayBuffers: number;
            };
        };
        requests: {
            stats: {
                total: number;
                byMethod: Record<string, number>;
                byStatusCode: Record<string, number>;
                avgResponseTime: number;
                maxResponseTime: number;
                minResponseTime: number;
            };
            recent: RequestMetrics[];
        };
        history: {
            resources: ResourceMetrics[];
        };
    };
}
