import { MetricsData, AuditLogEntry, LogLevel } from './types.js';
import { EventEmitter } from 'events';
export declare class MonitoringService extends EventEmitter {
    private metricsBuffer;
    private auditLogBuffer;
    private logDir;
    enableMetrics: boolean;
    enableAuditLogging: boolean;
    private flushInterval;
    constructor(options?: {
        logDir?: string;
        enableMetrics?: boolean;
        enableAuditLogging?: boolean;
        flushIntervalMs?: number;
    });
    private initialize;
    recordMetric(metric: Omit<MetricsData, 'timestamp'>): void;
    auditLog(entry: Omit<AuditLogEntry, 'timestamp'>): void;
    flush(): Promise<void>;
    private flushMetrics;
    private flushAuditLogs;
    getMetrics(fromDate?: Date, toDate?: Date): Promise<MetricsData[]>;
    getAuditLogs(fromDate?: Date, toDate?: Date, level?: LogLevel): Promise<AuditLogEntry[]>;
    generateReport(sessionId?: string): Promise<{
        totalRequests: number;
        successRate: number;
        averageResponseTime: number;
        errorTypes: {
            [type: string]: number;
        };
        topActions: {
            action: string;
            count: number;
        }[];
    }>;
    cleanup(): Promise<void>;
}
export declare const monitoring: MonitoringService;
export declare function monitored(action: string): (target: any, propertyName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
//# sourceMappingURL=monitoring.d.ts.map