@class NSData, NSString, IMDMessageProcessingController, NSArray, NSRecursiveLock, NSMutableDictionary, IMDCKUtilities, IMDChatStore, IMDMessageHistorySyncController, TUConversationManager; @interface IMDChatRegistry : NSObject { NSMutableDictionary *_chatsByGroupID; NSRecursiveLock *_chatsLock; NSRecursiveLock *_handlesLock; NSMutableDictionary *_chats; BOOL _isLoading; BOOL _firstUnlockTriggered; BOOL _doneLoadingAfterMerge; BOOL _blackholedChatsExistCache; } @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (retain, nonatomic) NSMutableDictionary *idToHandlesMap; @property (readonly, nonatomic) NSData *historyToken; @property (retain, nonatomic) IMDCKUtilities *ckUtilities; @property (retain, nonatomic) IMDChatStore *chatStore; @property (nonatomic) BOOL hasDumpedLogsForNoExisitingGroup; @property (readonly, nonatomic) IMDMessageProcessingController *messageProcessingController; @property (readonly, nonatomic) IMDMessageHistorySyncController *messageHistorySyncController; @property (retain, nonatomic) NSMutableDictionary *personCentricGroupedChatsCache; @property (retain, nonatomic) NSMutableDictionary *cachedAliasToCNIDMap; @property (readonly, nonatomic) TUConversationManager *conversationManager; @property (readonly, nonatomic) NSArray *chats; @property (readonly, nonatomic) NSArray *allChats; @property (readonly, nonatomic) NSArray *cachedChats; @property (readonly, nonatomic) unsigned long long cachedChatCount; @property (readonly, nonatomic) unsigned long long persistedChatCount; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)sharedInstance; + (id)supportedServiceNames; - (unsigned long long)markAsSpamForIDs:(id)a0 style:(unsigned char)a1 onServices:(id)a2 chatID:(id)a3 queryID:(id)a4 autoReport:(BOOL)a5; - (BOOL)_existingItemRequiresUpgrade:(id)a0 itemFromCKRecord:(id)a1; - (void)removeChat:(id)a0; - (void)updateLastMessageForChat:(id)a0 hintMessage:(id)a1 historyQuery:(BOOL)a2; - (void)updateStateForChat:(id)a0 hintMessage:(id)a1 shouldRebuildFailedMessageDate:(BOOL)a2; - (id)chatForRoom:(id)a0 account:(id)a1 chatIdentifier:(id)a2 guid:(id)a3; - (void)updateRecoverableMessageSyncState:(long long)a0 forMessageRowID:(long long)a1 onPartIndex:(long long)a2; - (void)updateChatUsingSyncData:(id)a0; - (id)_aliasToCNIDMapForAliases:(id)a0; - (id)init; - (void)permanentlyDeleteRecoverableMessagesInChatsWithGUIDs:(id)a0 completionHandler:(id /* block */)a1; - (id)existingGroupChatsContainingHandles:(id)a0; - (id)_findChatWinnerInDuplicateChatArray:(id)a0 fixDisplayName:(BOOL *)a1; - (id)_conversationItemForChat:(id)a0 conversation:(id)a1; - (void)_fixUpChatParticipantsIfNeeded:(id)a0; - (id)_itemFromCKRecord:(id)a0; - (void)dealloc; - (id)_chatForTUGroupID:(id)a0 participants:(id)a1; - (id)_chatInfoForChats:(id)a0; - (id)_cachedChatWithGUID:(id)a0; - (void)clearRecoverableMessageTombStones; - (void)setUpInitialConversationManager; - (id)_newestExistingChatWithOriginalGroupID:(id)a0 onService:(id)a1; - (void)_chatGUIDsThatNeedRemergingWithCompletionHandler:(id /* block */)a0; - (id)allExistingChatsWithIdentifier:(id)a0 style:(unsigned char)a1; - (id)truncatedSortedChatsGroupedByPersonCentricID:(id)a0 count:(long long)a1 pinnedChatIdentifiers:(id)a2; - (id)_chatForTUConversation:(id)a0; - (void)_updateCurrentAliasToCNIDDictionaryAndHistoryTokenWithCompletionHandler:(id /* block */)a0; - (id)chatForHandle:(id)a0 account:(id)a1 chatIdentifier:(id)a2 guid:(id)a3 lastAddressedHandle:(id)a4 lastAddressedSIMID:(id)a5 isBlackholed:(BOOL)a6; - (void)updateStateForChat:(id)a0 forcePost:(BOOL)a1 shouldRebuildFailedMessageDate:(BOOL)a2; - (id)chatForHandles:(id)a0 account:(id)a1 chatIdentifier:(id)a2 style:(unsigned char)a3 groupID:(id)a4 displayName:(id)a5 guid:(id)a6 lastAddressedHandle:(id)a7 lastAddressedSIMID:(id)a8 isBlackholed:(BOOL)a9; - (void)systemDidLeaveFirstDataProtectionLock; - (void)addChat:(id)a0 firstLoad:(BOOL)a1 store:(BOOL)a2; - (id)_parentChatIDFromCKRecord:(id)a0; - (void)_setGroupID:(id)a0 forChatAndAllSiblings:(id)a1; - (void)markDeferredChatsAsNeedingSync; - (id)_messageStore; - (id)existingChatForID:(id)a0 account:(id)a1; - (id)_createGroupChatsArray; - (void)clearPendingDeleteTable; - (id)existingChatsFilteredUsingPredicate:(id)a0; - (id)recoverableMessagesMetadata; - (id)_spamMessageCreator; - (void)_evictCachedChat:(id)a0; - (BOOL)_mergeDuplicateGroupsIfNeeded; - (void)__removeChatFromGroupIDChatIndex:(id)a0; - (id)_newestExistingChatWithGroupID:(id)a0 onService:(id)a1; - (void)updateFaceTimeGroupName:(id)a0; - (void)_updateChat:(id)a0 usingSyncData:(id)a1; - (void)handleMessageUpdateConflictType:(id)a0 serverRecord:(id)a1 localRowID:(long long)a2; - (void)_insertChatUsingSyncData:(id)a0; - (void)_markGroupPhotosAsUnpurgeableIfNecessary; - (id)existingiMessageChatForID:(id)a0 withChatStyle:(unsigned char)a1; - (void)_setInitialLoadForTesting:(BOOL)a0; - (void)updateStateForChat:(id)a0 forcePost:(BOOL)a1; - (id)_chatInfoForConnection; - (BOOL)_shouldHandleInternalPhishingAttempts; - (void)updateStateForChat:(id)a0 forcePost:(BOOL)a1 shouldRebuildFailedMessageDate:(BOOL)a2 shouldCalculateUnreadCount:(BOOL)a3; - (void)_populateLastMessageForChat:(id)a0; - (id)existingChatsWithGroupID:(id)a0; - (void)updateChatWithGUID:(id)a0 serverChangeToken:(id)a1 recordID:(id)a2; - (id)groupChatsBasedOnIdentityUsingCacheIfApplicable:(id)a0; - (void)conversationManager:(id)a0 conversation:(id)a1 addedMembersLocally:(id)a2; - (void)repairInconsistentMergedChatsIfNecessary:(id)a0; - (void)checkBlackholedChatsExistAfterUpdatingChatWithAdd:(BOOL)a0; - (void)waitForLoadedChatsWithCompletionHandler:(id /* block */)a0; - (id)existingSMSChatForID:(id)a0 withChatStyle:(unsigned char)a1; - (id)aliasToCNIDMap; - (void)markChatAsDeferredForSyncingUsingSyncData:(id)a0; - (id)blackholedChats; - (id)_findExistingGroupChatForConversation:(id)a0 onSession:(id)a1; - (id)_findLosingChatGUIDsInArrayOfChats:(id)a0 withWinner:(id)a1; - (id)_handlesWithChangedContactsOriginalMap:(id)a0 newMap:(id)a1; - (void)updateMeCardHasUpdatedForAllChats; - (id)_addChatFromCacheMiss:(id)a0 preferExistingChat:(BOOL)a1; - (void)_performPostUnlockHousekeeping; - (id)allExistingChatsWithIdentifier:(id)a0; - (void)updateFaceTimeGroupPhoto:(id)a0; - (unsigned long long)markAsSpamForIDs:(id)a0 style:(unsigned char)a1 onServices:(id)a2 chatID:(id)a3 queryID:(id)a4 autoReport:(BOOL)a5 isJunkReportedToCarrier:(BOOL)a6; - (void)_markForksAsSyncedForChat:(id)a0; - (void)updateStateForChat:(id)a0 hintMessage:(id)a1 shouldRebuildFailedMessageDate:(BOOL)a2 setUnreadCountToZero:(BOOL)a3; - (void)_reportMessageDictionaryForMessages:(id)a0 withLastAddressedHandle:(id)a1 maxMessageLength:(unsigned long long)a2 isAutoReport:(BOOL)a3 withChat:(id)a4 maxMessagesToReport:(unsigned long long)a5 totalMessageCount:(unsigned long long *)a6 notifyInternalSecurity:(BOOL)a7 isJunkReportedToCarrier:(BOOL)a8 iMessageReportSpamDictionaries:(id)a9 textMessageReportSpamDictionaries:(id)a10; - (void)removeItem:(id)a0 fromChat:(id)a1; - (void)_reportToIDSTextMessageSpam:(id)a0; - (id)_upgradeChatToGroupChat:(id)a0 forConversation:(id)a1; - (void)addMessage:(id)a0 toChat:(id)a1; - (BOOL)updateSyncedSyndicationRanges:(id)a0 forGUID:(id)a1; - (void)updateStateForChat:(id)a0 fromMessage:(id)a1 toMessage:(id)a2 forcePost:(BOOL)a3 hintMessage:(id)a4 shouldRebuildFailedMessageDate:(BOOL)a5 shouldCalculateUnreadCount:(BOOL)a6 setUnreadCountToZero:(BOOL)a7; - (void)_updateCachedCNIDMapForHandles:(id)a0; - (id)_sharedMessageStore; - (id)recoverableMessagesMetadataPendingCloudKitDeleteWithLimit:(unsigned long long)a0; - (void)_updateCachedAliasToCNIDMap:(id)a0 withHistoryToken:(id)a1 completionHandler:(id /* block */)a2; - (void)updateGroupIDForChat:(id)a0 newGroupID:(id)a1; - (id)_chatInfoForNumberOfChats:(long long)a0; - (void)_checkForContactChanges; - (void)systemDidUnlock; - (id)_chatsWithBlackholed:(BOOL)a0; - (id)allChatsWithIdentifier:(id)a0 style:(unsigned char)a1 serviceNames:(id)a2; - (id)_cachedChatsWithGroupID:(id)a0; - (BOOL)isBeingSetup; - (id)_allHandles; - (void)addChat:(id)a0; - (id)_createGroupChatForConversation:(id)a0 onSession:(id)a1; - (id)existingOneOnOneChatsWithIdentifiers:(id)a0; - (id)_existingiMessageChatForChatIdentifier:(id)a0 style:(unsigned char)a1; - (id)existingChatWithGUID:(id)a0; - (id)messagesToUploadToCloudKitWithLimit:(unsigned long long)a0; - (id)_initiatorForConversation:(id)a0 chat:(id)a1; - (id)_generateCurrentAliasToCNIDDictionary; - (void)_adoptUpdatedStateForExistingItem:(id)a0 itemFromCKRecord:(id)a1; - (void)_reportToIDSiMessageSpam:(id)a0; - (id)existingChatsWithPinningIdentifier:(id)a0; - (BOOL)_hasInconsistentJoinStateAcrossMergedChats:(id)a0; - (void)removeMessage:(id)a0 fromChat:(id)a1; - (void)_serializeChatsForRemerge:(id)a0 guidsThatNeedRemerging:(id *)a1 chatDictionaryArray:(id *)a2; - (void)_setSortIDOnIncomingMessage:(id)a0 forChat:(id)a1; - (void)_finalizeIncomingChat:(id)a0; - (id)existingChatsForIDs:(id)a0 displayName:(id)a1 groupID:(id)a2 style:(unsigned char)a3; - (void)_triggerRemergeForPersonCentricID:(id)a0; - (id)groupChatsBasedOnIdentity:(id)a0; - (void)moveMessagesWithGUIDsToRecentlyDeleted:(id)a0 deleteDate:(id)a1; - (BOOL)_hasInconsistentGroupPhotoGUIDAcrossMergedChats:(id)a0; - (void)_reloadChatsForDatabaseMergeOrDatabaseSwitch; - (id)sortPersonCentricChatGroups:(id)a0; - (void)updateStateForChat:(id)a0 forcePost:(BOOL)a1 shouldRebuildFailedMessageDate:(BOOL)a2 setUnreadCountToZero:(BOOL)a3; - (id)_exactGroupChatMatchOrNewestMatchingGroupID:(id)a0 serviceName:(id)a1 participants:(id)a2 toIdentifier:(id)a3; - (void)recoverMessagesWithChatGUIDs:(id)a0; - (void).cxx_destruct; - (void)updateNotificationUnreadCountForChat:(id)a0; - (id)allHandlesForID:(id)a0; - (id)findDuplicateChats:(id)a0; - (id)existingChatWithIdentifier:(id)a0 account:(id)a1; - (id)_existingChatsForIDs:(id)a0 serviceName:(id)a1 displayName:(id)a2 groupID:(id)a3 style:(unsigned char)a4; - (BOOL)handleMessageUpdate:(id)a0; - (id)_lookupChatUsingParentChatID:(id)a0 service:(id)a1; - (id)_existingChatForSyncData:(id)a0 originalGUID:(id)a1; - (BOOL)loadChatsWithCompletionBlock:(id /* block */)a0; - (id)existingChatsFilteredUsingPredicate:(id)a0 sortedUsingLastMessageDateAscending:(BOOL)a1 olderThan:(id)a2 limit:(unsigned long long)a3; - (BOOL)repairDuplicateChatsIfNeeded; - (void)_chatGUIDsThatNeedRemerging:(id *)a0 chatDictionaryArray:(id *)a1 oldPersonCentricID:(id)a2; - (BOOL)filterediMessageChatsExist; - (void)_populateContactIDOnHandles; - (void)_makeAllAttachmentsClassC; - (BOOL)updateProperties:(id)a0 chat:(id)a1 style:(unsigned char)a2; - (void)processMessageUsingCKRecord:(id)a0; - (void)addItem:(id)a0 toChat:(id)a1; - (void)moveMessagesInChatsWithGUIDsToRecentlyDeleted:(id)a0 deleteDate:(id)a1; - (BOOL)hasKnownSenderChatWithChatIdentifier:(id)a0; - (id)recoverableMessagesMetadataPendingCloudKitSaveWithLimit:(unsigned long long)a0; - (id)existingChatWithEngramID:(id)a0; - (void)updateLastMessageForChat:(id)a0 hintMessage:(id)a1; - (void)removeIMDHandleFromRegistry:(id)a0; - (id)existingChatsFilteredUsingPredicate:(id)a0 sortedUsingLastMessageDateAscending:(BOOL)a1 limit:(unsigned long long)a2; - (id)_activeTUConversations; - (void)_repairInconsistentJoinStatesAcrossMergedChatsIfNecessary:(id)a0; - (id)personCentricGroupedChatsArrayWithMaximumNumberOfChats:(long long)a0 skipsLastMessageLoading:(BOOL)a1 usingChats:(id)a2 useCachedChatGroups:(BOOL)a3 includingPinnedChatIdentifiers:(id)a4 repairInconsistentMergedChats:(BOOL)a5; - (BOOL)doneLoadingAfterMerge; - (id)_addChatsFromCacheMisses:(id)a0 preferExistingChats:(BOOL)a1; - (void)updateStateForChat:(id)a0 hintMessage:(id)a1 shouldRebuildFailedMessageDate:(BOOL)a2 shouldCalculateUnreadCount:(BOOL)a3; - (id)existingiMessageChatForID:(id)a0; - (void)_addItemToParentChatIfNotLocationItem:(id)a0 parentChat:(id)a1 updatedLastMessageCount:(unsigned long long)a2; - (id)_extractHandlesFromMap:(id)a0 usingCNID:(id)a1; - (id)stringForChatStyle:(unsigned char)a0; - (void)simulateMessageReceive:(id)a0 serviceName:(id)a1 groupID:(id)a2 handles:(id)a3 sender:(id)a4 date:(id)a5 associatedMessageType:(long long)a6 associatedMessageGuid:(id)a7; - (id)_chatInfoInRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0 wantsBlackholed:(BOOL)a1; - (id)generateUnusedChatIdentifierForGroupChatWithAccount:(id)a0; - (void)_fixUpChatParticipantsIfNeeded:(id)a0 usingChatGUIDToChatMap:(id)a1; - (void)refreshUIWhileSyncing; - (void)resolveChatConflictUsingSyncData:(id)a0 localGUID:(id)a1; - (void)updateStateForChat:(id)a0 hintMessage:(id)a1; - (void)_persistMergeIDMergedChatsIfNeeded; - (id)existingChatsForIDs:(id)a0 onService:(id)a1 displayName:(id)a2 groupID:(id)a3 style:(unsigned char)a4; - (id)existingChatForRoom:(id)a0 account:(id)a1; - (id)existingChatForIDs:(id)a0 account:(id)a1 displayName:(id)a2 groupID:(id)a3 style:(unsigned char)a4; - (id)_preferredFileTransferFromGroupPhotoGUIDs:(id)a0; - (id)_siblingChatForChat:(id)a0 usingChatGUIDToChatMap:(id)a1; - (void)_contactsChanged:(id)a0; - (void)_chatGUIDsThatNeedRemerging:(id *)a0 chatDictionaryArray:(id *)a1 aliasMap:(id)a2; - (void)addMessage:(id)a0 toChat:(id)a1 deferSpotlightIndexing:(BOOL)a2; - (void)addIMDHandleToRegistry:(id)a0; - (BOOL)blackholedChatsExist; - (id)_allChatInfo; - (void)_repairInconsistentGroupPhotoGuidAcrossMergedChatsIfNecessary:(id)a0; - (id)allExistingSupportedServiceChatsWithIdentifier:(id)a0 style:(unsigned char)a1; - (id)bestCandidateGroupChatWithFromIdentifier:(id)a0 toIdentifier:(id)a1 displayName:(id)a2 participants:(id)a3 groupID:(id)a4 serviceName:(id)a5; - (void)updateCachedChatsSyncStatusTo:(long long)a0 forGUIDs:(id)a1; - (id)existingSMSChatForID:(id)a0; - (id)_participantIDSetFromHandles:(id)a0 toIdentifier:(id)a1; - (id)_blackholedChatInfoForNumberOfChats:(long long)a0; - (void)_enumeratePersonMergedChatsWithMaximumNumberOfChats:(long long)a0 usingChats:(id)a1 useCachedChatGroups:(BOOL)a2 includingPinnedChatIdentifiers:(id)a3 usingBlock:(id /* block */)a4; - (void)_reportMessageDictionaryForMessages:(id)a0 withLastAddressedHandle:(id)a1 maxMessageLength:(unsigned long long)a2 isAutoReport:(BOOL)a3 withChat:(id)a4 maxMessagesToReport:(unsigned long long)a5 totalMessageCount:(unsigned long long *)a6 isJunkReportedToCarrier:(BOOL)a7 iMessageReportSpamDictionaries:(id)a8 textMessageReportSpamDictionaries:(id)a9; - (void)__addChatToGroupIDChatIndex:(id)a0; - (void)invalidatePersonCentricGroupedChatsCache; - (BOOL)_ensureNoExistingGroupForSyncData:(id)a0; - (void)_forceReloadChats:(BOOL)a0; - (id)findDuplicateUnnamedGroups:(id)a0; - (id)_tuConversationForChat:(id)a0; - (id)_chatGUIDToChatMapForChats:(id)a0; - (void)processMessageUsingCKRecord:(id)a0 updatedLastMessageCount:(int)a1; - (id)_oneToOneChatForRemoteHandle:(id)a0; - (id)chatsToUploadToCloudKitWithLimit:(unsigned long long)a0; - (id)_mergedPinningIdentifiersForChats:(id)a0 chatGUIDToChatMap:(id)a1 groupedChatsByPersonCentricIdWithSortedChats:(id)a2; - (id)existingChatForIDs:(id)a0 account:(id)a1 style:(unsigned char)a2; - (void)_fixSMSGroupChatAndStoreIfNeeded:(id)a0 iMessageChat:(id)a1 chatToRegenerate:(id *)a2; - (id)existingChatsForIDs:(id)a0 onService:(id)a1 style:(unsigned char)a2; - (void)setHistoryToken:(id)a0; - (id)_newestGroupChatMatchingParticipants:(id)a0 displayName:(id)a1 strictDisplayNameMatching:(BOOL)a2 serviceName:(id)a3 toIdentifier:(id)a4; - (id)messagesPendingUpdateT1ToCloudKitWithLimit:(unsigned long long)a0; - (id)copyRecordIDsAndGUIDsPendingCloudKitDelete; - (BOOL)_contactsBasedMerginEnabled; - (id)messagesPendingUpdateT2ToCloudKitWithLimit:(unsigned long long)a0; - (BOOL)updateUnreadCountForChat:(id)a0; - (BOOL)_chat:(id)a0 isDuplicateOfChat:(id)a1; @end