import type { ScreenInfo, DesktopWindowInfo, OpenWithApp, DesktopFileEntry, UIElement, FlatNode } from "./types.js"; export interface WindowTarget { hwnd?: string; title?: string; pid?: number; } export interface WindowRectPatch { x?: number; y?: number; width?: number; height?: number; } export interface FullResScreenshot { jpeg: Buffer; width: number; height: number; screen: ScreenInfo; } export interface UIElementTreeResult { elements: UIElement[]; flatNodes: FlatNode[]; } export interface ComputerUseBackend { readonly platform: "windows" | "macos" | "linux"; readonly viaSidecar: boolean; startPersistentProcess(): void; listScreens(): Promise; captureFullResJpeg(screenId?: string): Promise; setActiveScreen(screen: ScreenInfo): void; getScreenSize(): { width: number; height: number; }; moveMouse(x: number, y: number): Promise; click(x: number, y: number, button?: "left" | "right"): Promise; clickOs(x: number, y: number, button?: "left" | "right"): Promise; doubleClick(x: number, y: number): Promise; mouseDown(button?: "left" | "right"): Promise; mouseUp(button?: "left" | "right"): Promise; scroll(direction: "up" | "down" | "left" | "right", amount: number): Promise; type(text: string): Promise; keyPress(keys: string[]): Promise; keyDown(key: string): Promise; keyUp(key: string): Promise; drag(fromX: number, fromY: number, toX: number, toY: number, button?: "left" | "right"): Promise; getClipboard(): Promise; setClipboard(text: string): Promise; listWindows(): Promise; activateWindow(target: WindowTarget): Promise<{ ok: boolean; hwnd: string; title?: string; }>; setWindowRect(target: WindowTarget, rect: WindowRectPatch): Promise<{ ok: boolean; hwnd: string; }>; minimizeWindow(target: WindowTarget): Promise<{ ok: boolean; }>; maximizeWindow(target: WindowTarget): Promise<{ ok: boolean; }>; restoreWindow(target: WindowTarget): Promise<{ ok: boolean; }>; getZOrder(): Promise; getForeground(): Promise; launchApp(command: string): Promise<{ ok: boolean; pid?: number; }>; openFile(filePath: string, app?: string): Promise<{ ok: boolean; app?: string; }>; listOpenWith(filePath: string): Promise; listDir(path: string, opts?: { includeHidden?: boolean; }): Promise<{ path: string; entries: DesktopFileEntry[]; }>; listProcesses(): Promise>; getUIElementsTree(pid: number): Promise; traverseNodes(pid: number): Promise; findElementsByName(pid: number, text: string, role?: string): Promise; findEditableByName(pid: number, text: string): Promise; findElementBounds(pid: number, path: string): Promise<{ x: number; y: number; width: number; height: number; } | null>; findElementByFingerprint(pid: number, fingerprint: string): Promise; invalidateCache(pid?: number): void; }