import type { Page } from "@playwright/test";
/**
 * Shape of actions returned by OpenAI's Responses API `computer` tool.
 * Keep this loose — the Responses API ships new action variants over time, and
 * we prefer to log-and-skip unknowns rather than fail the whole step.
 */
export type ComputerAction = {
    type: "click";
    x: number;
    y: number;
    button?: "left" | "right" | "middle";
    keys?: string[];
} | {
    type: "double_click";
    x: number;
    y: number;
    button?: "left" | "right" | "middle";
} | {
    type: "move";
    x: number;
    y: number;
} | {
    type: "scroll";
    x: number;
    y: number;
    scrollX?: number;
    scrollY?: number;
} | {
    type: "drag";
    path: Array<[number, number] | {
        x: number;
        y: number;
    }>;
} | {
    type: "type";
    text: string;
} | {
    type: "keypress";
    keys: string[];
} | {
    type: "screenshot";
} | {
    type: "wait";
} | {
    type: "goto";
    url: string;
} | {
    type: string;
    [k: string]: unknown;
};
/**
 * Maps OpenAI CUA key names to Playwright key names.
 * OpenAI uses uppercase words ("ENTER", "CTRL", "META"); Playwright expects
 * casing like "Enter", "Control", "Meta". Anything not in this map falls
 * through unchanged — single characters ("a", "1") already work in Playwright.
 */
export declare const KEY_NAME_MAP: Record<string, string>;
export declare function mapKey(key: string): string;
/**
 * Executes a single CUA action via Playwright's low-level mouse/keyboard APIs.
 * Unknown action types are logged and skipped so a new OpenAI action variant
 * doesn't crash an entire test run.
 */
export declare function executeAction(page: Page, action: ComputerAction): Promise<void>;
