import type { WebSocket } from "ws"; import { ComputerControl } from "./computer-control.js"; import { InputDispatcher } from "./input-dispatcher.js"; import { PermissionManager } from "./permission-manager.js"; import { ScreenCapture } from "./screen-capture.js"; import type { InputMessage, RemoteDesktopCapability, ScreenInfo, StartResult, CaptureFrame } from "./types.js"; export declare class RemoteDesktopSession { static readonly FOCUS_POLL_INTERVAL_MS = 1000; id: string; agentId: string; permissions: Set; screenCapture: ScreenCapture; inputDispatcher: InputDispatcher | null; computerControl: ComputerControl; state: "active" | "closed" | "error"; ws: WebSocket | null; private inputBackend; private onFrame; private focusPollTimer; private lastFocusState; private inputChain; constructor(id: string, agentId: string, permissions: Set); init(): Promise<{ screens: ScreenInfo[]; }>; switchScreen(screenId: string | null): Promise; startInputBackend(): void; enableControl(): Promise; stopInputBackend(): void; private startFocusPolling; private stopFocusPolling; private sendFocusState; attachWebSocket(ws: WebSocket): void; startFrameLoop(onFrame: (frame: CaptureFrame) => boolean | void): void; stopFrameLoop(): void; handleInput(message: InputMessage): Promise; close(): void; } export declare class SessionManager { private sessions; private agentSessions; private permissionManager; constructor(permissionManager: PermissionManager); createSession(agentId: string, token: string): Promise; getSession(sessionId: string): RemoteDesktopSession | undefined; handleInput(sessionId: string, message: InputMessage): Promise; closeSession(sessionId: string): void; closeAll(): void; }