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;
}
