sinch-rtc
Version:
RTC JavaScript/Web SDK
55 lines (54 loc) • 2.41 kB
TypeScript
import { DeviceVersion } from "./DeviceVersion";
import { Capability } from "../models/Capability";
import { ClientEventFanout } from "../calling/listeners/ClientEventFanout";
import { ApiClient } from "../ocra/ApiClient";
import { InstanceAuthentication } from "../ocra/auth/InstanceAuthentication";
import { UserInstance, Instance } from "./UserInstance";
export declare class InstanceController {
private applicationKey;
private userId;
private clientEvent;
private api;
private static MIN_TTL_MS;
private readonly DefaultCapabilities;
private static readonly REGISTRATION_TIMEOUT_MS;
private static readonly APPLICATION_VERSION;
private static readonly UPDATE_INSTANCE_DELAY_MS;
private static readonly UPDATE_INSTANCE_TTL_WINDOW_DAYS_DEFAULT;
private capabilities;
private deviceId;
private storage;
private userInstance;
private updateInstanceTimeoutId;
private updateInstanceTtlWindowDays;
authentication?: InstanceAuthentication;
deviceVersion: DeviceVersion;
updateInstance: () => Promise<void | undefined>;
constructor(applicationKey: string, userId: string, clientEvent: ClientEventFanout, api: ApiClient);
private removeInstance;
private setInstance;
get instance(): UserInstance | null;
createNewInstanceAuthentication: () => Promise<InstanceAuthentication>;
toggleCapability(capability: Capability, enabled: boolean): void;
isCapabilityEnabled(capability: Capability): boolean;
setUpdateInstanceTtlWindow(updateTtlWindowDays: number | undefined): void;
start(): Promise<Instance>;
prolongInstanceIfNeeded(): Promise<void>;
terminate(): void;
private createInstance;
private updateInstanceIfNecessary;
/**
* When the SDK is about to issue an UpdateInstance request, the request is delayed for a short time.
* When the timer has expired, only the latest UpdateInstance request is actually sent over to the backend.
* This is to avoid sending multiple UpdateInstance requests in a very
* short time when multiple properties of an instance (e.g. capabilities / device information) are changed.
*/
private scheduleInstanceUpdate;
private prolongInstance;
private register;
private validateExpireAt;
private storeInstance;
private setUpdatedInstance;
private callUpdateInstanceApi;
private updateInstanceExpiresAt;
}