import { Observable } from 'rxjs';
export interface PerformanceMetrics {
    averageProcessingTime: number;
    throughput: number;
    memoryUsage: number;
    cpuUsage: number;
    errorRate: number;
    queueSize: number;
}
export interface OptimizationRecommendation {
    type: 'batch_size' | 'flush_interval' | 'concurrency' | 'memory' | 'circuit_breaker';
    current: number;
    recommended: number;
    reason: string;
    impact: 'low' | 'medium' | 'high';
    confidence: number;
}
export interface PerformanceSettings {
    batchSize: number;
    flushInterval: number;
    maxConcurrency: number;
    memoryThreshold: number;
    adaptiveOptimization: boolean;
}
export declare class PerformanceOptimizerService {
    private readonly logger;
    private readonly metricsSubject;
    private readonly settingsSubject;
    private readonly performanceHistory;
    private readonly maxHistorySize;
    private lastOptimizationTime;
    private readonly optimizationInterval;
    constructor();
    private startPerformanceMonitoring;
    private collectSystemMetrics;
    private calculateAverageProcessingTime;
    private calculateThroughput;
    private getMemoryUsage;
    private getCpuUsage;
    private calculateErrorRate;
    private getCurrentQueueSize;
    private addToHistory;
    private analyzeAndOptimize;
    private generateOptimizationRecommendations;
    private calculateAverageMetrics;
    private applyOptimizations;
    getMetricsStream(): Observable<PerformanceMetrics>;
    getSettingsStream(): Observable<PerformanceSettings>;
    getCurrentMetrics(): PerformanceMetrics | null;
    getCurrentSettings(): PerformanceSettings;
    updateSettings(settings: Partial<PerformanceSettings>): void;
    generatePerformanceReport(): {
        currentMetrics: PerformanceMetrics | null;
        settings: PerformanceSettings;
        recommendations: OptimizationRecommendation[];
        trends: {
            processingTime: number[];
            throughput: number[];
            memoryUsage: number[];
            errorRate: number[];
        };
    };
    resetOptimizations(): void;
}
