import { ApiRequester } from 'src/api'; import { Callback, Subscription } from '../defs'; import * as model from '../model'; import { Storage } from '../storage'; export type SyncMethod = (callback: (...data: T) => void) => Subscription; export type RealtimeAdapter = ReturnType; export default function getRealtimeAdapter(storage: Storage, api: ApiRequester): { sync: { synchronize(messageId: number): void; synchronizeEvent(eventId: string): void; onNewMessage(callback: (message: model.IQMessage) => void): () => void; onMessageUpdated(callback: (message: model.IQMessage) => void): () => void; onMessageDelivered(callback: (m: model.IQMessage) => void): () => void; onMessageRead(callback: (m: model.IQMessage) => void): () => void; onMessageDeleted(callback: (message: model.IQMessage) => void): () => void; onRoomCleared(callback: (room: model.IQChatRoom) => void): () => void; onSynchronized(callback: () => void): () => void; }; readonly mqtt: { readonly mqtt: (import("mqtt").Client & { _resubscribeTopics: string[]; }) | undefined; clear(): void; close(): Promise; open(): Promise; conneck(): void; onMqttConnected(callback: () => void): () => void; onMqttReconnecting(callback: () => void): Subscription; onMqttDisconnected(callback: () => void): Subscription; onMessageDeleted(callback: (data: model.IQMessage) => void): () => void; onMessageDelivered(callback: (data: model.IQMessage) => void): () => void; onMessageRead(callback: (m: model.IQMessage) => void): () => void; onNewMessage(callback: (data: model.IQMessage) => void): () => void; onMessageUpdated(callback: (data: model.IQMessage) => void): () => void; onRoomDeleted(callback: (data: number) => void): () => void; onUserPresence(callback: (userId: string, isOnline: boolean, lastSeen: Date) => void): () => void; onUserTyping(callback: (userId: string, roomId: number, isTyping: boolean) => void): () => void; publishCustomEvent(roomId: number, userId: string, data: any): void; subscribeCustomEvent(roomId: number, callback: Callback): void; unsubscribeCustomEvent(roomId: number): void; sendPresence(userId: string, isOnline: boolean): void; sendTyping(roomId: number, userId: string, isTyping: boolean): void; subscribeUser(userToken: string): Subscription; subscribeUserPresence(userId: string): void; unsubscribeUserPresence(userId: string): void; subscribeRoom(roomId: number): void; unsubscribeRoom(roomId: number): void; subscribeChannel(appId: string, channelUniqueId: string): void; unsubscribeChannel(appId: string, channelUniqueId: string): void; }; clear(): void; openMqtt(): Promise; closeMqtt(): Promise; onMessageDeleted(callback: Callback): Subscription; onMessageDelivered(callback: Callback): Subscription; onMessageRead(callback: Callback): Subscription; onNewMessage(callback: Callback): Subscription; onMessageUpdated(callback: Callback): Subscription; onNewMessage$(): import("xstream").Stream; readonly onMessageUpdated$: import("xstream").Stream; onMessageRead$(): import("xstream").Stream; onMessageDelivered$(): import("xstream").Stream; readonly onMessageDeleted$: import("xstream").Stream; onRoomCleared$(): import("xstream").Stream; onPresence(callback: (userId: string, isOnline: boolean, lastSeen: Date) => void): Subscription; onRoomCleared(callback: Callback): Subscription; onTyping(callback: (userId: string, roomId: number, isTyping: boolean) => void): Subscription; sendPresence(userId: string, isOnline: boolean): void; sendTyping(roomId: number, userId: string, isTyping: boolean): void; synchronize(lastMessageId: model.IQAccount['lastMessageId']): void; synchronizeEvent(lastEventId: model.IQAccount['lastSyncEventId']): void; };