import { HMSAudioPlugin } from './HMSAudioPlugin'; import { EventBus } from '../../events/EventBus'; import { HMSLocalAudioTrack } from '../../media/tracks'; /** * This class manages applying different plugins on a local audio track. Plugins which need to modify the audio * are called in the order they were added. Plugins which do not need to modify the audio are called * with the original input. * * Concepts - * Audio Plugin - A module which can take in input audio, do some processing on it and return an AudioNode * * For Each Plugin, an AudioNode will be created and the source will be created from local audio track. * Each Audio node will be connected in the following order * source -> first plugin -> second plugin -> third plugin .. so on * @see HMSAudioPlugin */ export declare class HMSAudioPluginsManager { private readonly TAG; private readonly hmsTrack; private readonly pluginsMap; private audioContext?; private sourceNode?; private destinationNode?; private prevAudioNode?; private analytics; private outputTrack?; private pluginAddInProgress; constructor(track: HMSLocalAudioTrack, eventBus: EventBus); getPlugins(): string[]; addPlugin(plugin: HMSAudioPlugin): Promise; private addPluginInternal; validatePlugin(plugin: HMSAudioPlugin): import("./HMSAudioPlugin").HMSPluginSupportResult; validateAndThrow(name: string, plugin: HMSAudioPlugin): Promise; removePlugin(plugin: HMSAudioPlugin): Promise; cleanup(): Promise; closeContext(): Promise; reprocessPlugins(): Promise; private initAudioNodes; private processPlugin; private connectToDestination; private removePluginInternal; private createAudioContext; }