import { BitsPerSecond, Millisecond } from '../../units/Units';
import ReadOnlySubject from '../../rx/ReadOnlySubject';
import Dimension from '../../video/Dimension';
import { IRtcMonitorStatistic } from '../../rtc/RtcConnectionMonitor';
import IPeerConnection from '../../rtc/IPeerConnection';
import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken';
import EndPoint, { IStream } from '../discovery/EndPoint';
import { IChannel } from '../channels/IChannel';
import ChannelState from '../channels/ChannelState';
import { DecodedFrameTimingInformation, RenderedFrameTimingInformation } from '../frameTiming/FrameTimingInformation';
import IsoBmffChannel from '../isobmffchannels/IsoBmffChannel';
import { IsoBmffPlayerState } from '../isobmffchannels/IsoBmffPlayer';
import ChannelProtectionManager from './ChannelProtectionManager';
export default class ProtectedChannel implements IChannel {
    private readonly _disposables;
    private readonly _channel;
    constructor(channel: IsoBmffChannel, channelProtectionManager: ChannelProtectionManager);
    set videoElement(videoElement: HTMLVideoElement);
    get videoElement(): HTMLVideoElement | null;
    set token(value: EncodedEdgeToken);
    get token(): EncodedEdgeToken;
    get tokenExpiring(): ReadOnlySubject<boolean>;
    get state(): ReadOnlySubject<ChannelState>;
    get exists(): ReadOnlySubject<boolean | null>;
    get authorized(): ReadOnlySubject<boolean>;
    get online(): ReadOnlySubject<boolean>;
    get loading(): ReadOnlySubject<boolean>;
    get playing(): ReadOnlySubject<boolean>;
    get standby(): ReadOnlySubject<boolean>;
    get stopped(): ReadOnlySubject<boolean>;
    get autoMuted(): ReadOnlySubject<boolean>;
    get autoPaused(): ReadOnlySubject<boolean>;
    get endPoint(): ReadOnlySubject<EndPoint | null>;
    get targetLag(): ReadOnlySubject<Millisecond>;
    get lag(): ReadOnlySubject<Millisecond | undefined>;
    get resolution(): ReadOnlySubject<Dimension>;
    get failureCount(): ReadOnlySubject<number>;
    get streamId(): string;
    get stream(): ReadOnlySubject<IStream | null>;
    get bitrateLimit(): BitsPerSecond;
    get peerConnection(): ReadOnlySubject<IPeerConnection | null>;
    get mediaStream(): ReadOnlySubject<MediaStream | null>;
    get rtcStatistics(): ReadOnlySubject<IRtcMonitorStatistic | null>;
    get isFrameTimingInformationEnabled(): ReadOnlySubject<boolean>;
    get decodedFrameTimingInformation(): ReadOnlySubject<DecodedFrameTimingInformation | null>;
    get renderedFrameTimingInformation(): ReadOnlySubject<RenderedFrameTimingInformation | null>;
    get playerState(): ReadOnlySubject<IsoBmffPlayerState>;
    play(): Promise<void>;
    resume(): Promise<void>;
    stop(reason: string): Promise<void>;
    mute(): void;
    unmute(): void;
    setBitrateLimit(bitrateLimit: BitsPerSecond): void;
    clearBitrateLimit(): void;
    updateTargetLag(lag: Millisecond): void;
    getUri(token: EncodedEdgeToken): URL;
    dispose(): Promise<void>;
    private initializeProtection;
    private subscribeToProtectionStrategy;
    private handleProtectionStrategyChange;
    private subscribeToMediaKeys;
    private handleMediaKeysChange;
    private subscribeToKeySession;
    private setMediaElementEncryptedEventHandler;
}
