import type { Page } from 'playwright'; export interface BezierMoveOptions { /** Total duration in milliseconds. Default: proportional to distance + pace. */ durationMs?: number; /** Number of intermediate points. Default: derived from durationMs (one step per 16ms). */ steps?: number; /** * Pace profile when `durationMs` is not explicit. AUT-57 video demos use * `'natural'` for deliberate, human-readable cursor motion; the default * `'fast'` keeps short clip GIFs snappy. * * Both profiles use the same √distance · factor formula but different * (min, max, factor) tuples — see `paceProfile`. */ pace?: BezierMovePace; } export type BezierMovePace = 'fast' | 'natural'; /** * Move the mouse from `from` to `to` along a cubic Bezier curve with * smooth controlled motion: ease-in-out timing, gentle proportional curves. */ export declare function moveMouse(page: Page, from: { x: number; y: number; }, to: { x: number; y: number; }, options?: BezierMoveOptions): Promise; /** * Move the mouse to `target` with Bezier curve animation and click. * * @param fromCurrent - Optional current mouse position. If omitted, the click * is performed at `target` without a preceding Bezier move (first action). */ export declare function animatedClick(page: Page, target: { x: number; y: number; }, fromCurrent?: { x: number; y: number; }, options?: BezierMoveOptions): Promise; /** * Move the mouse to `target` (for hover/highlight actions) without clicking. */ export declare function animatedHover(page: Page, target: { x: number; y: number; }, fromCurrent?: { x: number; y: number; }, options?: BezierMoveOptions): Promise; /** * Type text into the currently focused element at a human-like typing speed. * Assumes the field is already focused (via a preceding click). * * `onKeystroke` fires after each character with the absolute wall-clock * timestamp (`Date.now()`) of the keystroke. The video pipeline converts * these to clip-relative offsets so keyboard SFX fire in lock-step with the * visible typing. */ export declare function humanType(page: Page, text: string, options?: { minDelayMs?: number; maxDelayMs?: number; onKeystroke?: (timestampMs: number) => void; }): Promise;