import { type BrowserContext } from 'playwright';
import { type SelectionStrategy } from './browser-selector.js';
import type { RawFetchResult, BrowserType, BrowserAction } from '../types.js';
export interface BrowserFetchOptions {
    timeoutMs?: number;
    storageStatePath?: string;
    userDataDir?: string;
    headers?: Record<string, string>;
    screenshot?: boolean;
    actions?: BrowserAction[];
    cdpUrl?: string;
    browserType?: BrowserType;
}
export interface BrowserPoolOptions {
    browserType?: BrowserType;
}
export interface MultiBrowserPoolOptions {
    browserTypes?: BrowserType[];
    selectionStrategy?: SelectionStrategy;
}
export interface PoolTypeStat {
    type: BrowserType;
    activeCount: number;
    pooledCount: number;
}
export declare class MultiBrowserPool {
    private readonly pools;
    private readonly selector;
    private readonly configuredTypes;
    private shutdownCalled;
    constructor(options?: MultiBrowserPoolOptions);
    getConfiguredTypes(): BrowserType[];
    getStats(): PoolTypeStat[];
    protected resolveType(requested?: BrowserType, url?: string): BrowserType;
    private launchBrowser;
    protected acquireForType(type: BrowserType): Promise<BrowserContext>;
    protected releaseForType(type: BrowserType, ctx: BrowserContext): void;
    fetchWithBrowser(url: string, options?: BrowserFetchOptions): Promise<RawFetchResult>;
    shutdown(): Promise<void>;
}
export declare class BrowserPool extends MultiBrowserPool {
    private readonly singleType;
    constructor(options?: BrowserPoolOptions);
    acquire(): Promise<BrowserContext>;
    release(ctx: BrowserContext): void;
}
//# sourceMappingURL=browser-pool.d.ts.map