import { Page, BrowserContext, PageScreenshotOptions } from "playwright";
import { WebAction } from '@/web/types';
import { ActionVisualizer } from "./visualizer";
import { TabState } from "./tabs";
import { Image } from '@/memory/image';
export interface WebHarnessOptions {
    virtualScreenDimensions?: {
        width: number;
        height: number;
    };
}
export declare class WebHarness {
    /**
     * Executes web actions on a page
     * Not responsible for browser lifecycle
     */
    readonly context: BrowserContext;
    private options;
    private stability;
    readonly visualizer: ActionVisualizer;
    private transformer;
    private tabs;
    constructor(context: BrowserContext, options?: WebHarnessOptions);
    retrieveTabState(): Promise<TabState>;
    start(): Promise<void>;
    get page(): Page;
    screenshot(options?: PageScreenshotOptions): Promise<Image>;
    _type(content: string): Promise<void>;
    transformCoordinates({ x, y }: {
        x: number;
        y: number;
    }): {
        x: number;
        y: number;
    };
    click({ x, y }: {
        x: number;
        y: number;
    }): Promise<void>;
    rightClick({ x, y }: {
        x: number;
        y: number;
    }): Promise<void>;
    doubleClick({ x, y }: {
        x: number;
        y: number;
    }): Promise<void>;
    drag({ x1, y1, x2, y2 }: {
        x1: number;
        y1: number;
        x2: number;
        y2: number;
    }): Promise<void>;
    type({ content }: {
        content: string;
    }): Promise<void>;
    clickAndType({ x, y, content }: {
        x: number;
        y: number;
        content: string;
    }): Promise<void>;
    scroll({ x, y, deltaX, deltaY }: {
        x: number;
        y: number;
        deltaX: number;
        deltaY: number;
    }): Promise<void>;
    switchTab({ index }: {
        index: number;
    }): Promise<void>;
    newTab(): Promise<void>;
    navigate(url: string): Promise<void>;
    selectAll(): Promise<void>;
    enter(): Promise<void>;
    backspace(): Promise<void>;
    tab(): Promise<void>;
    goBack(): Promise<void>;
    executeAction(action: WebAction): Promise<void>;
    waitForStability(timeout?: number): Promise<void>;
}
