import { type SessionProtocolInitializeParams, type SessionProtocolMethod, type SessionProtocolParamsByMethod, type SessionProtocolReadyMessage, type SessionProtocolResultByMethod } from "../protocol/session_protocol.js"; import type { SessionProtocolClientToolListener, SessionProtocolDeltaListener, SessionProtocolEphemeralListener, SessionProtocolFailureListener, SessionProtocolPendingUserMessagesListener, SessionProtocolSubagentActivitiesListener, SessionProtocolTransport } from "./session_transport.js"; type WebSocketEventName = "open" | "message" | "error" | "close"; type WebSocketLike = { readonly readyState: number; send(data: string): void; close(code?: number, reason?: string): void; addEventListener(type: WebSocketEventName, listener: (event: unknown) => void): void; removeEventListener(type: WebSocketEventName, listener: (event: unknown) => void): void; }; export type WebSocketSessionProtocolTransportOptions = { url: string; authToken?: string; webSocketFactory?: (url: string) => WebSocketLike; }; export declare class WebSocketSessionProtocolTransport implements SessionProtocolTransport { private readonly url; private readonly authToken?; private readonly webSocketFactory?; private readonly deltaListeners; private readonly ephemeralListeners; private readonly pendingUserMessagesListeners; private readonly subagentActivitiesListeners; private readonly clientToolListeners; private readonly failureListeners; private readonly pendingRequests; private readonly readyDeferred; private readonly openDeferred; private readonly closeDeferred; private socket?; private readyValue?; private connectPromise?; private closePromise?; private isConnected; private isClosed; private isSocketOpen; private fatalError?; constructor(options: WebSocketSessionProtocolTransportOptions); get ready(): SessionProtocolReadyMessage; connect(initializeParams: SessionProtocolInitializeParams, timeoutMs: number): Promise; private establishConnection; private createSocket; request(method: M, params: SessionProtocolParamsByMethod[M]): Promise; onDelta(listener: SessionProtocolDeltaListener): () => void; onEphemeral(listener: SessionProtocolEphemeralListener): () => void; onPendingUserMessages(listener: SessionProtocolPendingUserMessagesListener): () => void; onSubagentActivities(listener: SessionProtocolSubagentActivitiesListener): () => void; onClientTool(listener: SessionProtocolClientToolListener): () => void; onFailure(listener: SessionProtocolFailureListener): () => void; close(): Promise; private readonly handleOpen; private readonly handleMessage; private readonly handleError; private readonly handleClose; private handleSessionProtocolPayload; private failTransport; private rejectReadyIfPending; private removeSocketListeners; } export {};