import { IMetadata, ISources, VideoFormat } from '../../player/types';
import { ITuningConfig } from '../../utils/tuningConfig';
import { IError, ISubject, IValueSubject, IRectangle } from '@vkontakte/videoplayer-shared';
import { IDesiredState, IProviderDependencies, IProviderOutput } from '../types';
import { IProviderContainer, IProviderEntry } from './types';
interface IParams extends IProviderDependencies {
    container: HTMLElement;
    sources: ISources;
    meta: IMetadata;
    failoverHosts: string[];
    desiredState: IDesiredState;
    tuning: ITuningConfig;
    volumeMultiplier?: number;
    panelSize?: IRectangle;
}
export default class ProviderContainer implements IProviderContainer {
    current$: IValueSubject<IProviderEntry>;
    providerError$: ISubject<IError>;
    noAvailableProvidersError$: ISubject<VideoFormat | undefined>;
    volumeMultiplierError$: ISubject<IError>;
    providerOutput: IProviderOutput;
    private subscription;
    private screenFormatsIterator;
    private chromecastFormatsIterator;
    private videoCodecsIterator;
    private log;
    private tracer;
    private params;
    private failoverIndex;
    private volumeMultiplierManager;
    constructor(params: IParams);
    init(): void;
    destroy(): void;
    private initProvider;
    private reinitProvider;
    private switchToNextProvider;
    private switchToNextVideoCodec;
    private destroyProvider;
    private createProvider;
    private createScreenProvider;
    private createChromecastProvider;
    private chooseDestination;
    private chooseFormat;
    private skipFormat;
    private handleNoFormatsError;
    private applyFailoverHost;
    private initProviderErrorHandling;
}
export {};
