import { EventEmitter } from 'events';
import { AdaptivePollingConfig } from './adaptive-polling';
import { RenderOptimizerConfig } from './render-optimizer';
import { MemoryManagerConfig } from './memory-manager';
import { ApiOptimizerConfig } from './api-optimizer';
import { BatchRequestConfig } from './batch-request-manager';
import { ApiAnalyticsConfig } from './api-analytics';
import { ChangeDetectionConfig } from './change-detector';
import { ConnectionPoolConfig } from './connection-pool-manager';
import { FallbackManagerConfig } from './fallback-manager';
import { PerformanceMonitorConfig } from './performance-monitor';
import { ErrorRecoveryConfig } from './error-recovery-manager';
export interface PerformanceOptimizerConfig {
    enableAdaptivePolling: boolean;
    enableRenderOptimization: boolean;
    enableMemoryManagement: boolean;
    enableApiOptimization: boolean;
    enableBatchRequests: boolean;
    enableApiAnalytics: boolean;
    enableChangeDetection: boolean;
    enableConnectionPooling: boolean;
    enableFallbackManagement: boolean;
    enablePerformanceMonitoring: boolean;
    enableErrorRecovery: boolean;
    monitoringInterval: number;
    autoOptimizationThreshold: number;
    adaptivePolling?: Partial<AdaptivePollingConfig>;
    renderOptimizer?: Partial<RenderOptimizerConfig>;
    memoryManager?: Partial<MemoryManagerConfig>;
    apiOptimizer?: Partial<ApiOptimizerConfig>;
    batchRequests?: Partial<BatchRequestConfig>;
    apiAnalytics?: Partial<ApiAnalyticsConfig>;
    changeDetection?: Partial<ChangeDetectionConfig>;
    connectionPooling?: Partial<ConnectionPoolConfig>;
    fallbackManagement?: Partial<FallbackManagerConfig>;
    performanceMonitoring?: Partial<PerformanceMonitorConfig>;
    errorRecovery?: Partial<ErrorRecoveryConfig>;
}
export interface PerformanceMetrics {
    overallScore: number;
    components: {
        adaptivePolling?: any;
        renderOptimizer?: any;
        memoryManager?: any;
        apiOptimizer?: any;
        batchRequests?: any;
        apiAnalytics?: any;
        changeDetection?: any;
        connectionPooling?: any;
        fallbackManagement?: any;
        performanceMonitoring?: any;
        errorRecovery?: any;
    };
    recommendations: string[];
    systemResources: {
        cpu: number;
        memory: number;
        networkRequests: number;
        renderFrameRate: number;
    };
    optimizationImpact: {
        apiCallsReduced: number;
        memoryFreed: number;
        renderTimeImproved: number;
        networkBandwidthSaved: number;
    };
}
export declare class PerformanceOptimizer extends EventEmitter {
    private config;
    private adaptivePollingManager?;
    private renderOptimizer?;
    private memoryManager?;
    private apiOptimizer?;
    private batchRequestManager?;
    private apiAnalytics?;
    private changeDetector?;
    private connectionPoolManager?;
    private fallbackManager?;
    private performanceMonitor?;
    private errorRecoveryManager?;
    private monitoringTimer?;
    private isRunning;
    private startTime;
    constructor(config?: Partial<PerformanceOptimizerConfig>);
    start(): void;
    stop(): void;
    getPerformanceMetrics(): PerformanceMetrics;
    registerComponent(componentId: string, componentType: string, options?: any): void;
    registerDataSource(dataSourceId: string, initialInterval?: number): void;
    optimizeApiRequest(method: string, url: string, params?: Record<string, any>, body?: any, options?: any): Promise<any>;
    reportDataChange(dataSourceId: string, changeData?: any): void;
    markComponentDirty(componentId: string, force?: boolean): void;
    registerResource(resource: any): void;
    forceOptimization(): Promise<void>;
    updateConfig(newConfig: Partial<PerformanceOptimizerConfig>): void;
    getRecommendations(): string[];
    private initializeComponents;
    private setupEventHandlers;
    private handleCriticalMemoryPressure;
    private handleRenderQueueFull;
    private handleRateLimitWarning;
    private startPerformanceMonitoring;
    private performPerformanceCheck;
    private calculatePerformanceScore;
    private generateRecommendations;
    private calculateSystemResources;
    private calculateOptimizationImpact;
    private estimateSize;
}
//# sourceMappingURL=performance-optimizer.d.ts.map