/** * Extension browser provider — connects to the xopc Chrome Extension via WebSocket. * * The xopc process starts a WebSocket server; the Chrome Extension connects as a client. * Commands are sent over the WS connection and results are returned asynchronously. */ import { type BrowserActionInput, type BrowserWireResult } from '@xopcai/browser-control-contract'; export interface ExtensionProviderConfig { /** WebSocket server port. Default: 19820. */ port?: number; /** Host to bind. Default: 127.0.0.1. */ host?: string; /** Timeout waiting for extension connection (ms). Default: 30000. */ connectionTimeout?: number; /** Default command timeout (ms). Default: 30000. */ commandTimeout?: number; } /** * Manages a WebSocket server that the Chrome Extension connects to. * Sends commands and receives results over the connection. */ export declare class ExtensionBrowserProvider { readonly name = "extension"; private server; private wss; private clientWs; private pending; private commandCounter; private socketConnected; private handshakeReceived; private connected; private extensionProtocolVersion; private extensionVersion; private readonly config; private connectionWaiters; constructor(config?: ExtensionProviderConfig); /** Start the WebSocket server and wait for the extension to connect. */ start(): Promise; /** Wait for the Chrome Extension to connect. */ waitForConnection(timeoutMs?: number): Promise; /** Send one Browser Control v2 action to the extension. */ send(input: BrowserActionInput, timeoutMs?: number, visualFallback?: boolean): Promise; /** Whether the extension is currently connected. */ isConnected(): boolean; getConnectionStatus(): { socketConnected: boolean; connected: boolean; protocolVersion: number | null; expectedProtocolVersion: number; extensionVersion: string | null; }; private protocolMismatchMessage; /** Shutdown the WebSocket server. */ shutdown(): Promise; private _handleMessage; } export declare function isBrowserWireResult(value: unknown): value is BrowserWireResult;