import React from 'react';
import { ExtendedDeviceInfo } from './real-time-device-monitor';
export interface PerformanceConfig {
    enableVirtualization: boolean;
    enableLazyLoading: boolean;
    enableMemoryManagement: boolean;
    enableRAFOptimization: boolean;
    enableComputationThrottling: boolean;
    enableGarbageCollection: boolean;
    maxCacheSize: number;
    memoryThreshold: number;
    throttleMs: number;
    virtualScrollBuffer: number;
}
export interface PerformanceMetrics {
    renderTime: number;
    updateCount: number;
    memoryUsage: number;
    frameRate: number;
    cacheHitRatio: number;
    gcCount: number;
    timestamp: number;
}
declare class MemoryManager {
    private static instance;
    private cache;
    private maxSize;
    private accessOrder;
    constructor(maxSize?: number);
    static getInstance(maxSize?: number): MemoryManager;
    set(key: string, value: any): void;
    get(key: string): any;
    clear(): void;
    getStats(): {
        size: number;
        maxSize: number;
        usage: number;
    };
}
export declare const usePerformanceOptimizer: (config: Partial<PerformanceConfig>, deviceInfo: ExtendedDeviceInfo) => {
    metrics: PerformanceMetrics;
    measureRenderTime: () => void;
    recordRenderTime: () => void;
    throttledComputation: (computation: () => void, delay?: number) => void;
    cache: {
        get: (key: string) => any;
        set: (key: string, value: any) => void;
        clear: () => void;
    };
    memoryManager: MemoryManager;
    isOptimized: boolean;
};
interface PerformanceWrapperProps {
    children: React.ReactNode;
    config?: Partial<PerformanceConfig>;
    deviceInfo: ExtendedDeviceInfo;
    enableDebug?: boolean;
}
export declare const PerformanceWrapper: React.FC<PerformanceWrapperProps>;
interface VirtualizedListProps {
    items: any[];
    itemHeight: number;
    containerHeight: number;
    renderItem: (item: any, index: number) => React.ReactNode;
    overscan?: number;
}
export declare const VirtualizedList: React.FC<VirtualizedListProps>;
interface LazyComponentProps {
    loader: () => Promise<React.ComponentType<any>>;
    fallback?: React.ComponentType;
    threshold?: number;
}
export declare const LazyComponent: React.FC<LazyComponentProps>;
export default PerformanceWrapper;
//# sourceMappingURL=performance-optimizer.d.ts.map