import { Callback, IQCallback1, IQCallback2, IQProgressListener, Subscription } from './defs'; import * as model from './model'; export type { IQAccount, IQChatRoom, IQMessage, IQParticipant, IQUser } from './model'; export default class Qiscus { private static _instance; private storage; private readonly apiAdapter; private readonly hookAdapter; private readonly userAdapter; private readonly realtimeAdapter; private readonly loggerAdapter; private readonly roomAdapter; private readonly messageAdapter; private readonly _onMessageReceived$; private readonly _onMessageUpdated$; private readonly _onMessageRead$; private readonly _onMessageDelivered$; private readonly _onMessageDeleted$; private readonly _onRoomCleared$; static get instance(): Qiscus; get appId(): string; get token(): string; get isLogin(): boolean; get currentUser(): model.IQAccount; setup(appId: string): Promise; setup(appId: string, callback?: IQCallback1): void; setupWithCustomServer(appId: string, baseUrl?: string, brokerUrl?: string, brokerLbUrl?: string, syncInterval?: number): Promise; setupWithCustomServer(appId: string, baseUrl?: string, brokerUrl?: string, brokerLbUrl?: string, syncInterval?: number, callback?: IQCallback1): void; setCustomHeader(headers: Record): void; setUser(userId: string, userKey: string, username?: string, avatarUrl?: string, extras?: object | null): Promise; setUser(userId: string, userKey: string, username?: string, avatarUrl?: string, extras?: object | null, callback?: null | IQCallback2): void; blockUser(userId: string): Promise; blockUser(userId: string, callback?: IQCallback2): void; clearUser(): Promise; clearUser(callback?: IQCallback1): void; unblockUser(userId: string): Promise; unblockUser(userId: string, callback: IQCallback2): void; updateUser(username: string, avatarUrl: string, extras?: object): Promise; updateUser(username: string, avatarUrl: string, extras?: object, callback?: IQCallback2): void; updateMessage(message: model.IQMessage): Promise; updateMessage(message: model.IQMessage, callback?: IQCallback1): void; getBlockedUsers(page?: number, limit?: number): Promise; getBlockedUsers(page?: number, limit?: number, callback?: IQCallback2): void; getUsers(searchUsername?: string, page?: number, limit?: number): Promise; getUsers(searchUsername?: string, page?: number, limit?: number, callback?: IQCallback2): void; getJWTNonce(): Promise; getJWTNonce(callback: IQCallback2): void; getUserData(): Promise; getUserData(callback: IQCallback2): void; registerDeviceToken(token: string, isDevelopment: boolean): Promise; registerDeviceToken(token: string, isDevelopment: boolean, callback: IQCallback2): void; removeDeviceToken(token: string, isDevelopment: boolean): Promise; removeDeviceToken(token: string, isDevelopment: boolean, callback: IQCallback2): void; updateChatRoom(roomId: number, name?: string, avatarUrl?: string, extras?: object): Promise; updateChatRoom(roomId: number, name?: string, avatarUrl?: string, extras?: object, callback?: IQCallback2): void; setUserWithIdentityToken(token: string): Promise; setUserWithIdentityToken(token: string, callback?: IQCallback2): void; getChannel(uniqueId: string): Promise; getChannel(uniqueId: string, callback?: IQCallback2): void; chatUser(userId: string, extras?: Record): Promise; chatUser(userId: string, extras?: Record, callback?: IQCallback2): void; addParticipants(roomId: number, userIds: string[]): Promise; addParticipants(roomId: number, userIds: string[], callback?: IQCallback2): void; removeParticipants(roomId: number, userIds: string[]): Promise; removeParticipants(roomId: number, userIds: string[], callback?: IQCallback2): void; clearMessagesByChatRoomId(roomUniqueIds: string[]): Promise; clearMessagesByChatRoomId(roomUniqueIds: string[], callback?: IQCallback1): void; createGroupChat(name: string, userIds: string[], avatarUrl?: string, extras?: object): Promise; createGroupChat(name: string, userIds: string[], avatarUrl?: string, extras?: object, callback?: IQCallback2): void; createChannel(uniqueId: string, name?: string, avatarUrl?: string, extras?: object): Promise; createChannel(uniqueId: string, name?: string, avatarUrl?: string, extras?: object, callback?: IQCallback2): void; getParticipants(roomUniqueId: string, page?: number, limit?: number, sorting?: 'asc' | 'desc'): Promise; getParticipants(roomUniqueId: string, page?: number, limit?: number, sorting?: 'asc' | 'desc', callback?: IQCallback2): void; getChatRooms(roomIds: number[], page?: number, showRemoved?: boolean, showParticipant?: boolean): Promise; getChatRooms(uniqueIds: string[], page?: number, showRemoved?: boolean, showParticipant?: boolean, callback?: IQCallback2): void; getAllChatRooms(showParticipant?: boolean, showRemoved?: boolean, showEmpty?: boolean, page?: number, limit?: number): Promise; getAllChatRooms(showParticipant?: boolean, showRemoved?: boolean, showEmpty?: boolean, page?: number, limit?: number, callback?: IQCallback2): void; getChatRoomWithMessages(roomId: number): Promise<[model.IQChatRoom, model.IQMessage[]]>; getChatRoomWithMessages(roomId: number, callback?: IQCallback2<[model.IQChatRoom, model.IQMessage[]]>): void; getTotalUnreadCount(): Promise; getTotalUnreadCount(callback?: IQCallback2): void; getRoomUnreadCount(): Promise; getRoomUnreadCount(callback?: IQCallback2): void; sendMessage(message: model.IQMessage): Promise; sendMessage(message: model.IQMessage, callback?: IQCallback2): void; markAsDelivered(roomId: number, messageId: number): Promise; markAsDelivered(roomId: number, messageId: number, callback?: IQCallback2): void; markAsRead(roomId: number, messageId: number): Promise; markAsRead(roomId: number, messageId: number, callback?: IQCallback2): void; deleteMessages(messageUniqueIds: string[]): Promise; deleteMessages(messageUniqueIds: string[], callback?: IQCallback2): void; getPreviousMessagesById(roomId: number, limit?: number, messageId?: number): Promise; getPreviousMessagesById(roomId: number, limit?: number, messageId?: number, callback?: IQCallback2): void; getNextMessagesById(roomId: number, limit?: number, messageId?: number): Promise; getNextMessagesById(roomId: number, limit?: number, messageId?: number, callback?: IQCallback2): void; searchMessage(opts: { query: string; roomIds: number[]; userId?: string; type?: string; roomType?: string; page?: number; limit?: number; }): Promise; searchMessage(opts: { query: string; roomIds: number[]; userId?: string; type?: string; roomType?: string; page?: number; limit?: number; callback?: (messages?: model.IQMessage[], error?: Error) => void; }): void; getFileList(opts: { roomIds?: number[]; fileType?: string; page?: number; limit?: number; }): Promise; getFileList(opts: { roomIds?: number[]; fileType?: string; page?: number; limit?: number; callback?: (messages?: model.IQMessage[], error?: Error) => void; }): void; publishCustomEvent(roomId: number, data: any): Promise; publishCustomEvent(roomId: number, data: any, callback?: IQCallback1): void; publishOnlinePresence(isOnline: boolean): Promise; publishOnlinePresence(isOnline: boolean, callback?: IQCallback1): void; publishTyping(roomId: number, isTyping?: boolean): Promise; publishTyping(roomId: number, isTyping?: boolean, callback?: IQCallback1): void; subscribeCustomEvent(roomId: number, callback: IQCallback2): void; unsubscribeCustomEvent(roomId: number): void; upload(file: File, callback?: IQProgressListener): void; hasSetupUser(): Promise; hasSetupUser(callback: IQCallback2): void; sendFileMessage(message: model.IQMessage, file: File, callback?: IQProgressListener): void; getThumbnailURL(url: string): string; setSyncInterval(interval: number): void; synchronize(lastMessageId: model.IQAccount['lastMessageId']): void; synchronizeEvent(lastEventId: model.IQAccount['lastSyncEventId']): void; enableDebugMode(enable: boolean, callback?: IQCallback1): void | Promise; static Interceptor: { MESSAGE_BEFORE_SENT: string; MESSAGE_BEFORE_RECEIVED: string; }; get Interceptor(): { MESSAGE_BEFORE_SENT: string; MESSAGE_BEFORE_RECEIVED: string; }; intercept(interceptor: string, callback: (data: unknown) => unknown): () => void; onMessageReceived(handler: (message: model.IQMessage) => void): () => void; onMessageUpdated(handler: (message: model.IQMessage) => void): () => void; onMessageDeleted(handler: (message: model.IQMessage) => void): Subscription; onMessageDelivered(handler: (message: model.IQMessage) => void): Subscription; onMessageRead(handler: (message: model.IQMessage) => void): Subscription; onUserTyping(handler: (userId: string, roomId: number, isTyping: boolean) => void): Subscription; onUserOnlinePresence(handler: (userId: string, isOnline: boolean, lastSeen: Date) => void): Subscription; onChatRoomCleared(handler: Callback): Subscription; onConnected(handler: () => void): Subscription; onReconnecting(handler: () => void): Subscription; onDisconnected(handler: () => void): Subscription; subscribeChatRoom(room: model.IQChatRoom): void; unsubscribeChatRoom(room: model.IQChatRoom): void; subscribeUserOnlinePresence(userId: string): void; unsubscribeUserOnlinePresence(userId: string): void; _generateUniqueId(): string; startSync(): Promise; stopSync(): Promise; openRealtimeConnection(): Promise; closeRealtimeConnection(): Promise; generateMessage({ roomId, text, extras, }: { roomId: number; text: string; extras?: Record; }): model.IQMessage; generateFileAttachmentMessage({ roomId, caption, url, text, extras, filename, size, }: { roomId: number; caption: string; url: string; text: string; extras?: Record; filename?: string; size?: number; }): model.IQMessage; generateCustomMessage({ roomId, text, type, payload, extras, }: { roomId: number; text: string; type: string; extras?: Record; payload?: Record; }): model.IQMessage; generateReplyMessage({ roomId, text, repliedMessage, extras, }: { roomId: number; text: string; repliedMessage: model.IQMessage; extras?: Record; }): model.IQMessage; }