import { AuthenticationResponse, AuthenticateOptions, AuthenticatePayload, BaseClient, Instance, TokenWithExpiry } from 'pusher-platform-node'; export interface AuthenticationOptions { userId: string; authPayload?: AuthenticatePayload; } export interface UserIdOptions { userId: string; } export interface GetRoomOptions extends UserIdOptions { roomId: number; } export interface DeleteUserOptions extends UserIdOptions { } export interface GetUserRoomOptions extends UserIdOptions { } export interface GetRoomsOptions extends UserIdOptions { } export interface GetUserJoinableRoomOptions extends UserIdOptions { } export interface GetUserRolesOptions extends UserIdOptions { } export interface RemoveGlobalRoleForUserOptions extends UserIdOptions { } export interface RemoveRoomRoleForUserOptions extends UserIdOptions { roomId: number; } export interface BasicAssignRoleToUserOptions { userId: string; roleName: string; } export interface AssignGlobalRoleToUserOptions extends BasicAssignRoleToUserOptions { } export interface AssignRoleToUserOptions extends BasicAssignRoleToUserOptions { roomId?: number; } export interface AssignRoomRoleToUserOptions extends BasicAssignRoleToUserOptions { roomId: number; } export interface DeleteRoleOptions { name: string; } export interface CreateRoleOptions { name: string; permissions: Array; } export interface CreateScopedRoleOptions extends CreateRoleOptions { scope: string; } export interface UpdatePermissionsOptions { roleName: string; permissionsToAdd?: Array; permissionsToRemove?: Array; } export interface GetPermissionsOptions { roleName: string; } export interface TokenWithExpiryAt { token: string; expiresAt: number; } export interface Options { instanceLocator: string; key: string; port?: number; host?: string; client?: BaseClient; } export interface GeneralRequestOptions { method: string; path: string; jwt?: string; qs?: object; } export interface GetRoomMessagesOptions extends UserIdOptions { direction?: string; initialId?: string; limit?: number; roomId: number; } export interface GetRoomMessagesOptionsPayload { initial_id?: string; direction?: string; limit?: number; } export interface CreateUserOptions { id: string; name: string; avatarURL?: string; customData?: any; } export interface UpdateUserOptions { id: string; name?: string; avatarURL?: string; customData?: any; } export interface CreateRoomOptions { creatorId: string; name: string; isPrivate?: boolean; userIds?: Array; } export interface UpdateRolePermissionsOptions { add_permissions?: Array; remove_permissions?: Array; } export interface CreateUsersOptions { users: Array; } export interface GetUsersByIdsOptions { userIds: Array; } export interface User { id: string; name: string; avatarURL?: string; customData?: any; } export default class Chatkit { apiInstance: Instance; authorizerInstance: Instance; instanceLocator: string; private tokenWithExpiry?; constructor(options: Options); authenticate(options: AuthenticationOptions): AuthenticationResponse; generateAccessToken(options: AuthenticateOptions): TokenWithExpiry; createUser(options: CreateUserOptions): Promise; createUsers(options: CreateUsersOptions): Promise; updateUser(options: UpdateUserOptions): Promise; deleteUser(options: DeleteUserOptions): Promise; getUsers(): Promise; getUsersByIds(options: GetUsersByIdsOptions): Promise; getRoom(options: GetRoomOptions): Promise; getRoomMessages(options: GetRoomMessagesOptions): Promise; getRooms(options: GetRoomsOptions): Promise; getUserRooms(options: GetUserRoomOptions): Promise; getUserJoinableRooms(options: GetUserJoinableRoomOptions): Promise; createRoom(options: CreateRoomOptions): Promise; createRoomRole(options: CreateRoleOptions): Promise; createGlobalRole(options: CreateRoleOptions): Promise; private createRole(options); deleteGlobalRole(options: DeleteRoleOptions): Promise; deleteRoomRole(options: DeleteRoleOptions): Promise; assignGlobalRoleToUser(options: AssignGlobalRoleToUserOptions): Promise; assignRoomRoleToUser(options: AssignRoomRoleToUserOptions): Promise; private assignRoleToUser(options); getUserRoles(options: GetUserRolesOptions): Promise; removeGlobalRoleForUser(options: RemoveGlobalRoleForUserOptions): Promise; removeRoomRoleForUser(options: RemoveRoomRoleForUserOptions): Promise; getPermissionsForGlobalRole(options: GetPermissionsOptions): Promise; getPermissionsForRoomRole(options: GetPermissionsOptions): Promise; updatePermissionsForGlobalRole(options: UpdatePermissionsOptions): Promise; updatePermissionsForRoomRole(options: UpdatePermissionsOptions): Promise; getRoles(): Promise; apiRequest(options: GeneralRequestOptions): Promise; authorizerRequest(options: GeneralRequestOptions): Promise; private updatePermissionsForRole(roleName, scope, permissionsToadd?, permissionsToRemove?); /** * This method manages the token for http library and pusher platform * communication */ private getServerToken(); }