import { AvatarStreamError } from './error'; interface SilenceDetectionConfig { threshold?: number; durationMs?: number; } interface AudioStreamConfig { onPlaying?: () => void; onPause?: () => void; onEnded?: () => void; onResumed?: () => void; onError?: (error: AvatarStreamError) => void; isDebug?: boolean; silenceDetection?: SilenceDetectionConfig; } export declare class AudioStreamHandler { private readonly config; private audioElement; private currentStream; private audioAnalyzer; private hasDetectedAudio; private wavRecorder; private state; constructor(config?: AudioStreamConfig); private createAudioElement; /** * Configures the audio element for low latency playback * Optimized for conversational audio */ private configureAudioElementForLowLatency; /** * Sets up jitter buffer for smoother audio playback * Uses a smaller buffer for conversational audio to minimize latency */ private setupJitterBuffer; private startRecording; private stopRecording; private downloadRecording; private attachAudioElementListeners; private attachStreamListeners; private handleCanPlay; private handlePlaying; private handlePause; private handleEnded; private handleTrackEnded; private handleAudioError; private handlePlayError; private handleError; private canPlayAudio; private removeStreamListeners; attachStream(stream: MediaStream): Promise; private cleanupExistingAudio; play(): Promise; pause(): void; cleanup(): void; getCurrentStream(): MediaStream | null; isActive(): boolean; isReady(): boolean; } export {};