import { Api } from './api';
import { AudioInputOutputNode, OmpAudioRouterState } from '../video/model';
import { Observable } from 'rxjs';
import { OmpAudioRouterChangeEvent } from '../types';
/**
 * Audio router
 */
export interface AudioRouterApi extends Api {
    /**
     * Fires when {@link AudioInputOutputNode} nodes changes
     */
    onChange$: Observable<OmpAudioRouterChangeEvent>;
    /**
     * Source {@link AudioNode}
     */
    get sourceAudioNode(): AudioNode | undefined;
    /**
     * Routes provided {@link AudioInputOutputNode} nodes
     * @param newAudioInputOutputNodes
     */
    routeAudioInputOutputNodes(newAudioInputOutputNodes: AudioInputOutputNode[]): Observable<void>;
    /**
     * @returns audio router state
     */
    getAudioRouterState(): OmpAudioRouterState;
}
