import { Destroyable, OmpAudioRouterChangeEvent, OmpAudioRouterInputSoloMuteEvent } from '../types'; import { Observable, Subject } from 'rxjs'; import { OmpAudioRouterInputSoloMuteState, OmpAudioRouterState, OmpAudioRoutingConnection, OmpAudioRoutingInputType, OmpAudioRoutingPath } from './model'; import { AudioRouterApi } from '../api/audio-router-api'; import { OmpAudioEffect, OmpAudioEffectFilter, OmpAudioEffectParam, OmpAudioEffectsGraph, OmpAudioEffectsGraphDef } from '../audio'; export declare class OmpAudioRouter implements AudioRouterApi, Destroyable { readonly onChange$: Subject; readonly onInputSoloMute$: Subject; protected _audioContext: AudioContext; protected _inputsNumber: number; protected _outputsNumber: number; protected _sourceAudioNode?: AudioNode; protected _channelSplitterNode: ChannelSplitterNode; protected _channelMergerNode: ChannelMergerNode; protected _initialRoutingConnections: OmpAudioRoutingConnection[]; /** * Mapped by routing path input, then by routing path output * @protected */ protected _connectionsByInputOutput: Map>; protected _effectsGraphsByInputOutput: Map>; protected _lastChangedSoloMuteStateInput: number | undefined; /** * Mapped input states, stores solo and mute flag/connections for each input * @protected */ protected _soloMuteStatesByInput: Map; protected _destroyed$: Subject; protected static readonly defaultAudioOutputsResolver: (maxChannelCount: number) => number; constructor(audioContext: AudioContext, audioOutputNode: AudioNode, inputsNumber: number, outputsNumberResolver?: (maxChannelCount: number) => number); get isSourceConnected(): boolean; disconnectSource(): void; connectSource(audioNode: AudioNode): void; updateConnections(connections: OmpAudioRoutingConnection[]): void; getInitialRoutingConnections(): OmpAudioRoutingConnection[]; private getInputInitialRoutingConnections; private getRoutingConnections; get sourceAudioNode(): AudioNode | undefined; get inputsNumber(): number; get outputsNumber(): number; getAudioRouterState(): OmpAudioRouterState; getAudioRouterInputSoloMuteState(): OmpAudioRouterInputSoloMuteState; toggleSolo(routingPath: OmpAudioRoutingInputType): void; toggleMute(routingPath: OmpAudioRoutingInputType): void; setAudioEffectsGraphs(effectsGraphDef: OmpAudioEffectsGraphDef, routingPath?: Partial): Observable; removeAudioEffectsGraphs(routingPath?: Partial): void; findAudioEffectsGraphs(routingPath?: Partial): OmpAudioEffectsGraph[]; findAudioEffects(filter?: { routingPath?: Partial; } & OmpAudioEffectFilter): OmpAudioEffect[]; setAudioEffectsParams(param: OmpAudioEffectParam, filter?: { routingPath?: Partial; } & OmpAudioEffectFilter): void; resetInputsSoloMuteState(): void; protected resetInputSoloMuteState(inputNumber: number): void; protected createInitialSoloMuteState(inputNumber: number): OmpAudioRouterInputSoloMuteState; setInitialRoutingConnections(connections: OmpAudioRoutingConnection[]): void; private getByRoutingPath; protected emitChange(): void; protected emitInputSoloMute(): void; protected _updateConnection(newConnection: OmpAudioRoutingConnection, emitEvent?: boolean): void; protected _solo(inputNumber: number): void; protected _unsolo(inputNumber: number, checkMute?: boolean): void; protected _mute(inputNumber: number): void; protected _unmute(inputNumber: number): void; protected _updateInputsSoloMuteState(): void; private setInputSoloMuteState; private connectEffectsGraph; private disconnectEffectsGraph; private _checkIfEffectsGraphsCanBeChanged; private _setEffectsGraphs; private _setEffectsGraph; destroy(): void; }