/** * Batch Size Optimizer * Dynamically adjusts batch size based on scroll speed, network, and performance */ import { NetworkSpeedDetector } from './NetworkSpeedDetector'; import { DevicePerformanceMonitor } from './DevicePerformanceMonitor'; export interface BatchConfig { minBatchSize: number; maxBatchSize: number; baseBatchSize: number; scrollSpeedThreshold: number; } export interface BatchMetrics { currentBatchSize: number; scrollSpeed: number; networkQuality: 'excellent' | 'good' | 'poor' | 'offline'; performanceScore: number; avgRenderTime: number; } export declare class BatchSizeOptimizer { private config; private networkDetector; private performanceMonitor; private currentBatchSize; private scrollSpeedHistory; private renderTimeHistory; private readonly HISTORY_SIZE; constructor(config?: Partial, networkDetector?: NetworkSpeedDetector, performanceMonitor?: DevicePerformanceMonitor); /** * Calculate optimal batch size based on all factors */ calculateOptimalBatchSize(scrollSpeed: number): Promise; /** * Calculate multiplier based on scroll speed */ private calculateSpeedMultiplier; /** * Calculate multiplier based on network quality */ private calculateNetworkMultiplier; /** * Calculate multiplier based on device performance */ private calculatePerformanceMultiplier; /** * Track scroll speed for averaging */ private trackScrollSpeed; /** * Get average scroll speed */ private getAverageScrollSpeed; /** * Track render time for performance monitoring */ trackRenderTime(renderTime: number): void; /** * Get average render time */ getAverageRenderTime(): number; /** * Get current batch metrics */ getMetrics(): BatchMetrics; /** * Get current batch size */ getCurrentBatchSize(): number; /** * Reset optimizer */ reset(): void; /** * Get optimization statistics */ getStats(): { avgScrollSpeed: number; avgRenderTime: number; currentBatchSize: number; totalAdjustments: number; }; } export default BatchSizeOptimizer; //# sourceMappingURL=BatchSizeOptimizer.d.ts.map