import IDisposable from '../../lang/IDisposable'; import ReadOnlySubject from '../../rx/ReadOnlySubject'; import EndPoint, { IStream } from '../discovery/EndPoint'; import IPeerConnection from '../../rtc/IPeerConnection'; import { IRtcPublishMonitorStatistic } from '../../rtc/RtcPublishMonitor'; import PublisherState from './PublisherState'; import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken'; export default class Publisher implements IDisposable { private readonly _logger; private readonly _tokenContext; private readonly _publisherContext; private readonly _peerConnectionContext; private readonly _stateContext; private readonly _exponentialBackoff; private readonly _publisherStartTime; private readonly _readOnlyToken; private readonly _readOnlyPeerConnection; private readonly _readOnlyState; private readonly _readOnlyTokenExpiring; private readonly _readOnlyAuthorized; private readonly _readOnlyOnline; private readonly _readOnlyLoading; private readonly _readOnlyPublishing; private readonly _readOnlyStandby; private readonly _readOnlyStopped; private readonly _readOnlyFailureCount; private readonly _readOnlyEndPoint; private readonly _readOnlyStream; private readonly _readOnlyRtcStatistics; private readonly _readOnlyMediaStream; private _metricsService; private readonly _sessionTelemetry; constructor(mediaStream: MediaStream, token: EncodedEdgeToken, name?: string); get token(): EncodedEdgeToken; set token(token: EncodedEdgeToken); get peerConnection(): ReadOnlySubject; get state(): ReadOnlySubject; get tokenExpiring(): ReadOnlySubject; get authorized(): ReadOnlySubject; get online(): ReadOnlySubject; get loading(): ReadOnlySubject; get publishing(): ReadOnlySubject; get standby(): ReadOnlySubject; get stopped(): ReadOnlySubject; get failureCount(): ReadOnlySubject; get endPoint(): ReadOnlySubject; get stream(): ReadOnlySubject; get streamId(): string; get rtcStatistics(): ReadOnlySubject; get mediaStream(): ReadOnlySubject; stop(reason: string): Promise; private processStop; dispose(): Promise; getUri(token: EncodedEdgeToken): URL; start(): Promise; private processStart; setMediaStream(mediaStream: MediaStream): void; private getRetryInterval; private handleStreamFailure; private cleanUpResources; }