@class CKServerChangeToken, IMDCKChatSyncCKOperationFactory, IMDChatRegistry, IMDRecordZoneManager, NSObject, CKRecord; @protocol OS_dispatch_queue, SyncTokenStoreProviding; @interface IMDCKChatSyncController : IMDCKAbstractSyncController @property (retain, nonatomic) NSObject *ckQueue; @property (retain, nonatomic) IMDChatRegistry *chatRegistry; @property (retain, nonatomic) IMDRecordZoneManager *recordZoneManager; @property (retain, nonatomic) id syncTokenStore; @property (retain, nonatomic) CKServerChangeToken *latestSyncToken; @property (retain, nonatomic) IMDCKChatSyncCKOperationFactory *CKOperationFactory; @property (retain, nonatomic) CKRecord *lockRecord; @property (nonatomic) BOOL fetchedChatsDuringLastSync; + (id)sharedInstance; - (id)init; - (void)_hasMarkedAllChatsAsNeedingSync; - (void)deleteChatZone; - (long long)syncControllerRecordType; - (void)_scheduleOperation:(id)a0; - (BOOL)_shouldMarkAllChatsAsNeedingSync; - (void).cxx_destruct; - (void)clearLocalSyncState:(unsigned long long)a0; - (id)_randomSalt; - (id)recordStore; - (id)_recordKeyManagerSharedInstance; - (id)_changeTokenKey; - (void)__syncChatsWithCloudKit:(long long)a0 attemptCount:(unsigned long long)a1 activity:(id)a2 withCompletion:(id /* block */)a3; - (void)_anyChatExistsOnServerWithResultsLimit:(int)a0 changeToken:(id)a1 activity:(id)a2 completion:(id /* block */)a3; - (BOOL)_chatZoneCreated; - (id)_chatZoneID; - (id)_copyChatsToUploadWithLimit:(unsigned long long)a0; - (id)_copyRecordIDsToDelete; - (void)_deleteChatRecordsWithRecordIDs:(id)a0 completion:(id /* block */)a1; - (BOOL)_eligibleForTruthZone; - (id)_fetchChatRecordOperationWithActivity:(id)a0; - (void)_filterRecordIDsToChatsWithNoRecentModifications:(id)a0 completion:(id /* block */)a1; - (id)_generateLockRecord; - (void)_handleChatDeletionCompletionForRecordIDs:(id)a0 error:(id)a1; - (void)_kickOffWriteIfNeededForSyncType:(long long)a0 activity:(id)a1 completion:(id /* block */)a2; - (void)_kickOffWriteOnCKQueueWithActivity:(id)a0 completion:(id /* block */)a1; - (BOOL)_lockRecordHadConflict:(id)a0; - (void)_logGreenTeaLogsForChats:(id)a0; - (void)_markChatAsDefferedForSyncingUsingRecord:(id)a0; - (void)_migrateServerChangeToken; - (void)_needsToMarkAllChatsAsNeedingSync; - (id)_newckRecordsFromChats:(id)a0; - (unsigned long long)_numberOfChatsToFetch; - (unsigned long long)_numberOfChatsToWrite; - (void)_processFetchRecordChangesCompleted:(id)a0 activity:(id)a1 completion:(id /* block */)a2 syncType:(long long)a3; - (void)_processModifyPerRecordCallBack:(id)a0 error:(id)a1 recordIDtoGUIDmap:(id)a2; - (void)_processModifyRecordCompletion:(id)a0 deletedRecordIDs:(id)a1 error:(id)a2 completionBlock:(id /* block */)a3; - (void)_processRecordChanged:(id)a0; - (void)_processRecordDeletion:(id)a0; - (void)_processRecordZoneChangeTokenUpdated:(id)a0 zoneID:(id)a1 clienChangeToken:(id)a2; - (void)_processRecordZoneFetchCompletion:(id)a0 zoneID:(id)a1 clientChangeTokenData:(id)a2 moreComing:(BOOL)a3 error:(id)a4; - (void)_resolveChatConflictUsingCKRecord:(id)a0 localGUID:(id)a1; - (BOOL)_shouldResyncChatsForError:(id)a0; - (void)_syncChatsWithCloudKitWithCompletionType:(long long)a0 activity:(id)a1 syncChatsCompletionBlock:(id /* block */)a2; - (void)_updateChatUsingCKRecord:(id)a0 onRead:(BOOL)a1 didSucceed:(BOOL)a2 dispatchToMain:(BOOL)a3; - (void)_writeCKRecordsToChatZone:(id)a0 activity:(id)a1 withCompletion:(id /* block */)a2; - (void)_writeDirtyChatsToCloudKitWithActivity:(id)a0 completion:(id /* block */)a1; - (void)anyChatExistsOnServerWithActivity:(id)a0 completion:(id /* block */)a1; - (void)deleteChatSyncToken; - (id)initWithSyncTokenStore:(id)a0; - (void)syncChatsWithType:(long long)a0 withActivity:(id)a1 completion:(id /* block */)a2; - (void)syncPendingDeletionWithCompletion:(id /* block */)a0; @end