import type { VoiceServerEvent } from '@xopcai/realtime-protocol/voice'; export type VoiceEventSink = (type: T, payload: Extract['payload']) => void; export interface VoiceEngine { start(): Promise; appendAudio(bytes: Uint8Array): void; setInputMuted(muted: boolean): void | Promise; commit(): Promise; cancel(responseId: string, reason: 'client_cancelled' | 'barge_in'): boolean; cancelTask(taskId: string): Promise; acknowledge(responseId: string, playedDurationMs: number): void; canOfferTaskUpdate?(): boolean; offerTaskUpdate?(input: { clientMessageId: string; content: string; }): Promise; close(): void | Promise; }