// Shared types for usecomputer command parsing and backend bridge calls. export type MouseButton = 'left' | 'right' | 'middle' export type ScrollDirection = 'up' | 'down' | 'left' | 'right' export type Point = { x: number y: number } export type Region = { x: number y: number width: number height: number } export type CoordMap = { captureX: number captureY: number captureWidth: number captureHeight: number imageWidth: number imageHeight: number } export type DisplayInfo = { id: number index: number name: string x: number y: number width: number height: number scale: number isPrimary: boolean } export type WindowInfo = { id: number ownerPid: number ownerName: string title: string x: number y: number width: number height: number desktopIndex: number } export type ScreenshotInput = { path?: string display?: number window?: number region?: Region annotate?: boolean } export type ScreenshotResult = { path: string desktopIndex: number captureX: number captureY: number captureWidth: number captureHeight: number imageWidth: number imageHeight: number coordMap: string hint: string } export type ClickInput = { point: Point button: MouseButton count: number modifiers: string[] } export type TypeInput = { text: string delayMs?: number } export type PressInput = { key: string count: number delayMs?: number } export type ScrollInput = { direction: ScrollDirection amount: number at?: Point } export type DragInput = { from: Point to: Point cp?: Point button: MouseButton } export type NativeErrorObject = { code: string message: string command: string } export type NativeCommandResult = { ok: boolean error?: NativeErrorObject } export type NativeDataResult = { ok: boolean data?: T error?: NativeErrorObject } export interface UseComputerBridge { screenshot(input: ScreenshotInput): Promise click(input: ClickInput): Promise typeText(input: TypeInput): Promise press(input: PressInput): Promise scroll(input: ScrollInput): Promise drag(input: DragInput): Promise hover(input: Point): Promise mouseMove(input: Point): Promise mouseDown(input: { button: MouseButton }): Promise mouseUp(input: { button: MouseButton }): Promise mousePosition(): Promise displayList(): Promise windowList(): Promise }