/** * Mouse event construction utilities. */ import type { Modifier } from './keyboard.js'; export type MouseButton = 'left' | 'right' | 'middle'; export interface MouseEventOptions { button?: MouseButton; clickCount?: number; modifiers?: number; } /** * Options for click operations */ export interface ClickOptions { button?: MouseButton; clickCount?: number; delay?: number; modifiers?: Modifier[]; } /** * Mouse event init data returned by state methods */ export interface MouseEventData { clientX: number; clientY: number; screenX: number; screenY: number; button: number; buttons: number; detail: number; ctrlKey: boolean; altKey: boolean; shiftKey: boolean; metaKey: boolean; } /** * Wheel event init data */ export interface WheelEventData extends MouseEventData { deltaX: number; deltaY: number; deltaMode: number; } /** * Stateful mouse that tracks position and button state. * Ports Playwright's mouse state management pattern. */ export declare class MouseState { private x; private y; private buttons; private modifiers; /** * Get current mouse position. */ getPosition(): { x: number; y: number; }; /** * Set the current modifiers (for keyboard integration). */ setModifiers(modifiers: Set): void; /** * Move mouse to coordinates, optionally with interpolation steps. * Returns array of move events (one per step). */ move(x: number, y: number, steps?: number): MouseEventData[]; /** * Press a mouse button down. */ down(button?: MouseButton): MouseEventData; /** * Release a mouse button. */ up(button?: MouseButton): MouseEventData; /** * Click at coordinates (move + down + up + click event). * Returns all event data. */ click(x: number, y: number, options?: ClickOptions): { move: MouseEventData[]; down: MouseEventData; up: MouseEventData; click: MouseEventData; }; /** * Double-click at coordinates. */ doubleClick(x: number, y: number, options?: ClickOptions): MouseEventData[]; /** * Right-click at coordinates. */ contextClick(x: number, y: number): MouseEventData[]; /** * Check if a button is currently pressed. */ isButtonPressed(button: MouseButton): boolean; /** * Get the current buttons mask (bitfield). * left: 1, right: 2, middle: 4 */ getButtonsMask(): number; /** * Wheel scroll at current position. */ wheel(deltaX: number, deltaY: number): WheelEventData; /** * Reset all state (move to 0,0, release all buttons). */ reset(): void; /** * Create mouse event data. */ private createEventData; } /** * Create a mouse event with the given options. */ export declare function createMouseEvent(type: string, x: number, y: number, options?: MouseEventOptions): MouseEvent; /** * Dispatch a click at coordinates. */ export declare function dispatchClickAt(x: number, y: number, options?: MouseEventOptions): boolean; /** * Dispatch a click on an element by ref. */ export declare function dispatchClickByRef(ref: string, options?: MouseEventOptions): boolean; /** * Dispatch a double click at coordinates. */ export declare function dispatchDoubleClickAt(x: number, y: number, options?: MouseEventOptions): boolean; /** * Dispatch a right click at coordinates. */ export declare function dispatchRightClickAt(x: number, y: number, options?: MouseEventOptions): boolean; /** * Dispatch mouse move to coordinates. */ export declare function dispatchMouseMove(x: number, y: number, modifiers?: number): void; /** * Dispatch mouse hover on an element (mouseenter + mouseover). */ export declare function dispatchHoverAt(x: number, y: number): boolean; /** * Dispatch a drag operation from source to target coordinates. */ export declare function dispatchDrag(startX: number, startY: number, endX: number, endY: number, steps?: number): boolean; /** * Create a wheel event for scrolling. */ export declare function createWheelEvent(x: number, y: number, deltaX: number, deltaY: number): WheelEvent; /** * Dispatch a scroll at coordinates. */ export declare function dispatchScroll(x: number, y: number, deltaX: number, deltaY: number): boolean; //# sourceMappingURL=mouse.d.ts.map