export interface PerformanceMetric {
    name: string;
    category: 'command' | 'expression' | 'validation' | 'runtime' | 'system';
    timestamp: number;
    duration: number;
    success: boolean;
    metadata?: Record<string, any>;
    severity: 'info' | 'warning' | 'error';
}
export interface PerformanceThresholds {
    command: {
        warning: number;
        error: number;
    };
    expression: {
        warning: number;
        error: number;
    };
    validation: {
        warning: number;
        error: number;
    };
}
export interface SystemMetrics {
    memoryUsage: NodeJS.MemoryUsage;
    cpuUsage: NodeJS.CpuUsage;
    timestamp: number;
}
export declare class ProductionPerformanceMonitor {
    private metrics;
    private systemMetrics;
    private isEnabled;
    private maxMetrics;
    private flushInterval;
    private lastCpuUsage;
    private readonly thresholds;
    constructor(options?: {
        enabled?: boolean;
        thresholds?: Partial<PerformanceThresholds>;
        maxMetrics?: number;
        flushIntervalMs?: number;
    });
    record(name: string, category: PerformanceMetric['category'], duration: number, success?: boolean, metadata?: Record<string, any>): void;
    measure<T>(name: string, category: PerformanceMetric['category'], operation: () => Promise<T> | T, metadata?: Record<string, any>): Promise<T>;
    getStats(category?: PerformanceMetric['category']): {
        total: number;
        successful: number;
        failed: number;
        averageDuration: number;
        medianDuration: number;
        maxDuration: number;
        minDuration: number;
        warnings: number;
        errors: number;
    };
    getRecentMetrics(minutes?: number): PerformanceMetric[];
    getCurrentSystemMetrics(): SystemMetrics;
    generateReport(): string;
    clear(): void;
    setEnabled(enabled: boolean): void;
    private startSystemMonitoring;
    destroy(): void;
}
export declare const productionMonitor: ProductionPerformanceMonitor;
export declare function monitorPerformance(category: PerformanceMetric['category'], name?: string): <T extends (...args: any[]) => any>(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
export declare function measureOperation<T>(name: string, operation: () => Promise<T> | T, category?: PerformanceMetric['category']): Promise<T>;
//# sourceMappingURL=production-monitor.d.ts.map