import { type OpenAIWebRTCTransportOptions } from './openai-webrtc.transport.js'; import { type OpenAIWebSocketTransportOptions } from './openai-websocket.transport.js'; import { RealtimeSession } from './session.js'; import type { AnyRealtimeTool, RealtimeAudioOptions, RealtimeInterruptionOptions, RealtimeSessionConfig, RealtimeTransport, RealtimeTransportKind, RealtimeTurnDetectionOptions } from './types.js'; /** Creates transports for one realtime provider. */ export interface RealtimeTransportProvider { /** The provider's name, recorded on sessions. */ readonly name: string; /** Creates a transport of the given kind, or the provider's default. */ createTransport(kind?: RealtimeTransportKind): RealtimeTransport; } /** Options for the OpenAI realtime provider. */ export interface OpenAIRealtimeProviderOptions { /** Transport used when a session names none. Defaults to `webrtc`. */ defaultTransport?: 'webrtc' | 'websocket'; /** Your server endpoint for WebRTC session negotiation, shared by every WebRTC transport. */ sessionEndpoint?: string; /** API key for WebSocket transports. Keep it on a server. */ apiKey?: string; /** Options for every WebRTC transport. */ webrtc?: OpenAIWebRTCTransportOptions; /** Options for every WebSocket transport. */ websocket?: OpenAIWebSocketTransportOptions; } /** OpenAI's realtime API, over WebRTC in a browser or WebSocket on a server. */ export declare class OpenAIRealtimeProvider implements RealtimeTransportProvider { private readonly options; /** Always `openai`. */ readonly name = "openai"; constructor(options?: OpenAIRealtimeProviderOptions); /** Creates a WebRTC or WebSocket transport. Throws for any other kind. */ createTransport(kind?: RealtimeTransportKind): RealtimeTransport; /** Creates a session on this provider, with a transport by kind or one you supply. */ createSession(config: Omit & { transport?: 'webrtc' | 'websocket' | RealtimeTransport; }): RealtimeSession; } /** Voice settings for `createRealtimeAgent()`. */ export interface RealtimeAgentVoiceOptions { /** Transport kind, or a transport you supply. */ transport?: RealtimeTransportKind | RealtimeTransport; /** Barge-in handling. */ interruption?: boolean | RealtimeInterruptionOptions; /** How the provider decides the user finished speaking. */ turnDetection?: RealtimeTurnDetectionOptions; /** Voice the model speaks in. */ voice?: string; /** Full audio settings, merged with the fields above. */ audio?: RealtimeAudioOptions; } /** * Options for `createRealtimeAgent()`: a session's configuration, with the provider and voice * settings kept separate. */ export interface CreateRealtimeAgentOptions extends Omit { /** Provider to create the transport from. */ provider: RealtimeTransportProvider; /** Tools the agent may call. */ tools?: AnyRealtimeTool[]; /** Voice settings. */ voice?: RealtimeAgentVoiceOptions; } /** * Creates a voice agent: a realtime session on a provider, with its voice settings folded into the * session's audio configuration. */ export declare function createRealtimeAgent(options: CreateRealtimeAgentOptions): RealtimeSession;