/**
 * BrowserActions — thin, typed wrapper over playwright-core Page actions.
 *
 * Every action accepts a `Target`:
 *   - `{ index: number }` -> resolved via `data-avis-idx="<n>"` (set by observePage)
 *   - `{ selector: string }` -> raw CSS selector
 *
 * Actions are intentionally dumb — no LLM, no planning. The agent layer (v2)
 * will plan actions on top of these primitives.
 */
import type { BrowserContext, Page } from "playwright-core";
export type Target = {
    index: number;
} | {
    selector: string;
};
export declare class BrowserActions {
    private readonly getPage;
    private readonly getContext;
    constructor(getPage: () => Page, getContext: () => BrowserContext);
    click(target: Target, opts?: {
        button?: "left" | "right" | "middle";
        dblclick?: boolean;
    }): Promise<string>;
    hover(target: Target): Promise<string>;
    type(target: Target, text: string, opts?: {
        clear?: boolean;
        submit?: boolean;
    }): Promise<string>;
    select(target: Target, optionText: string): Promise<string>;
    press(keys: string): Promise<string>;
    scroll(opts: {
        direction?: "up" | "down" | "top" | "bottom";
        pixels?: number;
    }): Promise<string>;
    scrollIntoView(target: Target): Promise<string>;
    listTabs(): Promise<Array<{
        id: number;
        url: string;
        title: string;
        active: boolean;
    }>>;
    /** Returns the new Page; caller decides whether to promote it to active. */
    openTab(url?: string): Promise<Page>;
    closeTab(id: number): Promise<string>;
    switchTab(id: number): Promise<Page>;
}
//# sourceMappingURL=browser-actions.d.ts.map