import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken'; import { ISubscribeWithOfferRequest, ISubscribeWithoutOfferRequest } from '../api/Subscribe'; import { BitrateMode, BitrateState } from '../api/SetTemporaryMaximalBitrate'; import { BitsPerSecond, Millisecond } from '../../units/Units'; export type SubscribeStatus = 'ok' | 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'port-in-range-not-found' | 'failed'; export type SetRemoteDescriptionStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed'; export type SetTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed'; export type RemoveTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed'; export type AddIceCandidatesStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed'; export type DestroyStreamStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed'; export interface IStream { streamId: string; sharedSecret: string; tenancy: string; } export interface ISubscribeSuccessResponseInit { status: 'ok'; stream: IStream; lag: Millisecond; rtcConfiguration?: RTCConfiguration; setRemoteDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; createOfferDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; createAnswerDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; [key: string]: unknown; } export interface ISubscribeFailureResponseInit { status: 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'port-in-range-not-found' | 'failed'; } export interface ISubscribeRequestCallback { (request: ISubscribeWithOfferRequest | ISubscribeWithoutOfferRequest): Promise; } export interface ISubscribeResponseCallback { (response: ISubscribeSuccessResponseInit | ISubscribeFailureResponseInit): Promise; } export type SubscribeOptions = { onSubscribeRequestCallback?: ISubscribeRequestCallback; onSubscribeResponseCallback?: ISubscribeResponseCallback; }; export type IPublishSuccessResponseInit = { status: 'ok'; stream: IStream; lag?: Millisecond; rtcConfiguration?: RTCConfiguration; setRemoteDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; createOfferDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; createAnswerDescriptionResponse?: { sessionDescription: RTCSessionDescriptionInit; }; }; export type IPublishFailureResponseInit = { status: 'not-found' | 'geo-restricted' | 'geo-blocked' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'missing-channel-or-room-id' | 'port-in-range-not-found' | 'failed'; }; interface ISetRemoteDescriptionResponseInit { status: SetRemoteDescriptionStatus; sessionDescription?: RTCSessionDescriptionInit; } interface IAddIceCandidatesResponseInit { status: AddIceCandidatesStatus; options?: string[]; } interface ISetTemporaryMaximalBitrateResponseInit { status: SetTemporaryMaximalBitrateStatus; } interface IDestroyStreamResponseInit { status: DestroyStreamStatus; } export default class EndPoint { private readonly _logger; private readonly _uri; private readonly _timeout; private _roundTripTime; constructor(uri: string, timeout: number); get roundTripTime(): number; toString(): string; ping(): Promise; subscribe(token: EncodedEdgeToken, localSessionDescription: RTCSessionDescriptionInit | null, failureCount: number, options?: SubscribeOptions): Promise; publish(name: string, token: EncodedEdgeToken, localSessionDescription: RTCSessionDescriptionInit | null, failureCount: number): Promise; setRemoteDescription(stream: IStream, sessionDescription: RTCSessionDescriptionInit): Promise; limitBitrate(stream: IStream, elapsedInMilliseconds: number, bitrateInBitsPerSecond: BitsPerSecond, bitrateState: BitrateState, bitrateMode: BitrateMode): Promise; addIceCandidates(stream: IStream, candidates: RTCIceCandidate[], discoveryCompleted: boolean, options?: string[]): Promise; destroyStream(stream: IStream, reason: string): Promise; destroyStreamOnUnmount(stream: IStream, reason: string): Promise; private buildUrl; private buildPingUrl; private mapHttpStatusToPublishStatus; private mapHttpStatusToSubscribeStatus; private mapHttpStatusToSetRemoteDescriptionStatus; private mapHttpStatusToSetTemporaryMaximalBitrateStatus; private mapHttpStatusToAddIceCandidatesStatus; private mapHttpStatusToSetDestroyStreamStatus; private convertHttpResponseToSubscribeResponse; private convertHttpResponseToPublishResponse; private convertIRtcConfigurationToRTCConfiguration; private convertHttpResponseToSetRemoteDescriptionResponse; private convertHttpResponseToAddIceCandidatesResponse; private convertHttpResponseToDestroyStreamResponse; } export {};