import { EventEmitter } from 'events';
import { BrowserMetrics, BrowserPoolConfig, ManagedBrowserInstance } from '../types';
/**
 * Browser pool manager that handles browser instance lifecycle and resource monitoring
 */
export declare class BrowserPool extends EventEmitter {
    private instances;
    private availableInstances;
    private config;
    private resourceMonitorInterval?;
    private isShuttingDown;
    private errorRecovery;
    private metricsHistory;
    constructor(config: BrowserPoolConfig);
    /**
     * Initialize the browser pool with minimum instances
     */
    initialize(): Promise<void>;
    /**
     * Acquire a browser instance from the pool
     */
    acquireInstance(): Promise<ManagedBrowserInstance>;
    /**
     * Release a browser instance back to the pool
     */
    releaseInstance(instanceId: string): Promise<void>;
    /**
     * Get current metrics for all browser instances (including recently disconnected)
     */
    getMetrics(): BrowserMetrics[];
    /**
     * Get pool status information
     */
    getPoolStatus(): {
        totalInstances: number;
        availableInstances: number;
        activeInstances: number;
        maxInstances: number;
        resourceLimits: import("../types").ResourceLimits;
    };
    /**
     * Shutdown the browser pool and cleanup all instances
     */
    shutdown(): Promise<void>;
    /**
     * Get error recovery statistics
     */
    getErrorRecoveryStats(): {
        totalInstances: number;
        failingInstances: number;
        blacklistedInstances: number;
        openCircuitBreakers: number;
        halfOpenCircuitBreakers: number;
        totalFailures: number;
        totalRestarts: number;
    };
    /**
     * Setup error recovery event handlers
     */
    private setupErrorRecoveryEvents;
    /**
     * Create a new browser instance
     */
    private createBrowserInstance;
    /**
     * Destroy a browser instance and clean up resources
     */
    private destroyInstance;
    /**
     * Handle browser disconnect events
     */
    private handleBrowserDisconnect;
    /**
     * Ensure the pool maintains minimum instance count
     */
    private ensureMinimumPoolSize;
    /**
     * Attempt to restart a failed browser instance
     */
    private attemptInstanceRestart;
    /**
     * Start monitoring resource usage of browser instances
     */
    private startResourceMonitoring;
    /**
     * Update resource metrics for all browser instances
     */
    private updateResourceMetrics;
    /**
     * Get memory usage for a browser instance
     */
    private getBrowserMemoryUsage;
    /**
     * Enforce resource limits by destroying instances that exceed limits
     */
    private enforceResourceLimits;
    /**
     * Perform comprehensive memory cleanup on browser instance
     */
    private performMemoryCleanup;
    /**
     * Perform aggressive memory cleanup for instances approaching limits
     */
    private performAggressiveMemoryCleanup;
    /**
     * Get detailed resource usage statistics
     */
    getResourceUsageStats(): {
        totalInstances: number;
        activeInstances: number;
        totalMemoryUsage: number;
        averageMemoryUsage: number;
        totalCpuUsage: number;
        averageCpuUsage: number;
        memoryUtilization: number;
        cpuUtilization: number;
        instancesNearMemoryLimit: number;
        instancesNearCpuLimit: number;
        resourceLimits: import("../types").ResourceLimits;
    };
    /**
     * Force cleanup of idle instances to free resources
     */
    cleanupIdleInstances(maxIdleTime?: number): Promise<number>;
    /**
     * Initialize localStorage for all configured domains
     */
    private initializeLocalStorage;
}
//# sourceMappingURL=browser-pool.d.ts.map