import { AudioConfiguration } from '../configuration/configuration.types'; import { TypedEventEmitter, VoiceActivityDetectorFactory } from '../utils'; import { AudioProcessingPipelineService } from './audio-processing-pipeline.service'; export declare enum AudioTrackEvents { TRACK_ADDED = "trackAdded", TRACK_REMOVED = "trackRemoved", TRACK_REPLACED = "trackReplaced", TRACK_MUTED = "trackMuted", TRACK_UNMUTED = "trackUnmuted", STATE_CHANGED = "stateChanged", VOLUME_CHANGE = "volumeChange", ERROR = "error" } export interface AudioTrackState { track: MediaStreamTrack | null; isEnabled: boolean; isMuted: boolean; isSpeaking: boolean; volume: number; deviceId: string | null; settings: MediaTrackSettings | null; } export interface AudioTrackEventPayload { track: MediaStreamTrack; oldTrack?: MediaStreamTrack; } export interface VolumeChangePayload { isSpeaking: boolean; volume: number; } interface AudioTrackEventMap { [AudioTrackEvents.TRACK_ADDED]: (payload: AudioTrackEventPayload) => void; [AudioTrackEvents.TRACK_REMOVED]: (payload: AudioTrackEventPayload) => void; [AudioTrackEvents.TRACK_REPLACED]: (payload: AudioTrackEventPayload) => void; [AudioTrackEvents.TRACK_MUTED]: (payload: AudioTrackEventPayload) => void; [AudioTrackEvents.TRACK_UNMUTED]: (payload: AudioTrackEventPayload) => void; [AudioTrackEvents.STATE_CHANGED]: (state: AudioTrackState) => void; [AudioTrackEvents.VOLUME_CHANGE]: (payload: VolumeChangePayload) => void; [AudioTrackEvents.ERROR]: (error: Error) => void; } export declare class AudioTrackManagerService extends TypedEventEmitter { private getConfig; private createVAD?; private track; private isEnabled; private isMuted; private isSpeaking; private volume; private vad; private pipeline; private pipelineEngaged; private pendingSwitch; private abortController; private lastEmittedState; constructor(getConfig: () => AudioConfiguration, createVAD?: VoiceActivityDetectorFactory); getPipeline(): AudioProcessingPipelineService; getRawTrack(): MediaStreamTrack | null; getOutputTrack(): MediaStreamTrack | null; engageProcessing(): Promise; disengageProcessing(): void; enable(): Promise; enableWithTrack(track: MediaStreamTrack): Promise; disable(): void; mute(): void; unmute(): void; switchDevice(deviceId?: string): Promise; private runExclusive; getTrack(): MediaStreamTrack | null; getState(): AudioTrackState; destroy(): void; private startPipelineIfEngaged; private acquireTrack; private replaceTrack; private initVAD; private destroyVAD; private handleTrackEnded; private isTrackActive; private emitStateIfChanged; private handleError; } export {};