import { ClosedGroupMessage, ContentMessage, OpenGroupMessage, SyncMessage, } from '../messages/outgoing'; import { RawMessage } from '../types/RawMessage'; import { TypedEventEmitter } from '../utils'; import { PubKey } from '../types'; type GroupMessageType = OpenGroupMessage | ClosedGroupMessage; export interface MessageQueueInterfaceEvents { success: (message: RawMessage | OpenGroupMessage) => void; fail: (message: RawMessage | OpenGroupMessage, error: Error) => void; } export interface MessageQueueInterface { events: TypedEventEmitter; sendUsingMultiDevice(user: PubKey, message: ContentMessage): Promise; send(device: PubKey, message: ContentMessage): Promise; sendToGroup(message: GroupMessageType): Promise; sendSyncMessage(message: SyncMessage | undefined): Promise; }