/**
 * Bun.WebView engine for open-testers — native zero-dep browser using WKWebView (macOS)
 * or Chrome CDP (Windows/Linux). Available in Bun canary; stable in ~v1.4.0.
 *
 * ~11x faster and ~9x less memory than Playwright/Chrome.
 * Playwright-compatible API so it slots into the existing runner with no changes.
 *
 * Limitations vs Playwright: no fullPage screenshots, no multi-tab, no file upload,
 * no network interception, no PDF generation.
 *
 * Usage: import { isBunWebViewAvailable, BunWebViewSession } from './browser-bun.js'
 */
export declare function isBunWebViewAvailable(): boolean;
interface NativeBunWebView {
    navigate(url: string): Promise<void>;
    evaluate(expr: string): Promise<unknown>;
    screenshot(): Promise<Uint8Array>;
    click(selector: string, opts?: {
        button?: "left" | "right" | "middle";
    }): Promise<void>;
    type(text: string): Promise<void>;
    press(key: string, opts?: {
        modifiers?: string[];
    }): Promise<void>;
    scroll(dx: number, dy: number): Promise<void>;
    scrollTo(selector: string, opts?: unknown): Promise<void>;
    resize(width: number, height: number): Promise<void>;
    goBack(): Promise<void>;
    goForward(): Promise<void>;
    reload(): Promise<void>;
    close(): Promise<void>;
    url: string;
    title: string;
    loading: boolean;
    onNavigated: ((url: string) => void) | null;
    onNavigationFailed: ((error: Error) => void) | null;
    [Symbol.asyncDispose]: () => Promise<void>;
}
export interface BunWebViewOptions {
    width?: number;
    height?: number;
    profile?: string;
    headless?: boolean;
    userAgent?: string;
    onConsole?: (type: string, ...args: unknown[]) => void;
}
export declare class BunWebViewSession {
    private view;
    private _sessionId?;
    private _eventListeners;
    constructor(opts?: BunWebViewOptions);
    goto(url: string, _opts?: {
        waitUntil?: string;
        timeout?: number;
    }): Promise<void>;
    goBack(): Promise<void>;
    goForward(): Promise<void>;
    reload(): Promise<void>;
    evaluate<T = unknown>(fnOrExpr: string | ((...args: unknown[]) => unknown), ...args: unknown[]): Promise<T>;
    screenshot(_opts?: {
        path?: string;
        type?: string;
        fullPage?: boolean;
        quality?: number;
    }): Promise<Buffer>;
    click(selector: string, opts?: {
        button?: "left" | "right" | "middle";
        timeout?: number;
    }): Promise<void>;
    type(selector: string, text: string, _opts?: {
        delay?: number;
    }): Promise<void>;
    fill(selector: string, value: string): Promise<void>;
    press(key: string, opts?: {
        modifiers?: string[];
    }): Promise<void>;
    scroll(direction: string, amount: number): Promise<void>;
    scrollIntoView(selector: string): Promise<void>;
    hover(selector: string): Promise<void>;
    resize(width: number, height: number): Promise<void>;
    $(selector: string): Promise<{
        textContent(): Promise<string | null>;
    } | null>;
    $$(selector: string): Promise<Array<{
        textContent(): Promise<string | null>;
    }>>;
    inputValue(selector: string): Promise<string>;
    isChecked(selector: string): Promise<boolean>;
    isVisible(selector: string): Promise<boolean>;
    isEnabled(selector: string): Promise<boolean>;
    selectOption(selector: string, value: string): Promise<string[]>;
    check(selector: string): Promise<void>;
    uncheck(selector: string): Promise<void>;
    setInputFiles(_selector: string, _files: string | string[]): Promise<void>;
    getByRole(role: string, opts?: {
        name?: string | RegExp;
    }): any;
    getByText(text: string, _opts?: {
        exact?: boolean;
    }): any;
    locator(selector: string): any;
    url(): string;
    title(): Promise<string>;
    viewportSize(): {
        width: number;
        height: number;
    } | null;
    waitForLoadState(_state?: string, _opts?: {
        timeout?: number;
    }): Promise<void>;
    waitForURL(pattern: string | RegExp, opts?: {
        timeout?: number;
    }): Promise<void>;
    waitForSelector(selector: string, opts?: {
        state?: string;
        timeout?: number;
    }): Promise<void>;
    setContent(html: string): Promise<void>;
    content(): Promise<string>;
    addInitScript(script: string | (() => void)): Promise<void>;
    keyboard: {
        press: (key: string) => Promise<void>;
    };
    context(): {
        close: () => Promise<void>;
        newPage: () => Promise<never>;
        cookies: () => Promise<never[]>;
        addCookies: (_: unknown) => Promise<void>;
        clearCookies: () => Promise<void>;
        newCDPSession: () => Promise<never>;
        route: (_pattern: unknown, _handler: unknown) => Promise<never>;
        unrouteAll: () => Promise<void>;
        pages: () => never[];
        addInitScript: (script: string) => Promise<void>;
    };
    on(event: string, handler: (...args: unknown[]) => void): this;
    off(event: string, handler: (...args: unknown[]) => void): this;
    private _emit;
    pdf(_opts?: unknown): Promise<Buffer>;
    coverage: {
        startJSCoverage: () => Promise<void>;
        stopJSCoverage: () => Promise<never[]>;
        startCSSCoverage: () => Promise<void>;
        stopCSSCoverage: () => Promise<never[]>;
    };
    setSessionId(id: string): void;
    getSessionId(): string | undefined;
    getNativeView(): NativeBunWebView;
    close(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
}
export {};
//# sourceMappingURL=browser-bun.d.ts.map