import * as Api from '../api'; import * as m from '../model'; import { Storage } from '../storage'; export interface IQSyncEvent { 'room.cleared': (room: m.IQChatRoom) => void; 'message.new': (message: m.IQMessage) => void; 'message.delivered': (data: m.IQMessage) => void; 'message.deleted': (message: m.IQMessage) => void; 'message.read': (message: m.IQMessage) => void; 'message.updated': (message: m.IQMessage) => void; 'last-message-id': (id: m.IQAccount['lastMessageId']) => void; 'last-event-id': (id: m.IQAccount['lastSyncEventId']) => void; } export type SyncAdapter = ReturnType; export default function getSyncAdapter(o: { s: Storage; api: Api.ApiRequester; isMqttConnected: () => boolean; logger: (...args: string[]) => void; }): { synchronize(messageId: m.IQAccount['lastMessageId']): void; synchronizeEvent(eventId: m.IQAccount['lastSyncEventId']): void; onNewMessage(callback: (message: m.IQMessage) => void): () => void; onMessageUpdated(callback: (message: m.IQMessage) => void): () => void; onMessageDelivered(callback: (m: m.IQMessage) => void): () => void; onMessageRead(callback: (m: m.IQMessage) => void): () => void; onMessageDeleted(callback: (message: m.IQMessage) => void): () => void; onRoomCleared(callback: (room: m.IQChatRoom) => void): () => void; onSynchronized(callback: () => void): () => void; };