import { type BrowserFrame, type BrowserFrameStreamOptions, type BrowserSessionAttachment } from "@opengeni/sdk/interaction"; import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js"; export type BrowserFrameConnectionState = "idle" | "attaching" | "connecting" | "live" | "reconnecting" | "error"; export type BrowserFrameWebSocket = Pick & { send(data: ArrayBuffer): void; }; export type BrowserFrameWebSocketFactory = (url: string, protocols: string[]) => BrowserFrameWebSocket; export type UseBrowserFrameStreamOptions = EmbeddedBrowserInteractionClientOverride & { browserSessionId: string | null; targetId: string | null; enabled?: boolean | undefined; stream?: BrowserFrameStreamOptions | undefined; webSocketFactory?: BrowserFrameWebSocketFactory | undefined; }; export type UseBrowserFrameStreamResult = { state: BrowserFrameConnectionState; frame: BrowserFrame | null; attachment: Pick | null; error: Error | null; reconnect: () => void; }; /** * Reconnecting, latest-only BrowserSession media attachment. Direct placement * grants travel as a WebSocket subprotocol; connected-machine grants stay in the * relay's first authenticated binary message. Neither transport puts a grant in * a URL, event, log, or separately exposed React state. */ export declare function useBrowserFrameStream(options: UseBrowserFrameStreamOptions): UseBrowserFrameStreamResult;