import IDisposable from '../../lang/IDisposable'; import { Millisecond, BitsPerSecond } from '../../units/Units'; import ReadOnlySubject from '../../rx/ReadOnlySubject'; import Dimension from '../../video/Dimension'; import IPeerConnection from '../../rtc/IPeerConnection'; import { IRtcMonitorStatistic } from '../../rtc/RtcConnectionMonitor'; import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken'; import EndPoint, { IStream } from '../discovery/EndPoint'; import { DecodedFrameTimingInformation, RenderedFrameTimingInformation } from '../frameTiming/FrameTimingInformation'; import ChannelState from './ChannelState'; export interface IChannel extends IDisposable { videoElement: HTMLVideoElement | null; token: EncodedEdgeToken; readonly exists: ReadOnlySubject; readonly tokenExpiring: ReadOnlySubject; readonly state: ReadOnlySubject; readonly authorized: ReadOnlySubject; readonly online: ReadOnlySubject; readonly loading: ReadOnlySubject; readonly playing: ReadOnlySubject; readonly standby: ReadOnlySubject; readonly stopped: ReadOnlySubject; readonly autoMuted: ReadOnlySubject; readonly autoPaused: ReadOnlySubject; readonly endPoint: ReadOnlySubject; readonly targetLag: ReadOnlySubject; readonly lag: ReadOnlySubject; readonly resolution: ReadOnlySubject; readonly failureCount: ReadOnlySubject; readonly streamId: string; readonly stream: ReadOnlySubject; readonly bitrateLimit: BitsPerSecond; readonly peerConnection: ReadOnlySubject; readonly mediaStream: ReadOnlySubject; readonly rtcStatistics: ReadOnlySubject; readonly isFrameTimingInformationEnabled: ReadOnlySubject; readonly decodedFrameTimingInformation: ReadOnlySubject; readonly renderedFrameTimingInformation: ReadOnlySubject; play(): Promise; resume(): Promise; stop(reason: string): Promise; mute(): void; unmute(): void; setBitrateLimit(bitrateLimit: BitsPerSecond): void; clearBitrateLimit(): void; updateTargetLag(lag: Millisecond): void; getUri(token: EncodedEdgeToken): URL; }