import { EventEmitter } from 'events';
export interface RenderOptimizerConfig {
    minRenderInterval: number;
    maxRenderInterval: number;
    enableIncrementalRendering: boolean;
    enableRenderBatching: boolean;
    batchWindow: number;
    enableVirtualDom: boolean;
    targetFrameRate: number;
    enableProfiling: boolean;
    maxPendingRenders: number;
}
export interface ComponentRenderState {
    componentId: string;
    componentType: string;
    lastRenderTime: number;
    contentHash: string;
    renderCount: number;
    averageRenderTime: number;
    isDirty: boolean;
    priority: 'low' | 'medium' | 'high';
    isVisible: boolean;
    dimensions?: {
        width: number;
        height: number;
        x: number;
        y: number;
    };
}
export interface VirtualNode {
    type: string;
    props: Record<string, any>;
    children: VirtualNode[];
    key?: string;
    hash: string;
}
export interface RenderMetrics {
    totalRenders: number;
    averageRenderTime: number;
    currentFps: number;
    skippedRenders: number;
    batchedRenders: number;
    incrementalRenders: number;
    virtualDomMemory: number;
    activeComponents: number;
    dirtyComponents: number;
}
export declare class RenderOptimizer extends EventEmitter {
    private config;
    private componentStates;
    private virtualNodes;
    private pendingOperations;
    private batchTimer?;
    private renderTimer?;
    private lastFrameTime;
    private frameCount;
    private isRunning;
    private metrics;
    constructor(config?: Partial<RenderOptimizerConfig>);
    start(): void;
    stop(): void;
    registerComponent(componentId: string, componentType: string, options?: {
        priority?: 'low' | 'medium' | 'high';
        dimensions?: ComponentRenderState['dimensions'];
        isVisible?: boolean;
    }): void;
    unregisterComponent(componentId: string): void;
    markDirty(componentId: string, force?: boolean): void;
    scheduleRender(componentId: string, priority?: 'low' | 'medium' | 'high', renderFn?: () => Promise<void> | void, force?: boolean): void;
    updateContent(componentId: string, content: any): boolean;
    updateVisibility(componentId: string, isVisible: boolean): void;
    updateDimensions(componentId: string, dimensions: ComponentRenderState['dimensions']): void;
    getMetrics(): RenderMetrics;
    getComponentStates(): Map<string, ComponentRenderState>;
    flushRenders(): Promise<void>;
    clearPendingRenders(): void;
    updateConfig(newConfig: Partial<RenderOptimizerConfig>): void;
    private generateContentHash;
    private shouldRenderImmediately;
    private getPriorityValue;
    private scheduleBatchRender;
    private processBatchRenders;
    private processBatchOperations;
    private processRenderOperation;
    private performDefaultRender;
    private updateVirtualNode;
    private setupRenderLoop;
    private updateFpsMetrics;
    private updateAverageRenderTime;
    private updateActiveComponentsCount;
    private updateDirtyComponentsCount;
    private updateVirtualDomMemory;
    private updateMetrics;
}
//# sourceMappingURL=render-optimizer.d.ts.map