import type { Subprocess } from "bun"; import type { Browser, CDPSession } from "puppeteer-core"; import { type UserAgentOverride } from "./launch"; export type BrowserKind = { kind: "headless"; headless: boolean; } | { kind: "spawned"; path: string; } | { kind: "connected"; cdpUrl: string; }; export type BrowserKindTag = BrowserKind["kind"]; export interface BrowserHandle { key: string; kind: BrowserKind; browser: Browser; cdpUrl?: string; pid?: number; subprocess?: Subprocess; refCount: number; stealth: { browserSession: CDPSession | null; override: UserAgentOverride | null; }; } export interface AcquireBrowserOptions { cwd: string; viewport?: { width: number; height: number; deviceScaleFactor?: number; }; appArgs?: string[]; signal?: AbortSignal; } export declare function acquireBrowser(kind: BrowserKind, opts: AcquireBrowserOptions): Promise; export declare function holdBrowser(handle: BrowserHandle): void; export declare function releaseBrowser(handle: BrowserHandle, opts: { kill: boolean; }): Promise;