import { type RealtimeIdFactory } from './id.js'; import type { ConversationMetrics, RealtimeAnalyticsExport, RealtimeConversation, RealtimeConversationExportFormat, RealtimeConversationOptions, RealtimeEvent, RealtimeProviderName, RealtimeServerEvent } from './types.js'; /** Options for `createRealtimeConversation()`. */ export interface CreateRealtimeConversationOptions { /** Conversation id. Defaults to a generated one. */ id?: string; /** The provider. */ provider: RealtimeProviderName; /** The realtime model. */ model: string; /** ISO-8601 start time. Defaults to now. */ startedAt?: string; /** Application data carried with the record. */ metadata?: Record; /** Creates ids. */ idFactory?: RealtimeIdFactory; } /** Options for `reduceRealtimeConversation()`. */ export interface RealtimeConversationReducerOptions extends RealtimeConversationOptions { /** Creates ids for items the reducer adds. */ idFactory?: RealtimeIdFactory; } /** Conversation metrics with every counter at zero. */ export declare function createConversationMetrics(): ConversationMetrics; /** Creates an empty, active conversation record. */ export declare function createRealtimeConversation(options: CreateRealtimeConversationOptions): RealtimeConversation; /** * Applies one realtime event to a conversation record and returns the new record. The input is * never mutated. */ export declare function reduceRealtimeConversation(conversation: RealtimeConversation, event: RealtimeEvent, options?: RealtimeConversationReducerOptions): RealtimeConversation; /** Returns a copy of the record with some metrics replaced. */ export declare function withConversationMetrics(conversation: RealtimeConversation, metrics: Partial): RealtimeConversation; /** A deep copy of the record. */ export declare function snapshotRealtimeConversation(conversation: RealtimeConversation): RealtimeConversation; /** * Exports a record as JSON, the provider's raw events, a readable transcript, or analytics without * transcripts. */ export declare function exportRealtimeConversation(conversation: RealtimeConversation, format: RealtimeConversationExportFormat, rawEvents?: RealtimeServerEvent[]): RealtimeConversation | RealtimeServerEvent[] | string | RealtimeAnalyticsExport;