export interface BasePayload { eventId: number; senderId: string; recipientMri: string; groupId: string; } export interface MessageReceivedPayload extends BasePayload { messageId: string; clientMessageId: string; senderDisplayName: string; messageType: string; messageBody: string; version: string; originalArrivalTime: string; acsChatMessageMetadata: string; attachments?: string; } export interface MessageEditedPayload extends MessageReceivedPayload { edittime: string; } export interface MessageDeletedPayload extends BasePayload { messageId: string; clientMessageId: string; senderDisplayName: string; version: string; deletetime: string; messageType: string; originalArrivalTime: string; } export interface TypingIndicatorReceivedPayload extends BasePayload { version: string; senderDisplayName: string; originalArrivalTime: string; } export interface ReadReceiptReceivedPayload extends BasePayload { messageId: string; clientMessageId: string; messageBody: string; } export interface ReadReceiptMessageBody { user: string; consumptionhorizon: string; messageVisibilityTime: number; version: string; } export interface ChatThreadPayload { eventId: number; threadId: string; version: string; } export interface ChatParticipantPayload { participantId: string; displayName: string; shareHistoryTime?: string; memberMetaData?: string; } export interface ChatThreadPropertiesPayload { topic: string; acsChatThreadMetadata?: string; retentionPolicy?: string; } export interface ChatThreadCreatedPayload extends ChatThreadPayload { createTime: string; createdBy: string; members: string; properties: string; } export interface ChatThreadPropertiesUpdatedPayload extends ChatThreadPayload { editTime: string; editedBy: string; properties: string; } export interface ChatThreadDeletedPayload extends ChatThreadPayload { deleteTime: string; deletedBy?: string; reason?: string; } export interface ParticipantsAddedPayload extends ChatThreadPayload { time: string; addedBy: string; participantsAdded: string; } export interface ParticipantsRemovedPayload extends ChatThreadPayload { time: string; removedBy: string; participantsRemoved: string; }