import { MessageModel, MessageAttributes } from './messages'; interface ConversationAttributes { profileName?: string; id: string; name: string; members: Array; left: boolean; expireTimer: number; profileSharing: boolean; mentionedUs: boolean; unreadCount: number; active_at: number; timestamp: number; // timestamp of what? lastJoinedTimestamp: number; // ClosedGroupV2: last time we were added to this group groupAdmins?: Array; isKickedFromGroup?: boolean; avatarPath?: string; isMe?: boolean; subscriberCount?: number; sessionRestoreSeen?: boolean; is_medium_group?: boolean; type: string; lastMessage?: string; } export interface ConversationModel extends Backbone.Model { destroyMessages(); getPublicSendData(); leaveGroup(); idForLogging: () => string; // Save model changes to the database commit: () => Promise; notify: (message: MessageModel) => void; updateExpirationTimer: ( expireTimer: number | null, source?: string, receivedAt?: number, options?: object ) => Promise; isPrivate: () => boolean; getProfile: (id: string) => Promise; getProfiles: () => Promise; setProfileKey: (key: string) => Promise; isMe: () => boolean; getRecipients: () => Array; getTitle: () => string; onReadMessage: (message: MessageModel) => void; getName: () => string; addMessage: (attributes: Partial) => Promise; isMediumGroup: () => boolean; getNickname: () => string | undefined; setNickname: (nickname: string | undefined) => Promise; getUnread: () => Promise; getUnreadCount: () => Promise; isPublic: () => boolean; isClosedGroup: () => boolean; isBlocked: () => boolean; isAdmin: (id: string) => boolean; throttledBumpTyping: () => void; // types to make more specific sendMessage: ( body: any, attachments: any, quote: any, preview: any, groupInvitation: any, otherOptions: any ) => Promise; updateGroupAdmins: any; setLokiProfile: any; getLokiProfile: any; getNumber: any; getProfileName: any; getAvatarPath: any; markRead: (timestamp: number) => Promise; showChannelLightbox: any; deletePublicMessages: any; makeQuote: any; unblock: any; deleteContact: any; removeMessage: (messageId: string) => Promise; deleteMessages(); endSession: () => Promise; block: any; copyPublicKey: any; getAvatar: any; notifyTyping: ( { isTyping, sender } = { isTyping: boolean, sender: string } ) => any; queueJob: any; onUpdateGroupName: any; getContactProfileNameOrShortenedPubKey: () => string; getContactProfileNameOrFullPubKey: () => string; getProps(): any; updateLastMessage: () => void; updateProfileName: any; updateProfileAvatar: any; }