| 
									
										
										
										
											2023-01-03 11:55:46 -08:00
										 |  |  | // Copyright 2020 Signal Messenger, LLC
 | 
					
						
							| 
									
										
										
										
											2020-10-30 15:34:04 -05:00
										 |  |  | // SPDX-License-Identifier: AGPL-3.0-only
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | import type { Database } from '@signalapp/better-sqlite3'; | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  | import type { ReadonlyDeep } from 'type-fest'; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | import type { | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   ConversationAttributesType, | 
					
						
							|  |  |  |   MessageAttributesType, | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   SenderKeyInfoType, | 
					
						
							| 
									
										
										
										
											2020-09-24 14:53:21 -07:00
										 |  |  | } from '../model-types.d'; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | import type { StoredJob } from '../jobs/types'; | 
					
						
							| 
									
										
										
										
											2023-12-19 15:57:15 +01:00
										 |  |  | import type { ReactionType, ReactionReadStatus } from '../types/Reactions'; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | import type { ConversationColorType, CustomColorType } from '../types/Colors'; | 
					
						
							| 
									
										
										
										
											2021-10-26 14:15:33 -05:00
										 |  |  | import type { StorageAccessType } from '../types/Storage.d'; | 
					
						
							| 
									
										
										
										
											2023-04-10 09:31:45 -07:00
										 |  |  | import type { BytesToStrings } from '../types/Util'; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | import type { QualifiedAddressStringType } from '../types/QualifiedAddress'; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  | import type { StoryDistributionIdString } from '../types/StoryDistributionId'; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  | import type { AciString, PniString, ServiceIdString } from '../types/ServiceId'; | 
					
						
							| 
									
										
										
										
											2021-11-02 18:01:13 -05:00
										 |  |  | import type { BadgeType } from '../badges/types'; | 
					
						
							| 
									
										
										
										
											2022-04-29 16:42:47 -07:00
										 |  |  | import type { ReadStatus } from '../messages/MessageReadStatus'; | 
					
						
							| 
									
										
										
										
											2023-04-10 09:31:45 -07:00
										 |  |  | import type { RawBodyRange } from '../types/BodyRange'; | 
					
						
							| 
									
										
										
										
											2024-02-08 10:01:30 -08:00
										 |  |  | import type { | 
					
						
							|  |  |  |   GetMessagesBetweenOptions, | 
					
						
							|  |  |  |   MaybeStaleCallHistory, | 
					
						
							|  |  |  | } from './Server'; | 
					
						
							| 
									
										
										
										
											2023-03-20 15:23:53 -07:00
										 |  |  | import type { MessageTimestamps } from '../state/ducks/conversations'; | 
					
						
							| 
									
										
										
										
											2023-08-08 17:53:06 -07:00
										 |  |  | import type { | 
					
						
							|  |  |  |   CallHistoryDetails, | 
					
						
							|  |  |  |   CallHistoryFilter, | 
					
						
							|  |  |  |   CallHistoryGroup, | 
					
						
							|  |  |  |   CallHistoryPagination, | 
					
						
							| 
									
										
										
										
											2024-06-25 17:58:38 -07:00
										 |  |  |   CallLogEventTarget, | 
					
						
							| 
									
										
										
										
											2023-08-08 17:53:06 -07:00
										 |  |  | } from '../types/CallDisposition'; | 
					
						
							| 
									
										
										
										
											2024-09-04 11:06:06 -07:00
										 |  |  | import type { | 
					
						
							|  |  |  |   CallLinkRecord, | 
					
						
							|  |  |  |   CallLinkStateType, | 
					
						
							|  |  |  |   CallLinkType, | 
					
						
							|  |  |  | } from '../types/CallLink'; | 
					
						
							| 
									
										
										
										
											2024-04-15 20:11:48 -04:00
										 |  |  | import type { AttachmentDownloadJobType } from '../types/AttachmentDownload'; | 
					
						
							| 
									
										
										
										
											2024-09-06 10:52:19 -07:00
										 |  |  | import type { | 
					
						
							|  |  |  |   GroupSendEndorsementsData, | 
					
						
							|  |  |  |   GroupSendMemberEndorsementRecord, | 
					
						
							|  |  |  | } from '../types/GroupSendEndorsements'; | 
					
						
							| 
									
										
										
										
											2024-05-29 01:56:00 +10:00
										 |  |  | import type { SyncTaskType } from '../util/syncTasks'; | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  | import type { AttachmentBackupJobType } from '../types/AttachmentBackup'; | 
					
						
							| 
									
										
										
										
											2024-06-17 12:24:39 -07:00
										 |  |  | import type { SingleProtoJobQueue } from '../jobs/singleProtoJobQueue'; | 
					
						
							| 
									
										
										
										
											2024-09-04 11:06:06 -07:00
										 |  |  | import type { DeleteCallLinkOptions } from './server/callLinks'; | 
					
						
							| 
									
										
										
										
											2021-06-17 10:15:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type ReadableDB = Database & { __readable_db: never }; | 
					
						
							|  |  |  | export type WritableDB = ReadableDB & { __writable_db: never }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  | export type AdjacentMessagesByConversationOptionsType = Readonly<{ | 
					
						
							|  |  |  |   conversationId: string; | 
					
						
							|  |  |  |   messageId?: string; | 
					
						
							|  |  |  |   includeStoryReplies: boolean; | 
					
						
							|  |  |  |   limit?: number; | 
					
						
							|  |  |  |   receivedAt?: number; | 
					
						
							|  |  |  |   sentAt?: number; | 
					
						
							|  |  |  |   storyId: string | undefined; | 
					
						
							|  |  |  |   requireVisualMediaAttachments?: boolean; | 
					
						
							| 
									
										
										
										
											2024-09-05 07:15:30 +10:00
										 |  |  |   requireFileAttachments?: boolean; | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-20 15:23:53 -07:00
										 |  |  | export type GetNearbyMessageFromDeletedSetOptionsType = Readonly<{ | 
					
						
							|  |  |  |   conversationId: string; | 
					
						
							|  |  |  |   lastSelectedMessage: MessageTimestamps; | 
					
						
							|  |  |  |   deletedMessageIds: ReadonlyArray<string>; | 
					
						
							|  |  |  |   storyId: string | undefined; | 
					
						
							|  |  |  |   includeStoryReplies: boolean; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type MessageMetricsType = { | 
					
						
							|  |  |  |   id: string; | 
					
						
							|  |  |  |   received_at: number; | 
					
						
							|  |  |  |   sent_at: number; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | export type ConversationMetricsType = { | 
					
						
							|  |  |  |   oldest?: MessageMetricsType; | 
					
						
							|  |  |  |   newest?: MessageMetricsType; | 
					
						
							| 
									
										
										
										
											2022-04-22 11:35:14 -07:00
										 |  |  |   oldestUnseen?: MessageMetricsType; | 
					
						
							|  |  |  |   totalUnseen: number; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | export type ConversationType = ConversationAttributesType; | 
					
						
							|  |  |  | export type EmojiType = { | 
					
						
							|  |  |  |   shortName: string; | 
					
						
							|  |  |  |   lastUsage: number; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type IdentityKeyType = { | 
					
						
							|  |  |  |   firstUse: boolean; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   id: ServiceIdString | `conversation:${string}`; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   nonblockingApproval: boolean; | 
					
						
							| 
									
										
										
										
											2021-09-23 17:49:05 -07:00
										 |  |  |   publicKey: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   timestamp: number; | 
					
						
							|  |  |  |   verified: number; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | export type StoredIdentityKeyType = { | 
					
						
							|  |  |  |   firstUse: boolean; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   id: ServiceIdString | `conversation:${string}`; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |   nonblockingApproval: boolean; | 
					
						
							|  |  |  |   publicKey: string; | 
					
						
							|  |  |  |   timestamp: number; | 
					
						
							|  |  |  |   verified: number; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | export type IdentityKeyIdType = IdentityKeyType['id']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 17:09:37 -07:00
										 |  |  | export type ItemKeyType = keyof StorageAccessType; | 
					
						
							|  |  |  | export type AllItemsType = Partial<StorageAccessType>; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | export type StoredAllItemsType = Partial<BytesToStrings<StorageAccessType>>; | 
					
						
							| 
									
										
										
										
											2021-06-14 17:09:37 -07:00
										 |  |  | export type ItemType<K extends ItemKeyType> = { | 
					
						
							|  |  |  |   id: K; | 
					
						
							|  |  |  |   value: StorageAccessType[K]; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | export type StoredItemType<K extends ItemKeyType> = { | 
					
						
							|  |  |  |   id: K; | 
					
						
							|  |  |  |   value: BytesToStrings<StorageAccessType[K]>; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type MessageType = MessageAttributesType; | 
					
						
							| 
									
										
										
										
											2021-07-12 16:51:45 -07:00
										 |  |  | export type MessageTypeUnhydrated = { | 
					
						
							|  |  |  |   json: string; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  | export type PreKeyIdType = `${ServiceIdString}:${number}`; | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  | export type KyberPreKeyType = { | 
					
						
							|  |  |  |   id: PreKeyIdType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createdAt: number; | 
					
						
							|  |  |  |   data: Uint8Array; | 
					
						
							|  |  |  |   isConfirmed: boolean; | 
					
						
							|  |  |  |   isLastResort: boolean; | 
					
						
							|  |  |  |   keyId: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   ourServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | export type StoredKyberPreKeyType = KyberPreKeyType & { | 
					
						
							|  |  |  |   data: string; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type PreKeyType = { | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  |   id: PreKeyIdType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createdAt: number; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  |   keyId: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   ourServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-09-23 17:49:05 -07:00
										 |  |  |   privateKey: Uint8Array; | 
					
						
							|  |  |  |   publicKey: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | export type StoredPreKeyType = PreKeyType & { | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |   privateKey: string; | 
					
						
							|  |  |  |   publicKey: string; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  | export type ServerSearchResultMessageType = { | 
					
						
							| 
									
										
										
										
											2021-07-12 16:51:45 -07:00
										 |  |  |   json: string; | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // If the FTS matches text in message.body, snippet will be populated
 | 
					
						
							|  |  |  |   ftsSnippet: string | null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Otherwise, a matching mention will be returned
 | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   mentionAci: string | null; | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  |   mentionStart: number | null; | 
					
						
							|  |  |  |   mentionLength: number | null; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | export type ClientSearchResultMessageType = MessageType & { | 
					
						
							|  |  |  |   json: string; | 
					
						
							| 
									
										
										
										
											2023-04-10 09:31:45 -07:00
										 |  |  |   bodyRanges: ReadonlyArray<RawBodyRange>; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   snippet: string; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | export type SentProtoType = { | 
					
						
							|  |  |  |   contentHint: number; | 
					
						
							| 
									
										
										
										
											2021-09-23 17:49:05 -07:00
										 |  |  |   proto: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   timestamp: number; | 
					
						
							| 
									
										
										
										
											2022-07-01 09:55:13 -07:00
										 |  |  |   urgent: boolean; | 
					
						
							| 
									
										
										
										
											2022-08-15 14:53:33 -07:00
										 |  |  |   hasPniSignatureMessage: boolean; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | export type SentProtoWithMessageIdsType = SentProtoType & { | 
					
						
							|  |  |  |   messageIds: Array<string>; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  | export type SentRecipientsType = Record<ServiceIdString, Array<number>>; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  | export type SentMessagesType = Array<string>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // These two are for test only
 | 
					
						
							|  |  |  | export type SentRecipientsDBType = { | 
					
						
							|  |  |  |   payloadId: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   recipientServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   deviceId: number; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | export type SentMessageDBType = { | 
					
						
							|  |  |  |   payloadId: number; | 
					
						
							|  |  |  |   messageId: string; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-13 18:18:43 -07:00
										 |  |  | export type SenderKeyType = { | 
					
						
							|  |  |  |   // Primary key
 | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  |   id: `${QualifiedAddressStringType}--${string}`; | 
					
						
							| 
									
										
										
										
											2021-05-13 18:18:43 -07:00
										 |  |  |   // These two are combined into one string to give us the final id
 | 
					
						
							|  |  |  |   senderId: string; | 
					
						
							|  |  |  |   distributionId: string; | 
					
						
							|  |  |  |   // Raw data to serialize/deserialize into signal-client SenderKeyRecord
 | 
					
						
							| 
									
										
										
										
											2021-09-23 17:49:05 -07:00
										 |  |  |   data: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-05-13 18:18:43 -07:00
										 |  |  |   lastUpdatedDate: number; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | export type SenderKeyIdType = SenderKeyType['id']; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type SessionType = { | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  |   id: QualifiedAddressStringType; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   ourServiceId: ServiceIdString; | 
					
						
							|  |  |  |   serviceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   conversationId: string; | 
					
						
							|  |  |  |   deviceId: number; | 
					
						
							| 
									
										
										
										
											2024-10-02 17:23:00 -07:00
										 |  |  |   record: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | export type SessionIdType = SessionType['id']; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type SignedPreKeyType = { | 
					
						
							|  |  |  |   confirmed: boolean; | 
					
						
							|  |  |  |   created_at: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   ourServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   id: `${ServiceIdString}:${number}`; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  |   keyId: number; | 
					
						
							| 
									
										
										
										
											2021-09-23 17:49:05 -07:00
										 |  |  |   privateKey: Uint8Array; | 
					
						
							|  |  |  |   publicKey: Uint8Array; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | export type StoredSignedPreKeyType = { | 
					
						
							|  |  |  |   confirmed: boolean; | 
					
						
							|  |  |  |   created_at: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   ourServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   id: `${ServiceIdString}:${number}`; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |   keyId: number; | 
					
						
							|  |  |  |   privateKey: string; | 
					
						
							|  |  |  |   publicKey: string; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-09-09 19:38:11 -07:00
										 |  |  | export type SignedPreKeyIdType = SignedPreKeyType['id']; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | export type StickerType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   id: number; | 
					
						
							|  |  |  |   packId: string; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  |   emoji?: string; | 
					
						
							| 
									
										
										
										
											2021-04-07 13:00:22 -07:00
										 |  |  |   isCoverOnly: boolean; | 
					
						
							|  |  |  |   lastUsed?: number; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   path: string; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   width: number; | 
					
						
							|  |  |  |   height: number; | 
					
						
							| 
									
										
										
										
											2024-07-11 12:44:09 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   version: 1 | 2; | 
					
						
							|  |  |  |   localKey?: string; | 
					
						
							|  |  |  |   size?: number; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const StickerPackStatuses = [ | 
					
						
							|  |  |  |   'known', | 
					
						
							|  |  |  |   'ephemeral', | 
					
						
							|  |  |  |   'downloaded', | 
					
						
							|  |  |  |   'installed', | 
					
						
							|  |  |  |   'pending', | 
					
						
							|  |  |  |   'error', | 
					
						
							|  |  |  | ] as const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-23 17:31:40 -07:00
										 |  |  | export type StickerPackStatusType = (typeof StickerPackStatuses)[number]; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-03 10:10:49 -07:00
										 |  |  | export type StorageServiceFieldsType = Readonly<{ | 
					
						
							|  |  |  |   storageID?: string; | 
					
						
							|  |  |  |   storageVersion?: number; | 
					
						
							|  |  |  |   storageUnknownFields?: Uint8Array | null; | 
					
						
							|  |  |  |   storageNeedsSync: boolean; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type InstalledStickerPackType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   id: string; | 
					
						
							|  |  |  |   key: string; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-03 10:10:49 -07:00
										 |  |  |   uninstalledAt?: undefined; | 
					
						
							|  |  |  |   position?: number | null; | 
					
						
							|  |  |  | }> & | 
					
						
							|  |  |  |   StorageServiceFieldsType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type UninstalledStickerPackType = Readonly<{ | 
					
						
							|  |  |  |   id: string; | 
					
						
							|  |  |  |   key?: undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   uninstalledAt: number; | 
					
						
							|  |  |  |   position?: undefined; | 
					
						
							|  |  |  | }> & | 
					
						
							|  |  |  |   StorageServiceFieldsType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type StickerPackInfoType = | 
					
						
							|  |  |  |   | InstalledStickerPackType | 
					
						
							|  |  |  |   | UninstalledStickerPackType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type StickerPackType = InstalledStickerPackType & | 
					
						
							|  |  |  |   Readonly<{ | 
					
						
							|  |  |  |     attemptedStatus?: 'downloaded' | 'installed' | 'ephemeral'; | 
					
						
							|  |  |  |     author: string; | 
					
						
							|  |  |  |     coverStickerId: number; | 
					
						
							|  |  |  |     createdAt: number; | 
					
						
							|  |  |  |     downloadAttempts: number; | 
					
						
							|  |  |  |     installedAt?: number; | 
					
						
							|  |  |  |     lastUsed?: number; | 
					
						
							|  |  |  |     status: StickerPackStatusType; | 
					
						
							|  |  |  |     stickerCount: number; | 
					
						
							|  |  |  |     stickers: Record<string, StickerType>; | 
					
						
							|  |  |  |     title: string; | 
					
						
							|  |  |  |   }>; | 
					
						
							| 
									
										
										
										
											2021-07-09 12:36:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | export type UnprocessedType = { | 
					
						
							|  |  |  |   id: string; | 
					
						
							|  |  |  |   timestamp: number; | 
					
						
							| 
									
										
										
										
											2022-03-24 14:28:56 -07:00
										 |  |  |   receivedAtCounter: number | null; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   version: number; | 
					
						
							|  |  |  |   attempts: number; | 
					
						
							| 
									
										
										
										
											2021-05-17 11:03:42 -07:00
										 |  |  |   envelope?: string; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-13 14:39:35 -07:00
										 |  |  |   messageAgeSec?: number; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   source?: string; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   sourceServiceId?: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-05-17 11:03:42 -07:00
										 |  |  |   sourceDevice?: number; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   destinationServiceId?: ServiceIdString; | 
					
						
							|  |  |  |   updatedPni?: PniString; | 
					
						
							| 
									
										
										
										
											2021-05-27 16:17:05 -04:00
										 |  |  |   serverGuid?: string; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   serverTimestamp?: number; | 
					
						
							|  |  |  |   decrypted?: string; | 
					
						
							| 
									
										
										
										
											2022-07-05 15:20:30 -07:00
										 |  |  |   urgent?: boolean; | 
					
						
							| 
									
										
										
										
											2022-10-07 10:02:08 -07:00
										 |  |  |   story?: boolean; | 
					
						
							| 
									
										
										
										
											2023-02-07 16:55:12 -08:00
										 |  |  |   reportingToken?: string; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 16:13:13 -07:00
										 |  |  | export type UnprocessedUpdateType = { | 
					
						
							|  |  |  |   source?: string; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   sourceServiceId?: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-08-02 14:55:31 -07:00
										 |  |  |   sourceDevice?: number; | 
					
						
							| 
									
										
										
										
											2021-05-27 16:17:05 -04:00
										 |  |  |   serverGuid?: string; | 
					
						
							| 
									
										
										
										
											2021-04-16 16:13:13 -07:00
										 |  |  |   serverTimestamp?: number; | 
					
						
							|  |  |  |   decrypted?: string; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-15 17:11:28 -07:00
										 |  |  | export type ConversationMessageStatsType = { | 
					
						
							| 
									
										
										
										
											2021-08-16 09:56:27 -07:00
										 |  |  |   activity?: MessageType; | 
					
						
							|  |  |  |   preview?: MessageType; | 
					
						
							|  |  |  |   hasUserInitiatedMessages: boolean; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-31 14:35:01 -07:00
										 |  |  | export type DeleteSentProtoRecipientOptionsType = Readonly<{ | 
					
						
							|  |  |  |   timestamp: number; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   recipientServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-08-31 14:35:01 -07:00
										 |  |  |   deviceId: number; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 14:53:33 -07:00
										 |  |  | export type DeleteSentProtoRecipientResultType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   successfulPhoneNumberShares: ReadonlyArray<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2022-08-15 14:53:33 -07:00
										 |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  | export type StoryDistributionType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   id: StoryDistributionIdString; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   name: string; | 
					
						
							| 
									
										
										
										
											2022-06-30 20:52:03 -04:00
										 |  |  |   deletedAtTimestamp?: number; | 
					
						
							|  |  |  |   allowsReplies: boolean; | 
					
						
							|  |  |  |   isBlockList: boolean; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   senderKeyInfo: SenderKeyInfoType | undefined; | 
					
						
							| 
									
										
										
										
											2022-08-03 10:10:49 -07:00
										 |  |  | }> & | 
					
						
							|  |  |  |   StorageServiceFieldsType; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  | export type StoryDistributionMemberType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   listId: StoryDistributionIdString; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   serviceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  | }>; | 
					
						
							|  |  |  | export type StoryDistributionWithMembersType = Readonly< | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     members: Array<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   } & StoryDistributionType | 
					
						
							|  |  |  | >; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type StoryReadType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |   authorId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2022-07-08 13:46:25 -07:00
										 |  |  |   conversationId: string; | 
					
						
							|  |  |  |   storyId: string; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   storyReadDate: number; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | export type ReactionResultType = Pick< | 
					
						
							|  |  |  |   ReactionType, | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |   'targetAuthorAci' | 'targetTimestamp' | 'messageId' | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | > & { rowid: number }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type GetUnreadByConversationAndMarkReadResultType = Array< | 
					
						
							|  |  |  |   { originalReadStatus: ReadStatus | undefined } & Pick< | 
					
						
							|  |  |  |     MessageType, | 
					
						
							|  |  |  |     | 'id' | 
					
						
							|  |  |  |     | 'source' | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |     | 'sourceServiceId' | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |     | 'sent_at' | 
					
						
							|  |  |  |     | 'type' | 
					
						
							|  |  |  |     | 'readStatus' | 
					
						
							|  |  |  |     | 'seenStatus' | 
					
						
							| 
									
										
										
										
											2024-06-26 16:51:11 -04:00
										 |  |  |     | 'expirationStartTimestamp' | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |   > | 
					
						
							|  |  |  | >; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type GetConversationRangeCenteredOnMessageResultType<Message> = | 
					
						
							|  |  |  |   Readonly<{ | 
					
						
							|  |  |  |     older: Array<Message>; | 
					
						
							|  |  |  |     newer: Array<Message>; | 
					
						
							|  |  |  |     metrics: ConversationMetricsType; | 
					
						
							|  |  |  |   }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-15 07:20:33 -07:00
										 |  |  | export type MessageCursorType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  |   done: boolean; | 
					
						
							|  |  |  |   runId: string; | 
					
						
							|  |  |  |   count: number; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-15 07:20:33 -07:00
										 |  |  | export type MessageAttachmentsCursorType = MessageCursorType & | 
					
						
							|  |  |  |   Readonly<{ | 
					
						
							|  |  |  |     __message_attachments_cursor: never; | 
					
						
							|  |  |  |   }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  | export type GetKnownMessageAttachmentsResultType = Readonly<{ | 
					
						
							|  |  |  |   cursor: MessageAttachmentsCursorType; | 
					
						
							|  |  |  |   attachments: ReadonlyArray<string>; | 
					
						
							| 
									
										
										
										
											2024-08-19 13:05:35 -07:00
										 |  |  |   downloads: ReadonlyArray<string>; | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-15 07:20:33 -07:00
										 |  |  | export type PageMessagesCursorType = MessageCursorType & | 
					
						
							|  |  |  |   Readonly<{ | 
					
						
							|  |  |  |     __page_messages_cursor: never; | 
					
						
							|  |  |  |   }>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type PageMessagesResultType = Readonly<{ | 
					
						
							|  |  |  |   cursor: PageMessagesCursorType; | 
					
						
							|  |  |  |   messages: ReadonlyArray<MessageAttributesType>; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-28 09:19:48 -08:00
										 |  |  | export type GetAllStoriesResultType = ReadonlyArray< | 
					
						
							|  |  |  |   MessageType & { | 
					
						
							|  |  |  |     hasReplies: boolean; | 
					
						
							|  |  |  |     hasRepliesFromSelf: boolean; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | >; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-27 19:48:57 -04:00
										 |  |  | export type EditedMessageType = Readonly<{ | 
					
						
							| 
									
										
										
										
											2023-05-16 10:37:12 -07:00
										 |  |  |   conversationId: string; | 
					
						
							| 
									
										
										
										
											2023-03-27 19:48:57 -04:00
										 |  |  |   messageId: string; | 
					
						
							|  |  |  |   sentAt: number; | 
					
						
							|  |  |  |   readStatus: MessageType['readStatus']; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  | export type BackupCdnMediaObjectType = { | 
					
						
							|  |  |  |   mediaId: string; | 
					
						
							|  |  |  |   cdnNumber: number; | 
					
						
							|  |  |  |   sizeOnBackupCdn: number; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type GetRecentStoryRepliesOptionsType = { | 
					
						
							|  |  |  |   limit?: number; | 
					
						
							|  |  |  |   messageId?: string; | 
					
						
							|  |  |  |   receivedAt?: number; | 
					
						
							|  |  |  |   sentAt?: number; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-03 18:00:51 -04:00
										 |  |  | export enum AttachmentDownloadSource { | 
					
						
							|  |  |  |   BACKUP_IMPORT = 'backup_import', | 
					
						
							|  |  |  |   STANDARD = 'standard', | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | type ReadableInterface = { | 
					
						
							|  |  |  |   close: () => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getSenderKeyById: (id: SenderKeyIdType) => SenderKeyType | undefined; | 
					
						
							|  |  |  |   getAllSenderKeys: () => Array<SenderKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAllSentProtos: () => Array<SentProtoType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Test-only
 | 
					
						
							|  |  |  |   _getAllSentProtoRecipients: () => Array<SentRecipientsDBType>; | 
					
						
							|  |  |  |   _getAllSentProtoMessageIds: () => Array<SentMessageDBType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAllSessions: () => Array<SessionType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getConversationCount: () => number; | 
					
						
							|  |  |  |   getConversationById: (id: string) => ConversationType | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAllConversations: () => Array<ConversationType>; | 
					
						
							|  |  |  |   getAllConversationIds: () => Array<string>; | 
					
						
							|  |  |  |   getAllGroupsInvolvingServiceId: ( | 
					
						
							|  |  |  |     serviceId: ServiceIdString | 
					
						
							|  |  |  |   ) => Array<ConversationType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getGroupSendCombinedEndorsementExpiration: (groupId: string) => number | null; | 
					
						
							| 
									
										
										
										
											2024-09-06 10:52:19 -07:00
										 |  |  |   getGroupSendEndorsementsData: ( | 
					
						
							|  |  |  |     groupId: string | 
					
						
							|  |  |  |   ) => GroupSendEndorsementsData | null; | 
					
						
							|  |  |  |   getGroupSendMemberEndorsement: ( | 
					
						
							|  |  |  |     groupId: string, | 
					
						
							|  |  |  |     memberAci: AciString | 
					
						
							|  |  |  |   ) => GroupSendMemberEndorsementRecord | null; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   getMessageCount: (conversationId?: string) => number; | 
					
						
							|  |  |  |   getStoryCount: (conversationId: string) => number; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pageMessages: (cursor?: PageMessagesCursorType) => PageMessagesResultType; | 
					
						
							|  |  |  |   finishPageMessages: (cursor: PageMessagesCursorType) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getTotalUnreadForConversation: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       storyId: string | undefined; | 
					
						
							|  |  |  |       includeStoryReplies: boolean; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ) => number; | 
					
						
							|  |  |  |   getTotalUnreadMentionsOfMeForConversation: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       storyId?: string; | 
					
						
							|  |  |  |       includeStoryReplies: boolean; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ) => number; | 
					
						
							|  |  |  |   getOldestUnreadMentionOfMeForConversation( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       storyId?: string; | 
					
						
							|  |  |  |       includeStoryReplies: boolean; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ): MessageMetricsType | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getReactionByTimestamp: ( | 
					
						
							|  |  |  |     fromId: string, | 
					
						
							|  |  |  |     timestamp: number | 
					
						
							|  |  |  |   ) => ReactionType | undefined; | 
					
						
							|  |  |  |   _getAllReactions: () => Array<ReactionType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getMessageBySender: (options: { | 
					
						
							|  |  |  |     source?: string; | 
					
						
							|  |  |  |     sourceServiceId?: ServiceIdString; | 
					
						
							|  |  |  |     sourceDevice?: number; | 
					
						
							|  |  |  |     sent_at: number; | 
					
						
							|  |  |  |   }) => MessageType | undefined; | 
					
						
							|  |  |  |   getMessageById: (id: string) => MessageType | undefined; | 
					
						
							|  |  |  |   getMessagesById: (messageIds: ReadonlyArray<string>) => Array<MessageType>; | 
					
						
							|  |  |  |   _getAllMessages: () => Array<MessageType>; | 
					
						
							|  |  |  |   _getAllEditedMessages: () => Array<{ messageId: string; sentAt: number }>; | 
					
						
							|  |  |  |   getAllMessageIds: () => Array<string>; | 
					
						
							|  |  |  |   getMessagesBySentAt: (sentAt: number) => Array<MessageType>; | 
					
						
							|  |  |  |   getExpiredMessages: () => Array<MessageType>; | 
					
						
							|  |  |  |   getMessagesUnexpectedlyMissingExpirationStartTimestamp: () => Array<MessageType>; | 
					
						
							|  |  |  |   getSoonestMessageExpiry: () => undefined | number; | 
					
						
							|  |  |  |   getNextTapToViewMessageTimestampToAgeOut: () => undefined | number; | 
					
						
							|  |  |  |   getTapToViewMessagesNeedingErase: () => Array<MessageType>; | 
					
						
							|  |  |  |   // getOlderMessagesByConversation is JSON on server, full message on Client
 | 
					
						
							|  |  |  |   getAllStories: (options: { | 
					
						
							|  |  |  |     conversationId?: string; | 
					
						
							|  |  |  |     sourceServiceId?: ServiceIdString; | 
					
						
							|  |  |  |   }) => GetAllStoriesResultType; | 
					
						
							|  |  |  |   // getNewerMessagesByConversation is JSON on server, full message on Client
 | 
					
						
							|  |  |  |   getMessageMetricsForConversation: (options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							|  |  |  |     storyId?: string; | 
					
						
							|  |  |  |     includeStoryReplies: boolean; | 
					
						
							|  |  |  |   }) => ConversationMetricsType; | 
					
						
							|  |  |  |   // getConversationRangeCenteredOnMessage is JSON on server, full message on client
 | 
					
						
							|  |  |  |   getConversationMessageStats: (options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							|  |  |  |     includeStoryReplies: boolean; | 
					
						
							|  |  |  |   }) => ConversationMessageStatsType; | 
					
						
							|  |  |  |   getLastConversationMessage(options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							|  |  |  |   }): MessageType | undefined; | 
					
						
							|  |  |  |   getAllCallHistory: () => ReadonlyArray<CallHistoryDetails>; | 
					
						
							|  |  |  |   getCallHistoryUnreadCount(): number; | 
					
						
							|  |  |  |   getCallHistoryMessageByCallId(options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							|  |  |  |     callId: string; | 
					
						
							|  |  |  |   }): MessageType | undefined; | 
					
						
							|  |  |  |   getCallHistory( | 
					
						
							|  |  |  |     callId: string, | 
					
						
							|  |  |  |     peerId: ServiceIdString | string | 
					
						
							|  |  |  |   ): CallHistoryDetails | undefined; | 
					
						
							|  |  |  |   getCallHistoryGroupsCount(filter: CallHistoryFilter): number; | 
					
						
							|  |  |  |   getCallHistoryGroups( | 
					
						
							|  |  |  |     filter: CallHistoryFilter, | 
					
						
							|  |  |  |     pagination: CallHistoryPagination | 
					
						
							|  |  |  |   ): Array<CallHistoryGroup>; | 
					
						
							|  |  |  |   hasGroupCallHistoryMessage: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     eraId: string | 
					
						
							|  |  |  |   ) => boolean; | 
					
						
							|  |  |  |   callLinkExists(roomId: string): boolean; | 
					
						
							|  |  |  |   getAllCallLinks: () => ReadonlyArray<CallLinkType>; | 
					
						
							|  |  |  |   getCallLinkByRoomId: (roomId: string) => CallLinkType | undefined; | 
					
						
							| 
									
										
										
										
											2024-09-04 11:06:06 -07:00
										 |  |  |   getCallLinkRecordByRoomId: (roomId: string) => CallLinkRecord | undefined; | 
					
						
							|  |  |  |   getAllCallLinkRecordsWithAdminKey(): ReadonlyArray<CallLinkRecord>; | 
					
						
							| 
									
										
										
										
											2024-09-16 12:22:01 -07:00
										 |  |  |   getAllMarkedDeletedCallLinkRoomIds(): ReadonlyArray<string>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getMessagesBetween: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     options: GetMessagesBetweenOptions | 
					
						
							|  |  |  |   ) => Array<string>; | 
					
						
							|  |  |  |   getNearbyMessageFromDeletedSet: ( | 
					
						
							|  |  |  |     options: GetNearbyMessageFromDeletedSetOptionsType | 
					
						
							|  |  |  |   ) => string | null; | 
					
						
							|  |  |  |   getMostRecentAddressableMessages: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     limit?: number | 
					
						
							|  |  |  |   ) => Array<MessageType>; | 
					
						
							|  |  |  |   getMostRecentAddressableNondisappearingMessages: ( | 
					
						
							|  |  |  |     conversationId: string, | 
					
						
							|  |  |  |     limit?: number | 
					
						
							|  |  |  |   ) => Array<MessageType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getUnprocessedCount: () => number; | 
					
						
							|  |  |  |   getUnprocessedById: (id: string) => UnprocessedType | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAttachmentDownloadJob( | 
					
						
							|  |  |  |     job: Pick< | 
					
						
							|  |  |  |       AttachmentDownloadJobType, | 
					
						
							|  |  |  |       'messageId' | 'attachmentType' | 'digest' | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |   ): AttachmentDownloadJobType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getBackupCdnObjectMetadata: ( | 
					
						
							|  |  |  |     mediaId: string | 
					
						
							|  |  |  |   ) => BackupCdnMediaObjectType | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getStickerCount: () => number; | 
					
						
							|  |  |  |   getAllStickerPacks: () => Array<StickerPackType>; | 
					
						
							|  |  |  |   getInstalledStickerPacks: () => Array<StickerPackType>; | 
					
						
							|  |  |  |   getUninstalledStickerPacks: () => Array<UninstalledStickerPackType>; | 
					
						
							|  |  |  |   getStickerPackInfo: (packId: string) => StickerPackInfoType | undefined; | 
					
						
							|  |  |  |   getAllStickers: () => Array<StickerType>; | 
					
						
							|  |  |  |   getRecentStickers: (options?: { limit?: number }) => Array<StickerType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getRecentEmojis: (limit?: number) => Array<EmojiType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAllBadges(): Array<BadgeType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   _getAllStoryDistributions(): Array<StoryDistributionType>; | 
					
						
							|  |  |  |   _getAllStoryDistributionMembers(): Array<StoryDistributionMemberType>; | 
					
						
							|  |  |  |   getAllStoryDistributionsWithMembers(): Array<StoryDistributionWithMembersType>; | 
					
						
							|  |  |  |   getStoryDistributionWithMembers( | 
					
						
							|  |  |  |     id: string | 
					
						
							|  |  |  |   ): StoryDistributionWithMembersType | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   _getAllStoryReads(): Array<StoryReadType>; | 
					
						
							|  |  |  |   getLastStoryReadsForAuthor(options: { | 
					
						
							|  |  |  |     authorId: ServiceIdString; | 
					
						
							|  |  |  |     conversationId?: string; | 
					
						
							|  |  |  |     limit?: number; | 
					
						
							|  |  |  |   }): Array<StoryReadType>; | 
					
						
							|  |  |  |   countStoryReadsByConversation(conversationId: string): number; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getMessagesNeedingUpgrade: ( | 
					
						
							|  |  |  |     limit: number, | 
					
						
							|  |  |  |     options: { maxVersion: number } | 
					
						
							|  |  |  |   ) => Array<MessageType>; | 
					
						
							|  |  |  |   getMessageServerGuidsForSpam: (conversationId: string) => Array<string>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getJobsInQueue(queueType: string): Array<StoredJob>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   wasGroupCallRingPreviouslyCanceled(ringId: bigint): boolean; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getMaxMessageCounter(): number | undefined; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getStatisticsForLogging(): Record<string, string>; | 
					
						
							| 
									
										
										
										
											2024-09-03 18:00:51 -04:00
										 |  |  |   getSizeOfPendingBackupAttachmentDownloadJobs(): number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type WritableInterface = { | 
					
						
							|  |  |  |   close: () => void; | 
					
						
							| 
									
										
										
										
											2024-03-15 07:20:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeIndexedDBFiles: () => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeIdentityKeyById: (id: IdentityKeyIdType) => number; | 
					
						
							|  |  |  |   removeAllIdentityKeys: () => number; | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeKyberPreKeyById: (id: PreKeyIdType | Array<PreKeyIdType>) => number; | 
					
						
							|  |  |  |   removeKyberPreKeysByServiceId: (serviceId: ServiceIdString) => void; | 
					
						
							|  |  |  |   removeAllKyberPreKeys: () => number; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   removePreKeyById: (id: PreKeyIdType | Array<PreKeyIdType>) => number; | 
					
						
							|  |  |  |   removePreKeysByServiceId: (serviceId: ServiceIdString) => void; | 
					
						
							|  |  |  |   removeAllPreKeys: () => number; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-14 09:53:20 -07:00
										 |  |  |   removeSignedPreKeyById: ( | 
					
						
							|  |  |  |     id: SignedPreKeyIdType | Array<SignedPreKeyIdType> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => number; | 
					
						
							|  |  |  |   removeSignedPreKeysByServiceId: (serviceId: ServiceIdString) => void; | 
					
						
							|  |  |  |   removeAllSignedPreKeys: () => number; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeAllItems: () => number; | 
					
						
							|  |  |  |   removeItemById: (id: ItemKeyType | Array<ItemKeyType>) => number; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   createOrUpdateSenderKey: (key: SenderKeyType) => void; | 
					
						
							|  |  |  |   removeAllSenderKeys: () => void; | 
					
						
							|  |  |  |   removeSenderKeyById: (id: SenderKeyIdType) => void; | 
					
						
							| 
									
										
										
										
											2021-05-13 18:18:43 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getSentProtoByRecipient: (options: { | 
					
						
							|  |  |  |     now: number; | 
					
						
							|  |  |  |     recipientServiceId: ServiceIdString; | 
					
						
							|  |  |  |     timestamp: number; | 
					
						
							|  |  |  |   }) => SentProtoWithMessageIdsType | undefined; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   insertSentProto: ( | 
					
						
							|  |  |  |     proto: SentProtoType, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       recipients: SentRecipientsType; | 
					
						
							|  |  |  |       messageIds: SentMessagesType; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => number; | 
					
						
							|  |  |  |   deleteSentProtosOlderThan: (timestamp: number) => void; | 
					
						
							|  |  |  |   deleteSentProtoByMessageId: (messageId: string) => void; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   insertProtoRecipients: (options: { | 
					
						
							|  |  |  |     id: number; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     recipientServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |     deviceIds: Array<number>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => void; | 
					
						
							| 
									
										
										
										
											2021-08-31 14:35:01 -07:00
										 |  |  |   deleteSentProtoRecipient: ( | 
					
						
							|  |  |  |     options: | 
					
						
							|  |  |  |       | DeleteSentProtoRecipientOptionsType | 
					
						
							|  |  |  |       | ReadonlyArray<DeleteSentProtoRecipientOptionsType> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => DeleteSentProtoRecipientResultType; | 
					
						
							|  |  |  |   removeAllSentProtos: () => void; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   createOrUpdateSession: (data: SessionType) => void; | 
					
						
							|  |  |  |   createOrUpdateSessions: (array: Array<SessionType>) => void; | 
					
						
							| 
									
										
										
										
											2022-01-07 18:12:13 -08:00
										 |  |  |   commitDecryptResult(options: { | 
					
						
							|  |  |  |     senderKeys: Array<SenderKeyType>; | 
					
						
							| 
									
										
										
										
											2021-05-17 11:03:42 -07:00
										 |  |  |     sessions: Array<SessionType>; | 
					
						
							|  |  |  |     unprocessed: Array<UnprocessedType>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }): void; | 
					
						
							|  |  |  |   removeSessionById: (id: SessionIdType) => number; | 
					
						
							|  |  |  |   removeSessionsByConversation: (conversationId: string) => void; | 
					
						
							|  |  |  |   removeSessionsByServiceId: (serviceId: ServiceIdString) => void; | 
					
						
							|  |  |  |   removeAllSessions: () => number; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   saveConversation: (data: ConversationType) => void; | 
					
						
							|  |  |  |   saveConversations: (array: Array<ConversationType>) => void; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  |   // updateConversation is a normal data method on Server, a sync batch-add on Client
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   updateConversations: (array: Array<ConversationType>) => void; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  |   // removeConversation handles either one id or an array on Server, and one id on Client
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   _removeAllConversations: () => void; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  |   updateAllConversationColors: ( | 
					
						
							|  |  |  |     conversationColor?: ConversationColorType, | 
					
						
							|  |  |  |     customColorData?: { | 
					
						
							|  |  |  |       id: string; | 
					
						
							|  |  |  |       value: CustomColorType; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   removeAllProfileKeyCredentials: () => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   replaceAllEndorsementsForGroup: (data: GroupSendEndorsementsData) => void; | 
					
						
							|  |  |  |   deleteAllEndorsementsForGroup: (groupId: string) => void; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 13:45:18 -07:00
										 |  |  |   saveMessage: ( | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     data: ReadonlyDeep<MessageType>, | 
					
						
							| 
									
										
										
										
											2021-12-20 13:04:02 -08:00
										 |  |  |     options: { | 
					
						
							| 
									
										
										
										
											2021-08-31 15:58:39 -05:00
										 |  |  |       jobToInsert?: StoredJob; | 
					
						
							|  |  |  |       forceSave?: boolean; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |       ourAci: AciString; | 
					
						
							| 
									
										
										
										
											2021-08-31 15:58:39 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => string; | 
					
						
							| 
									
										
										
										
											2021-07-19 13:45:18 -07:00
										 |  |  |   saveMessages: ( | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     arrayOfMessages: ReadonlyArray<ReadonlyDeep<MessageType>>, | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     options: { forceSave?: boolean; ourAci: AciString } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => Array<string>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   getUnreadByConversationAndMarkRead: (options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							| 
									
										
										
										
											2022-09-29 20:57:11 -04:00
										 |  |  |     includeStoryReplies: boolean; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |     newestUnreadAt: number; | 
					
						
							| 
									
										
										
										
											2022-09-22 16:49:06 -07:00
										 |  |  |     now?: number; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |     readAt?: number; | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     storyId?: string; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => GetUnreadByConversationAndMarkReadResultType; | 
					
						
							| 
									
										
										
										
											2023-03-27 19:48:57 -04:00
										 |  |  |   getUnreadEditedMessagesAndMarkRead: (options: { | 
					
						
							| 
									
										
										
										
											2023-05-16 10:37:12 -07:00
										 |  |  |     conversationId: string; | 
					
						
							| 
									
										
										
										
											2023-03-27 19:48:57 -04:00
										 |  |  |     newestUnreadAt: number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => GetUnreadByConversationAndMarkReadResultType; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   getUnreadReactionsAndMarkRead: (options: { | 
					
						
							|  |  |  |     conversationId: string; | 
					
						
							|  |  |  |     newestUnreadAt: number; | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     storyId?: string; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => Array<ReactionResultType>; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   markReactionAsRead: ( | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     targetAuthorServiceId: ServiceIdString, | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |     targetTimestamp: number | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => ReactionType | undefined; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |   removeReactionFromConversation: (reaction: { | 
					
						
							|  |  |  |     emoji: string; | 
					
						
							|  |  |  |     fromId: string; | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     targetAuthorServiceId: ServiceIdString; | 
					
						
							| 
									
										
										
										
											2021-07-15 16:48:09 -07:00
										 |  |  |     targetTimestamp: number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => void; | 
					
						
							| 
									
										
										
										
											2023-12-19 15:57:15 +01:00
										 |  |  |   addReaction: ( | 
					
						
							|  |  |  |     reactionObj: ReactionType, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       readStatus: ReactionReadStatus; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   _removeAllReactions: () => void; | 
					
						
							|  |  |  |   _removeAllMessages: () => void; | 
					
						
							| 
									
										
										
										
											2024-08-22 11:12:00 -07:00
										 |  |  |   incrementMessagesMigrationAttempts: ( | 
					
						
							|  |  |  |     messageIds: ReadonlyArray<string> | 
					
						
							|  |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   clearCallHistory: (target: CallLogEventTarget) => ReadonlyArray<string>; | 
					
						
							| 
									
										
										
										
											2024-08-14 04:39:04 +10:00
										 |  |  |   _removeAllCallHistory: () => void; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   markCallHistoryDeleted: (callId: string) => void; | 
					
						
							|  |  |  |   cleanupCallHistoryMessages: () => void; | 
					
						
							|  |  |  |   markCallHistoryRead(callId: string): void; | 
					
						
							| 
									
										
										
										
											2024-08-27 06:20:23 -07:00
										 |  |  |   markAllCallHistoryRead(target: CallLogEventTarget): number; | 
					
						
							|  |  |  |   markAllCallHistoryReadInConversation(target: CallLogEventTarget): number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   saveCallHistory(callHistory: CallHistoryDetails): void; | 
					
						
							|  |  |  |   markCallHistoryMissed(callIds: ReadonlyArray<string>): void; | 
					
						
							|  |  |  |   getRecentStaleRingsAndMarkOlderMissed(): ReadonlyArray<MaybeStaleCallHistory>; | 
					
						
							|  |  |  |   insertCallLink(callLink: CallLinkType): void; | 
					
						
							| 
									
										
										
										
											2024-09-04 11:06:06 -07:00
										 |  |  |   updateCallLink(callLink: CallLinkType): void; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   updateCallLinkAdminKeyByRoomId(roomId: string, adminKey: string): void; | 
					
						
							| 
									
										
										
										
											2024-04-01 12:19:35 -07:00
										 |  |  |   updateCallLinkState( | 
					
						
							|  |  |  |     roomId: string, | 
					
						
							| 
									
										
										
										
											2024-04-25 10:09:05 -07:00
										 |  |  |     callLinkState: CallLinkStateType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ): CallLinkType; | 
					
						
							| 
									
										
										
										
											2024-08-06 12:29:13 -07:00
										 |  |  |   beginDeleteAllCallLinks(): void; | 
					
						
							| 
									
										
										
										
											2024-09-04 11:06:06 -07:00
										 |  |  |   beginDeleteCallLink(roomId: string, options: DeleteCallLinkOptions): void; | 
					
						
							| 
									
										
										
										
											2024-08-06 12:29:13 -07:00
										 |  |  |   finalizeDeleteCallLink(roomId: string): void; | 
					
						
							| 
									
										
										
										
											2024-08-14 04:39:04 +10:00
										 |  |  |   _removeAllCallLinks(): void; | 
					
						
							| 
									
										
										
										
											2024-08-06 12:29:13 -07:00
										 |  |  |   deleteCallLinkFromSync(roomId: string): void; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   migrateConversationMessages: (obsoleteId: string, currentId: string) => void; | 
					
						
							| 
									
										
										
										
											2023-03-27 19:48:57 -04:00
										 |  |  |   saveEditedMessage: ( | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     mainMessage: ReadonlyDeep<MessageType>, | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |     ourAci: AciString, | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     opts: ReadonlyDeep<EditedMessageType> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-06-03 10:02:25 -07:00
										 |  |  |   saveEditedMessages: ( | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     mainMessage: ReadonlyDeep<MessageType>, | 
					
						
							| 
									
										
										
										
											2024-06-03 10:02:25 -07:00
										 |  |  |     ourAci: AciString, | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |     history: ReadonlyArray<ReadonlyDeep<EditedMessageType>> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-05-29 01:56:00 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeSyncTaskById: (id: string) => void; | 
					
						
							|  |  |  |   saveSyncTasks: (tasks: Array<SyncTaskType>) => void; | 
					
						
							|  |  |  |   getAllSyncTasks: () => Array<SyncTaskType>; | 
					
						
							| 
									
										
										
										
											2024-05-29 01:56:00 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getAllUnprocessedIds: () => Array<string>; | 
					
						
							| 
									
										
										
										
											2023-02-02 12:39:07 -07:00
										 |  |  |   getUnprocessedByIdsAndIncrementAttempts: ( | 
					
						
							|  |  |  |     ids: ReadonlyArray<string> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => Array<UnprocessedType>; | 
					
						
							|  |  |  |   updateUnprocessedWithData: (id: string, data: UnprocessedUpdateType) => void; | 
					
						
							| 
									
										
										
										
											2021-04-05 15:18:19 -07:00
										 |  |  |   updateUnprocessedsWithData: ( | 
					
						
							| 
									
										
										
										
											2021-04-16 16:13:13 -07:00
										 |  |  |     array: Array<{ id: string; data: UnprocessedUpdateType }> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   removeUnprocessed: (id: string | Array<string>) => void; | 
					
						
							| 
									
										
										
										
											2023-02-02 12:39:07 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /** only for testing */ | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeAllUnprocessed: () => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-15 20:11:48 -04:00
										 |  |  |   getNextAttachmentDownloadJobs: (options: { | 
					
						
							|  |  |  |     limit: number; | 
					
						
							|  |  |  |     prioritizeMessageIds?: Array<string>; | 
					
						
							| 
									
										
										
										
											2024-09-16 15:38:12 -04:00
										 |  |  |     sources?: Array<AttachmentDownloadSource>; | 
					
						
							| 
									
										
										
										
											2024-04-15 20:11:48 -04:00
										 |  |  |     timestamp?: number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => Array<AttachmentDownloadJobType>; | 
					
						
							|  |  |  |   saveAttachmentDownloadJob: (job: AttachmentDownloadJobType) => void; | 
					
						
							|  |  |  |   resetAttachmentDownloadActive: () => void; | 
					
						
							|  |  |  |   removeAttachmentDownloadJob: (job: AttachmentDownloadJobType) => void; | 
					
						
							| 
									
										
										
										
											2024-09-03 18:00:51 -04:00
										 |  |  |   removeAllBackupAttachmentDownloadJobs: () => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  |   getNextAttachmentBackupJobs: (options: { | 
					
						
							|  |  |  |     limit: number; | 
					
						
							|  |  |  |     timestamp?: number; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => Array<AttachmentBackupJobType>; | 
					
						
							|  |  |  |   saveAttachmentBackupJob: (job: AttachmentBackupJobType) => void; | 
					
						
							|  |  |  |   markAllAttachmentBackupJobsInactive: () => void; | 
					
						
							|  |  |  |   removeAttachmentBackupJob: (job: AttachmentBackupJobType) => void; | 
					
						
							|  |  |  |   clearAllAttachmentBackupJobs: () => void; | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   clearAllBackupCdnObjectMetadata: () => void; | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  |   saveBackupCdnObjectMetadata: ( | 
					
						
							|  |  |  |     mediaObjects: Array<BackupCdnMediaObjectType> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-05-29 19:46:43 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   createOrUpdateStickerPack: (pack: StickerPackType) => void; | 
					
						
							| 
									
										
										
										
											2024-09-16 17:40:52 -07:00
										 |  |  |   createOrUpdateStickerPacks: (packs: ReadonlyArray<StickerPackType>) => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   updateStickerPackStatus: ( | 
					
						
							|  |  |  |     id: string, | 
					
						
							|  |  |  |     status: StickerPackStatusType, | 
					
						
							|  |  |  |     options?: { timestamp: number } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   updateStickerPackInfo: (info: StickerPackInfoType) => void; | 
					
						
							|  |  |  |   createOrUpdateSticker: (sticker: StickerType) => void; | 
					
						
							|  |  |  |   createOrUpdateStickers: (sticker: ReadonlyArray<StickerType>) => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   updateStickerLastUsed: ( | 
					
						
							|  |  |  |     packId: string, | 
					
						
							|  |  |  |     stickerId: number, | 
					
						
							|  |  |  |     lastUsed: number | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   addStickerPackReference: (messageId: string, packId: string) => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   deleteStickerPackReference: ( | 
					
						
							|  |  |  |     messageId: string, | 
					
						
							|  |  |  |     packId: string | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => ReadonlyArray<string> | undefined; | 
					
						
							|  |  |  |   deleteStickerPack: (packId: string) => Array<string>; | 
					
						
							|  |  |  |   addUninstalledStickerPack: (pack: UninstalledStickerPackType) => void; | 
					
						
							| 
									
										
										
										
											2024-09-16 17:40:52 -07:00
										 |  |  |   addUninstalledStickerPacks: ( | 
					
						
							|  |  |  |     pack: ReadonlyArray<UninstalledStickerPackType> | 
					
						
							|  |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeUninstalledStickerPack: (packId: string) => void; | 
					
						
							|  |  |  |   installStickerPack: (packId: string, timestamp: number) => void; | 
					
						
							|  |  |  |   uninstallStickerPack: (packId: string, timestamp: number) => void; | 
					
						
							|  |  |  |   clearAllErrorStickerPackAttempts: () => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   updateEmojiUsage: (shortName: string, timeUsed?: number) => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   updateOrCreateBadges(badges: ReadonlyArray<BadgeType>): void; | 
					
						
							|  |  |  |   badgeImageFileDownloaded(url: string, localPath: string): void; | 
					
						
							| 
									
										
										
										
											2021-11-02 18:01:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   _deleteAllStoryDistributions(): void; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   createNewStoryDistribution( | 
					
						
							| 
									
										
										
										
											2021-12-09 18:15:59 -08:00
										 |  |  |     distribution: StoryDistributionWithMembersType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ): void; | 
					
						
							|  |  |  |   modifyStoryDistribution(distribution: StoryDistributionType): void; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |   modifyStoryDistributionMembers( | 
					
						
							| 
									
										
										
										
											2022-06-30 20:52:03 -04:00
										 |  |  |     listId: string, | 
					
						
							|  |  |  |     options: { | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |       toAdd: Array<ServiceIdString>; | 
					
						
							|  |  |  |       toRemove: Array<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2022-06-30 20:52:03 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ): void; | 
					
						
							| 
									
										
										
										
											2022-06-30 20:52:03 -04:00
										 |  |  |   modifyStoryDistributionWithMembers( | 
					
						
							|  |  |  |     distribution: StoryDistributionType, | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |     options: { | 
					
						
							| 
									
										
										
										
											2023-08-10 18:43:33 +02:00
										 |  |  |       toAdd: Array<ServiceIdString>; | 
					
						
							|  |  |  |       toRemove: Array<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2021-12-08 11:52:46 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ): void; | 
					
						
							|  |  |  |   deleteStoryDistribution(id: StoryDistributionIdString): void; | 
					
						
							| 
									
										
										
										
											2021-04-29 18:02:27 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   _deleteAllStoryReads(): void; | 
					
						
							|  |  |  |   addNewStoryRead(read: StoryReadType): void; | 
					
						
							| 
									
										
										
										
											2021-05-28 12:15:17 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   removeAll: () => void; | 
					
						
							|  |  |  |   removeAllConfiguration: () => void; | 
					
						
							|  |  |  |   eraseStorageServiceState: () => void; | 
					
						
							| 
									
										
										
										
											2021-08-20 11:06:15 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   insertJob(job: Readonly<StoredJob>): void; | 
					
						
							|  |  |  |   deleteJob(id: string): void; | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   processGroupCallRingCancellation(ringId: bigint): void; | 
					
						
							|  |  |  |   cleanExpiredGroupCallRingCancellations(): void; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2023-10-11 01:55:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | // Adds a database argument
 | 
					
						
							|  |  |  | type AddReadonlyDB<I> = { | 
					
						
							|  |  |  |   [Key in keyof I]: I[Key] extends (...args: infer Args) => infer R | 
					
						
							|  |  |  |     ? (db: ReadableDB, ...args: Args) => R | 
					
						
							|  |  |  |     : never; | 
					
						
							| 
									
										
										
										
											2021-01-14 12:07:05 -06:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type ServerReadableDirectInterface = ReadableInterface & { | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  |   // Differing signature on client/server
 | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  |   searchMessages: ({ | 
					
						
							|  |  |  |     query, | 
					
						
							|  |  |  |     conversationId, | 
					
						
							|  |  |  |     options, | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |     contactServiceIdsMatchingQuery, | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  |   }: { | 
					
						
							|  |  |  |     query: string; | 
					
						
							|  |  |  |     conversationId?: string; | 
					
						
							|  |  |  |     options?: { limit?: number }; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |     contactServiceIdsMatchingQuery?: Array<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => Array<ServerSearchResultMessageType>; | 
					
						
							| 
									
										
										
										
											2023-07-21 15:10:32 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   getRecentStoryReplies( | 
					
						
							|  |  |  |     storyId: string, | 
					
						
							|  |  |  |     options?: GetRecentStoryRepliesOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ): Array<MessageTypeUnhydrated>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   getOlderMessagesByConversation: ( | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => Array<MessageTypeUnhydrated>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   getNewerMessagesByConversation: ( | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => Array<MessageTypeUnhydrated>; | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |   getConversationRangeCenteredOnMessage: ( | 
					
						
							|  |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => GetConversationRangeCenteredOnMessageResultType<MessageTypeUnhydrated>; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   getIdentityKeyById: ( | 
					
						
							|  |  |  |     id: IdentityKeyIdType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => StoredIdentityKeyType | undefined; | 
					
						
							|  |  |  |   getAllIdentityKeys: () => Array<StoredIdentityKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getKyberPreKeyById: (id: PreKeyIdType) => StoredKyberPreKeyType | undefined; | 
					
						
							|  |  |  |   getAllKyberPreKeys: () => Array<StoredKyberPreKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getPreKeyById: (id: PreKeyIdType) => StoredPreKeyType | undefined; | 
					
						
							|  |  |  |   getAllPreKeys: () => Array<StoredPreKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  |   getSignedPreKeyById: ( | 
					
						
							|  |  |  |     id: SignedPreKeyIdType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => StoredSignedPreKeyType | undefined; | 
					
						
							|  |  |  |   getAllSignedPreKeys: () => Array<StoredSignedPreKeyType>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getItemById<K extends ItemKeyType>(id: K): StoredItemType<K> | undefined; | 
					
						
							|  |  |  |   getAllItems: () => StoredAllItemsType; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   // Server-only
 | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  |   getKnownMessageAttachments: ( | 
					
						
							|  |  |  |     cursor?: MessageAttachmentsCursorType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => GetKnownMessageAttachmentsResultType; | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  |   finishGetKnownMessageAttachments: ( | 
					
						
							|  |  |  |     cursor: MessageAttachmentsCursorType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							| 
									
										
										
										
											2024-08-27 17:00:41 -04:00
										 |  |  |   getKnownDownloads: () => Array<string>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getKnownConversationAttachments: () => Array<string>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getAllBadgeImageFileLocalPaths: () => Set<string>; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | export type ServerReadableInterface = | 
					
						
							|  |  |  |   AddReadonlyDB<ServerReadableDirectInterface>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Adds a database argument
 | 
					
						
							|  |  |  | type AddWritableDB<I> = { | 
					
						
							|  |  |  |   [Key in keyof I]: I[Key] extends (...args: infer Args) => infer R | 
					
						
							|  |  |  |     ? (db: WritableDB, ...args: Args) => R | 
					
						
							|  |  |  |     : never; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type ServerWritableDirectInterface = WritableInterface & { | 
					
						
							|  |  |  |   // Differing signature on client/server
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   updateConversation: (data: ConversationType) => void; | 
					
						
							|  |  |  |   removeConversation: (id: Array<string> | string) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   removeMessage: (id: string) => void; | 
					
						
							|  |  |  |   removeMessages: (ids: ReadonlyArray<string>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateIdentityKey: (data: StoredIdentityKeyType) => void; | 
					
						
							|  |  |  |   bulkAddIdentityKeys: (array: Array<StoredIdentityKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateKyberPreKey: (data: StoredKyberPreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddKyberPreKeys: (array: Array<StoredKyberPreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdatePreKey: (data: StoredPreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddPreKeys: (array: Array<StoredPreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateSignedPreKey: (data: StoredSignedPreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddSignedPreKeys: (array: Array<StoredSignedPreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateItem<K extends ItemKeyType>(data: StoredItemType<K>): void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Server-only
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   removeKnownStickers: (allStickers: ReadonlyArray<string>) => Array<string>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   removeKnownDraftAttachments: ( | 
					
						
							| 
									
										
										
										
											2022-11-16 16:29:15 -08:00
										 |  |  |     allStickers: ReadonlyArray<string> | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => Array<string>; | 
					
						
							| 
									
										
										
										
											2023-10-11 01:19:11 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   runCorruptionChecks: () => void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type ServerWritableInterface = | 
					
						
							|  |  |  |   AddWritableDB<ServerWritableDirectInterface>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Makes sync calls - async
 | 
					
						
							|  |  |  | export type ClientInterfaceWrap<I> = { | 
					
						
							|  |  |  |   [Key in keyof I]: I[Key] extends (...args: infer Args) => infer R | 
					
						
							|  |  |  |     ? (...args: Args) => Promise<R> | 
					
						
							|  |  |  |     : never; | 
					
						
							| 
									
										
										
										
											2023-07-21 15:10:32 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type ClientOnlyReadableInterface = ClientInterfaceWrap<{ | 
					
						
							| 
									
										
										
										
											2021-12-10 14:51:54 -08:00
										 |  |  |   // Differing signature on client/server
 | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  |   searchMessages: ({ | 
					
						
							|  |  |  |     query, | 
					
						
							|  |  |  |     conversationId, | 
					
						
							|  |  |  |     options, | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |     contactServiceIdsMatchingQuery, | 
					
						
							| 
									
										
										
										
											2023-06-26 14:25:48 -04:00
										 |  |  |   }: { | 
					
						
							|  |  |  |     query: string; | 
					
						
							|  |  |  |     conversationId?: string; | 
					
						
							|  |  |  |     options?: { limit?: number }; | 
					
						
							| 
									
										
										
										
											2023-08-16 22:54:39 +02:00
										 |  |  |     contactServiceIdsMatchingQuery?: Array<ServiceIdString>; | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   }) => Array<ClientSearchResultMessageType>; | 
					
						
							| 
									
										
										
										
											2023-07-21 15:10:32 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   getRecentStoryReplies( | 
					
						
							|  |  |  |     storyId: string, | 
					
						
							|  |  |  |     options?: GetRecentStoryRepliesOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |   ): Array<MessageType>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   getOlderMessagesByConversation: ( | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |   ) => Array<MessageType>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |   getNewerMessagesByConversation: ( | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-24 13:14:11 -07:00
										 |  |  |   ) => Array<MessageType>; | 
					
						
							| 
									
										
										
										
											2023-03-03 19:03:15 -08:00
										 |  |  |   getConversationRangeCenteredOnMessage: ( | 
					
						
							|  |  |  |     options: AdjacentMessagesByConversationOptionsType | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => GetConversationRangeCenteredOnMessageResultType<MessageType>; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getIdentityKeyById: (id: IdentityKeyIdType) => IdentityKeyType | undefined; | 
					
						
							|  |  |  |   getAllIdentityKeys: () => Array<IdentityKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getKyberPreKeyById: (id: PreKeyIdType) => KyberPreKeyType | undefined; | 
					
						
							|  |  |  |   getAllKyberPreKeys: () => Array<KyberPreKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getPreKeyById: (id: PreKeyIdType) => PreKeyType | undefined; | 
					
						
							|  |  |  |   getAllPreKeys: () => Array<PreKeyType>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getSignedPreKeyById: (id: SignedPreKeyIdType) => SignedPreKeyType | undefined; | 
					
						
							|  |  |  |   getAllSignedPreKeys: () => Array<SignedPreKeyType>; | 
					
						
							| 
									
										
										
										
											2022-07-28 09:35:29 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   getItemById<K extends ItemKeyType>(id: K): ItemType<K> | undefined; | 
					
						
							|  |  |  |   getAllItems: () => AllItemsType; | 
					
						
							|  |  |  | }>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type ClientOnlyWritableInterface = ClientInterfaceWrap<{ | 
					
						
							|  |  |  |   // Differing signature on client/server
 | 
					
						
							|  |  |  |   updateConversation: (data: ConversationType) => void; | 
					
						
							|  |  |  |   removeConversation: (id: string) => void; | 
					
						
							|  |  |  |   flushUpdateConversationBatcher: () => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   removeMessage: ( | 
					
						
							|  |  |  |     id: string, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       fromSync?: boolean; | 
					
						
							|  |  |  |       singleProtoJobQueue: SingleProtoJobQueue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ) => void; | 
					
						
							|  |  |  |   removeMessages: ( | 
					
						
							|  |  |  |     ids: ReadonlyArray<string>, | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |       fromSync?: boolean; | 
					
						
							|  |  |  |       singleProtoJobQueue: SingleProtoJobQueue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateIdentityKey: (data: IdentityKeyType) => void; | 
					
						
							|  |  |  |   bulkAddIdentityKeys: (array: Array<IdentityKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateKyberPreKey: (data: KyberPreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddKyberPreKeys: (array: Array<KyberPreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdatePreKey: (data: PreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddPreKeys: (array: Array<PreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateSignedPreKey: (data: SignedPreKeyType) => void; | 
					
						
							|  |  |  |   bulkAddSignedPreKeys: (array: Array<SignedPreKeyType>) => void; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createOrUpdateItem<K extends ItemKeyType>(data: ItemType<K>): void; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // Client-side only
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   shutdown: () => void; | 
					
						
							| 
									
										
										
										
											2024-08-12 12:54:24 -07:00
										 |  |  |   removeDB: () => void; | 
					
						
							| 
									
										
										
										
											2024-05-29 01:56:00 +10:00
										 |  |  |   removeMessagesInConversation: ( | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  |     conversationId: string, | 
					
						
							| 
									
										
										
										
											2021-01-12 16:42:15 -08:00
										 |  |  |     options: { | 
					
						
							| 
									
										
										
										
											2024-06-17 12:24:39 -07:00
										 |  |  |       fromSync?: boolean; | 
					
						
							| 
									
										
										
										
											2021-01-12 16:42:15 -08:00
										 |  |  |       logId: string; | 
					
						
							| 
									
										
										
										
											2024-05-29 01:56:00 +10:00
										 |  |  |       receivedAt?: number; | 
					
						
							| 
									
										
										
										
											2024-06-17 12:24:39 -07:00
										 |  |  |       singleProtoJobQueue: SingleProtoJobQueue; | 
					
						
							| 
									
										
										
										
											2021-01-12 16:42:15 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  |   ) => void; | 
					
						
							|  |  |  |   removeOtherData: () => void; | 
					
						
							|  |  |  |   cleanupOrphanedAttachments: () => void; | 
					
						
							|  |  |  |   ensureFilePermissions: () => void; | 
					
						
							|  |  |  | }>; | 
					
						
							| 
									
										
										
										
											2020-04-01 11:59:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-22 11:16:33 -07:00
										 |  |  | export type ClientReadableInterface = ClientInterfaceWrap<ReadableInterface> & | 
					
						
							|  |  |  |   ClientOnlyReadableInterface; | 
					
						
							|  |  |  | export type ClientWritableInterface = ClientInterfaceWrap<WritableInterface> & | 
					
						
							|  |  |  |   ClientOnlyWritableInterface; |