/** Driver-neutral boundaries implemented by bridge, SSH, Pi RPC, and ACP layers. */ import type { RemoteInitializeParams, RemoteInitializeResult, RemoteProtocolNotification, RemoteRequestMethod, RemoteRequestParamsByMethod, RemoteResultByMethod, RemoteRunAttachParams, RemoteRunAttachResult, RemoteRunCancelParams, RemoteRunCancelResult, RemoteRunInputParams, RemoteRunInputResult, RemoteRunListResult, RemoteRunStartParams, RemoteRunStartResult, RemoteWindowListParams, RemoteWindowListResult, RemoteWindowObserveParams, RemoteWindowObserveResult, RemoteWindowReceiptParams, RemoteWindowReceiptResult, RemoteWindowSendParams, RemoteWindowSendResult } from "./protocol.ts"; import type { RemoteDriverId, RemoteRunCapture, RemoteRunEvent, RemoteRunSnapshot, RemoteStatus, ResolvedRemoteTarget, ResolvedRemoteWorkspace, RemoteWorkerIdentity } from "./types.ts"; export interface RemoteDriverContext extends RemoteWorkerIdentity { target: ResolvedRemoteTarget; signal: AbortSignal; } export interface RemoteRunHandle { readonly capture: RemoteRunCapture; snapshot(): RemoteRunSnapshot; events(): AsyncIterable; input(request: RemoteRunInputParams): Promise; cancel(request: RemoteRunCancelParams): Promise; close(): Promise; } export interface RemoteDriver { readonly id: RemoteDriverId; start(request: RemoteRunStartParams, context: RemoteDriverContext): Promise; close(): Promise; } export interface RemoteConnection { readonly status: RemoteStatus; readonly identity?: RemoteWorkerIdentity; initialize(params: RemoteInitializeParams): Promise; request(method: Method, params: RemoteRequestParamsByMethod[Method]): Promise; start(params: RemoteRunStartParams): Promise; attach(params: RemoteRunAttachParams): Promise; input(params: RemoteRunInputParams): Promise; cancel(params: RemoteRunCancelParams): Promise; list(commandId: string, monitorOwnerNonce: string): Promise; windowList?(params: RemoteWindowListParams): Promise; windowObserve?(params: RemoteWindowObserveParams): Promise; windowSend?(params: RemoteWindowSendParams): Promise; windowReceipt?(params: RemoteWindowReceiptParams): Promise; notifications(): AsyncIterable; close(): Promise; } export interface RemoteConnectionFactory { connect(target: ResolvedRemoteTarget, signal?: AbortSignal): Promise; /** Optional for factories that support explicit configured workspace routes. */ connectWorkspace?(workspace: ResolvedRemoteWorkspace, signal?: AbortSignal): Promise; }