import { WebSocket } from "ws"; import { LanVoiceBrowserConnections } from "./browser-connections.ts"; import type { LanVoiceDraftSelection } from "./draft.ts"; export type LanVoiceBrowserMode = "conversation" | "dictation"; export interface LanVoiceBrowserClientsOptions { ensureConversation(): Promise; startDictation(clientId: string): Promise; finishDictation(clientId: string, draft?: string, revision?: number, selection?: LanVoiceDraftSelection): Promise; cancelDictation(clientId: string): Promise; onConversationActivity(active: boolean): void | Promise; onConversationMute(muted: boolean): void; conversationMuted(): boolean; onConversationAudio(pcm: Buffer): void; onDictationAudio(clientId: string, pcm: Buffer): void; } export declare class LanVoiceBrowserSession { private readonly options; private readonly connections; private state; private operation; private conversationOwnerId; constructor(options: LanVoiceBrowserClientsOptions, connections: LanVoiceBrowserConnections); get closed(): boolean; sendConversationAudio(pcm: Buffer): void; release(clientId: string, socket?: WebSocket, terminateConversation?: boolean): void; releaseStarting(clientId: string, socket?: WebSocket): void; claim(clientId: string, socket: WebSocket, mode: LanVoiceBrowserMode): Promise; finish(clientId: string, socket: WebSocket, draft: string, revision: number, selection: LanVoiceDraftSelection): Promise; cancelDictation(clientId: string): Promise; mute(clientId: string, socket: WebSocket, muted: boolean): void; receiveAudio(clientId: string, socket: WebSocket, pcm: Buffer): void; close(): Promise; private enqueue; }