/** Low-level, reusable Realtime WebSocket client with optional automatic tools. */ import { EventEmitter } from "node:events"; import type { AuthInput } from "./auth.js"; import { type RealtimeModel } from "./config.js"; import { type RealtimeServerEvent } from "./socket.js"; import { type RealtimeSessionTool, type ToolCall, type ToolRegistry } from "./tools.js"; import type { ReasoningEffort, RealtimeSessionConfig } from "./session.js"; export interface RealtimeClientOptions { model?: RealtimeModel; auth?: AuthInput; url?: string; instructions?: string; audio?: boolean; voice?: string; turnDetection?: boolean; transcribeInput?: boolean; reasoningEffort?: ReasoningEffort; tools?: ToolRegistry; /** MCP servers/connectors (and advanced function definitions) executed by Realtime. */ sessionTools?: readonly RealtimeSessionTool[]; /** Execute registered tool calls and send their outputs automatically. */ autoExecuteTools?: boolean; session?: Partial; headers?: Record; connectTimeoutMs?: number; maxPayloadBytes?: number; safetyIdentifier?: string; /** Legacy beta header; GA users should leave this false. */ beta?: boolean; } export type ServerEvent = RealtimeServerEvent; export declare interface RealtimeClient { on(event: "open", listener: () => void): this; on(event: "session", listener: (session: unknown) => void): this; on(event: "text.delta", listener: (delta: string) => void): this; on(event: "audio.delta", listener: (pcm: Buffer) => void): this; on(event: "transcript.delta", listener: (delta: string, role: "assistant" | "user") => void): this; on(event: "speech.started" | "speech.stopped" | "response.created", listener: () => void): this; on(event: "response.done", listener: (response: unknown) => void): this; on(event: "response.cancelled", listener: () => void): this; on(event: "tool.call", listener: (call: ToolCall) => void): this; on(event: "tool.result", listener: (call: ToolCall, result: unknown) => void): this; on(event: "tool.error", listener: (call: ToolCall, error: Error) => void): this; on(event: "mcp.event", listener: (event: ServerEvent) => void): this; on(event: "mcp.approval", listener: (request: Record) => void): this; on(event: "server.error", listener: (error: unknown) => void): this; on(event: "client.error", listener: (error: Error) => void): this; on(event: "event", listener: (event: ServerEvent) => void): this; on(event: "close", listener: (code: number, reason: string) => void): this; on(event: string, listener: (...args: any[]) => void): this; } export declare class RealtimeClient extends EventEmitter { private readonly options; private readonly transport; constructor(options?: RealtimeClientOptions); get model(): RealtimeModel; get isOpen(): boolean; connect(): Promise; private dispatch; private handleToolCall; private send; private sendSessionUpdate; sendUserText(text: string, createResponse?: boolean): void; sendToolOutput(callId: string, output: unknown): void; respondToMcpApproval(approvalRequestId: string, approve: boolean, reason?: string): void; appendAudio(pcm: Buffer | Uint8Array): void; commitAudio(): void; clearAudio(): void; createResponse(response?: Record): void; cancelResponse(): void; sendRaw(payload: object): void; close(code?: number, reason?: string): void; } //# sourceMappingURL=realtime.d.ts.map