import { ContentMessage, OpenGroupMessage, SyncMessage, } from '../messages/outgoing'; import { RawMessage } from '../types/RawMessage'; import { TypedEventEmitter } from '../utils'; import { PubKey } from '../types'; import { ClosedGroupV2Message } from '../messages/outgoing/content/data/groupv2/ClosedGroupV2Message'; import { ClosedGroupV2ChatMessage } from '../messages/outgoing/content/data/groupv2/ClosedGroupV2ChatMessage'; export type GroupMessageType = | OpenGroupMessage | ClosedGroupV2ChatMessage | ClosedGroupV2Message; export interface MessageQueueInterfaceEvents { sendSuccess: ( message: RawMessage | OpenGroupMessage, wrappedEnvelope?: Uint8Array ) => void; sendFail: (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, sentCb?: (message?: RawMessage) => Promise ): Promise; sendSyncMessage(message: SyncMessage | undefined): Promise; processPending(device: PubKey): Promise; }