import * as Api from '../api'; import * as m from '../model'; import type { Storage } from '../storage'; interface SynchronizeEventData { 'last-event-id.new': (lastId: m.IQAccount['lastSyncEventId']) => void; 'message.delivered': (message: m.IQMessage) => void; 'message.deleted': (message: m.IQMessage) => void; 'message.read': (message: m.IQMessage) => void; 'message.received': (message: m.IQMessage) => void; 'room.cleared': (room: m.IQChatRoom) => void; } export declare function synchronizeEventFactory(getInterval: () => number, getEnableSync: () => boolean, getId: () => m.IQAccount['lastSyncEventId'], logger: (...args: string[]) => void, s: Storage, api: Api.ApiRequester): { readonly synchronize: (eventId: m.IQAccount['lastSyncEventId']) => Promise<{ lastId: string; messageDelivered: m.IQMessage[]; messageRead: m.IQMessage[]; messageDeleted: m.IQMessage[][]; roomCleared: m.IQChatRoom[][]; interval: number; }>; readonly on: (event: K, handler: SynchronizeEventData[K]) => SynchronizeEventData[K]; readonly off: (event: K_1, handler: SynchronizeEventData[K_1]) => void; stream(): import("xstream").Stream<{ lastId: string; messageDelivered: m.IQMessage[]; messageRead: m.IQMessage[]; messageDeleted: m.IQMessage[][]; roomCleared: m.IQChatRoom[][]; interval: number; }>; }; export declare module SyncEventResponse { interface Actor { id: string; email: string; name: string; } interface DeletedMessage { message_unique_ids: string[]; room_id: string; } interface DeletedRoom { avatar_url: string; chat_type: string; id: number; id_str: string; last_comment: any; options: object; raw_room_name: string; room_name: string; unique_id: string; unread_count: number; } interface DataMessageDeleted { deleted_messages: DeletedMessage[]; is_hard_delete: boolean; } interface DataRoomCleared { deleted_rooms: DeletedRoom[]; } interface DataMessageDelivered { comment_id: number; comment_unique_id: string; email: string; room_id: number; } interface Payload { actor: Actor; data: DataMessageDeleted | DataMessageDelivered | DataRoomCleared; } interface Event { id: any; timestamp: any; action_topic: 'read' | 'delivered' | 'clear_room' | 'deleted_message'; payload: Payload; } interface RootObject { events: Event[]; is_start_event_id_found: boolean; } } export {};