import { Destroyable, OmpAudioTrack } from '../types';
import { Observable, Subject } from 'rxjs';
import { OmpAudioRouter } from './audio-router';
import { VideoController } from './video-controller';
import { SidecarAudioApi } from '../api/sidecar-audio-api';
import { AudioRouterApi } from '../api/audio-router-api';
import { OmpAudioPeakProcessor } from './audio-peak-processor';
import { AudioMeterStandard, OmpSidecarAudioState } from './model';
export declare class OmpSidecarAudio implements SidecarAudioApi, Destroyable {
    readonly onStateChange$: Subject<OmpSidecarAudioState>;
    protected _videoController: VideoController;
    protected _audioTrack: OmpAudioTrack;
    protected _audioBuffer: AudioBuffer;
    protected _eventBreaker: Subject<void>;
    protected _audioBufferSourceNode?: AudioBufferSourceNode;
    protected _audioInterfaceNode: GainNode;
    protected _audioRouter?: OmpAudioRouter;
    protected _audioPeakProcessor?: OmpAudioPeakProcessor;
    protected _sidecarAudioPlaying: boolean;
    protected _audioStartTime?: number;
    protected _audioOffset?: number;
    protected _audioDriftHistory: number[];
    protected _destroyed$: Subject<void>;
    constructor(videoController: VideoController, audioTrack: OmpAudioTrack, audioBuffer: AudioBuffer);
    protected _emitChange(): void;
    createAudioRouter(inputsNumber?: number, outputsNumber?: number): OmpAudioRouter;
    createAudioPeakProcessor(audioMeterStandard?: AudioMeterStandard): Observable<OmpAudioPeakProcessor>;
    protected createSourceNode(): void;
    protected audioPlay(driftOffset?: number): void;
    protected audioStop(): void;
    protected setupPlayback(): void;
    correctAudioDrift(): void;
    protected _correctAudioDrift(driftOffset: number): void;
    protected stopSourceNode(): void;
    get isActive(): boolean;
    activate(): void;
    deactivate(): void;
    protected setActiveInactive(value: boolean): void;
    getSidecarAudioState(): OmpSidecarAudioState;
    get audioTrack(): OmpAudioTrack;
    get audioRouter(): AudioRouterApi | undefined;
    get audioPeakProcessor(): OmpAudioPeakProcessor | undefined;
    destroy(): void;
}
