import { ResponseStreamError } from './response-stream-error'; export declare const PROTOCOL_HEADER = "responses_websockets=2026-02-06"; export interface ConnectResponsesWebSocketOptions { url: string; headers: Record; timeout?: number; /** Use the hand-rolled raw TCP/TLS WebSocket client instead of native WebSocket. */ rawWebSocket?: boolean; signal?: AbortSignal; } export interface StreamResponsesWebSocketOptions { socket: WebSocket; body: Record; sessionID?: string; idleTimeout?: number; signal?: AbortSignal; onFirstEvent?: (error?: WrappedError) => void; /** * Fires on response.completed/response.done. `finalizedFunctionCallIds` is the * set of function/custom tool call ids the response actually finalized (emitted * a response.output_item.done for). The pool uses it to decide which suffix * function_call items are safe to trim from a continuation: only those present * in the chained response may be dropped — an unfinalized call (e.g. an aborted * partial) must be kept inline or its function_call_output orphans → 400. */ onComplete?: (event: Record, finalizedFunctionCallIds: Set) => void; onTerminal?: (event: Record) => void; onRetryableTerminal?: (event: Record) => Promise; onConnectionInvalid?: (error: ResponseStreamError) => void; onAbort?: (error: Error) => void; /** Push per-turn quota from a codex.rate_limits in-band frame. */ onQuota?: (s: Record) => void; /** Called when the transport reports quota exhaustion for the current connection. */ onRateLimitReached?: (window: string, resetAt?: number) => void; } export interface WrappedError { status: number; headers?: Record; body: string; } export declare function toWebSocketUrl(url: string): string; export declare function normalizeHeaders(headers: HeadersInit | undefined): Record; export declare function isAbortError(error: unknown): error is DOMException; export declare function isUpgradeFailure(error: unknown): boolean; export declare function connectResponsesWebSocket(options: ConnectResponsesWebSocketOptions): Promise; export declare function streamResponsesWebSocket(options: StreamResponsesWebSocketOptions): Response; export declare function parseRateLimitSignal(value: unknown): { window: string; resetAt?: number; } | undefined; export * as OpenAIWebSocket from './ws';