/**
 * Browser Pool Manager for optimized resource usage and performance
 */
import { Browser, BrowserContext } from 'playwright';
export interface BrowserPoolOptions {
    maxConcurrent: number;
    maxIdleTime: number;
    browserType: 'chromium' | 'firefox' | 'webkit';
    launchOptions?: any;
    enableResourceOptimization: boolean;
}
export interface PooledBrowser {
    browser: Browser;
    context: BrowserContext;
    lastUsed: number;
    inUse: boolean;
    id: string;
}
export declare class BrowserPoolManager {
    private pool;
    private queue;
    private options;
    private cleanupInterval;
    private metrics;
    constructor(options?: Partial<BrowserPoolOptions>);
    /**
     * Get a browser instance from the pool
     */
    acquire(): Promise<{
        browser: Browser;
        context: BrowserContext;
        release: () => Promise<void>;
    }>;
    /**
     * Find an available browser in the pool
     */
    private findAvailableBrowser;
    /**
     * Wait for an available browser
     */
    private waitForAvailableBrowser;
    /**
     * Create a new browser instance
     */
    private createBrowser;
    /**
     * Start cleanup interval to remove idle browsers
     */
    private startCleanup;
    /**
     * Clean up idle browsers
     */
    private cleanup;
    /**
     * Destroy a specific browser
     */
    private destroyBrowser;
    /**
     * Get pool metrics
     */
    getMetrics(): {
        poolSize: number;
        queueLength: number;
        efficiency: number;
        created: number;
        reused: number;
        destroyed: number;
        errors: number;
        activeConnections: number;
        totalRequests: number;
    };
    /**
     * Warm up the pool by creating initial browsers
     */
    warmUp(count?: number): Promise<void>;
    /**
     * Gracefully shutdown all browsers
     */
    shutdown(): Promise<void>;
    /**
     * Get pool status
     */
    getStatus(): {
        totalBrowsers: number;
        activeBrowsers: number;
        idleBrowsers: number;
        queueLength: number;
        metrics: {
            poolSize: number;
            queueLength: number;
            efficiency: number;
            created: number;
            reused: number;
            destroyed: number;
            errors: number;
            activeConnections: number;
            totalRequests: number;
        };
    };
}
export default BrowserPoolManager;
//# sourceMappingURL=browser-pool-manager.d.ts.map