import { Browser, BrowserContext, Page } from 'playwright';
export interface WorkerPoolOptions {
    maxWorkers?: number;
    browserType?: 'chromium' | 'firefox' | 'webkit';
    headless?: boolean;
    timeout?: number;
    viewport?: {
        width: number;
        height: number;
    };
    userAgent?: string;
    enableResourceMonitoring?: boolean;
    maxMemoryUsage?: number;
    maxCpuUsage?: number;
}
export interface Worker {
    id: number;
    browser: Browser;
    context: BrowserContext;
    page: Page;
    isBusy: boolean;
    currentUrl?: string;
    startTime?: Date;
    memoryUsage: number;
    cpuUsage: number;
}
export interface WorkerStats {
    totalWorkers: number;
    busyWorkers: number;
    idleWorkers: number;
    averageMemoryUsage: number;
    averageCpuUsage: number;
    totalMemoryUsage: number;
    totalCpuUsage: number;
}
export declare class WorkerPool {
    private workers;
    private options;
    private isInitialized;
    private workerIdCounter;
    constructor(options?: WorkerPoolOptions);
    initialize(): Promise<void>;
    private createBrowser;
    private createWorker;
    getAvailableWorker(): Promise<Worker | null>;
    releaseWorker(worker: Worker): Promise<void>;
    executeTask<T>(task: (worker: Worker) => Promise<T>, url?: string): Promise<T>;
    private monitorResources;
    getStats(): WorkerStats;
    getWorkerById(id: number): Worker | undefined;
    getBusyWorkers(): Worker[];
    getIdleWorkers(): Worker[];
    resizePool(newSize: number): Promise<void>;
    private destroyWorker;
    cleanup(): Promise<void>;
    getInitializationStatus(): boolean;
    getMaxWorkers(): number;
    setMaxWorkers(max: number): void;
}
//# sourceMappingURL=worker-pool.d.ts.map