export interface TokenProviderResponse { token: string; } export interface ITokenProvider { fetchToken(userId: string): Promise; } interface TokenProviderOptions { url: string; queryParams?: { [key: string]: any }; headers?: { [key: string]: string }; credentials?: string; } export class TokenProvider implements ITokenProvider { constructor(options: TokenProviderOptions); fetchToken(userId: string): Promise; } export enum RegistrationState { PERMISSION_GRANTED_REGISTERED_WITH_BEAMS = 'PERMISSION_GRANTED_REGISTERED_WITH_BEAMS', PERMISSION_GRANTED_NOT_REGISTERED_WITH_BEAMS = 'PERMISSION_GRANTED_NOT_REGISTERED_WITH_BEAMS', PERMISSION_PROMPT_REQUIRED = 'PERMISSION_PROMPT_REQUIRED', PERMISSION_DENIED = 'PERMISSION_DENIED', } export class Client { instanceId: string; deviceId: string; userId: string; constructor(options: ClientOptions); start(): Promise; getDeviceId(): Promise; addDeviceInterest(interest: string): Promise; removeDeviceInterest(interest: string): Promise; getDeviceInterests(): Promise>; setDeviceInterests(interests: Array): Promise; clearDeviceInterests(): Promise; getUserId(): Promise; setUserId(userId: string, tokenProvider: ITokenProvider): Promise; stop(): Promise; clearAllState(): Promise; getRegistrationState(): Promise; } interface ClientOptions { instanceId: string; serviceWorkerRegistration?: ServiceWorkerRegistration; endpointOverride?: string; }