@class NSMutableArray, NSMutableDictionary, IMDRecordZoneManager, NSObject, IMDCKAttachmentSyncCKOperationFactory; @protocol OS_dispatch_queue, SyncTokenStoreProviding; @interface IMDCKAttachmentSyncController : IMDCKAbstractSyncController @property (retain, nonatomic) NSObject *ckQueue; @property (retain, nonatomic) IMDRecordZoneManager *recordZoneManager; @property (retain, nonatomic) IMDCKAttachmentSyncCKOperationFactory *CKOperationFactory; @property (retain, nonatomic) id syncTokenStore; @property (retain, nonatomic) NSMutableDictionary *completionBlocksForAssetFetchOperations; @property (retain, nonatomic) NSMutableDictionary *recordIDToTransferMap; @property (copy, nonatomic) id /* block */ perTransferProgress; @property (nonatomic) BOOL assetDownloadInProgress; @property (retain, nonatomic) NSMutableArray *downloadAssetsForTransferGUIDs; @property (nonatomic) unsigned long long deviceConditionsToCheck; @property (nonatomic) BOOL isDoingDeleteRecoverySync; + (id)sharedInstance; - (id)init; - (void)_needsToMarkAllAttachmentsAsNeedingSync; - (long long)syncControllerRecordType; - (void)_scheduleOperation:(id)a0; - (id)_updateAttachmentGUIDIfNeededAndReturnTransfersToForceMarkAsSync:(id)a0 transfersToSyncRowIDs:(id)a1; - (void)deleteAttachmentZone; - (void)_markAllFailedAttachmentsAsNeedingSync; - (void)deleteAttachmentSyncToken; - (void).cxx_destruct; - (BOOL)_shouldMarkAttachmentsAsNeedingReupload; - (BOOL)_shouldMarkAllAttachmentsAsNeedingSync; - (void)clearLocalSyncState:(unsigned long long)a0; - (void)_removeTransferFromiCloudBackupWithGuid:(id)a0; - (void)_markAttachmentWithROWIDAsFailedToUploadToCloudKit:(id)a0; - (void)_hasMarkedAllAttachmentsAsNeedingSync; - (id)recordStore; - (id)_fetchAndPrepareRecordsToWrite:(BOOL *)a0; - (id)_recordKeyManagerSharedInstance; - (void)_markResyncForDeleteRecoveryAs:(int)a0; - (void)_validateTransferFromCloudKit:(id)a0 localTransfer:(id)a1 validateCompletion:(id /* block */)a2; - (void)acceptFileTransfers:(id)a0 completion:(id /* block */)a1; - (void)setLatestSyncToken:(id)a0 forSyncType:(long long)a1; - (id)__databaseRequestForAttachmentsWithAssets; - (BOOL)__shouldOptimizeAttachmentDefault; - (unsigned long long)_attachmentDeleteBatchSize; - (BOOL)_attachmentDownloadCanStart:(BOOL)a0 withActivity:(id)a1; - (BOOL)_attachmentZoneCreated; - (id)_attachmentZoneID; - (id)_attachmentZoneSalt; - (id)_changeTokenKeyForSyncType:(long long)a0; - (id)_ckUtilitiesInstance; - (id)_constructAttachmentRecordIDUsingTombStoneDictionary:(id)a0; - (id)_copyRecordIDsToDeleteWithLimit:(unsigned long long)a0; - (void)_deleteAttachmentsWithRecordIDs:(id)a0 completion:(id /* block */)a1; - (BOOL)_deviceConditionsAllowsMessageSyncForCurrentBatchCount:(long long)a0 maxBatchCount:(long long)a1 activity:(id)a2; - (BOOL)_deviceConditionsAllowsMessageSyncIgnoreFeatureEnabled:(BOOL)a0 activity:(id)a1; - (BOOL)_deviceConditionsAllowsMessageSyncWithActivity:(id)a0; - (void)_downloadAttachmentAssetsWithActivity:(id)a0 restoringAttachments:(BOOL)a1 retryCount:(unsigned long long)a2 numAttachmentsDownloaded:(unsigned long long)a3 completion:(id /* block */)a4; - (void)_downloadAttachmentAssetsWithActivity:(id)a0 restoringAttachments:(BOOL)a1 retryCount:(unsigned long long)a2 numAttachmentsDownloaded:(unsigned long long)a3 transfers:(id)a4 completion:(id /* block */)a5; - (void)_fetchAndValidateFileTransfersFromCloudKit:(id)a0 capturedWithABC:(BOOL)a1 activity:(id)a2 completion:(id /* block */)a3; - (void)_fetchAttachmentZoneChangesShouldWriteBackChanges:(BOOL)a0 desiredKeys:(long long)a1 syncType:(long long)a2 currentBatchCount:(long long)a3 maxBatchCount:(long long)a4 syncToken:(id)a5 activity:(id)a6 completionBlock:(id /* block */)a7; - (void)_fetchAttachmentZoneRecords:(id)a0 desiredKeys:(long long)a1 ognSuffix:(id)a2 removeTombstones:(BOOL)a3 activity:(id)a4 completion:(id /* block */)a5; - (BOOL)_fetchedAllChangesFromCloudKit; - (BOOL)_hasCompletedRecoveryResync; - (void)_initResyncForDeleteRecovery; - (void)_kickOffAssetFetchForTransfersIfNeededWithActivity:(id)a0; - (BOOL)_kickOffWriteIfNeededForSyncType:(long long)a0 activity:(id)a1 completion:(id /* block */)a2; - (void)_kickOffWriteOnCKQueueWithActivity:(id)a0 completion:(id /* block */)a1; - (void)_markAttachmentWithROWIDAsSyncedWithCloudKit:(long long)a0; - (void)_markTransferAsNotBeingAbleToSync:(id)a0; - (void)_markTransferAsNotBeingAbleToSyncUsingCKRecord:(id)a0; - (void)_migrateSyncToken; - (unsigned long long)_numberOfAttachmentsToDownload; - (unsigned long long)_numberOfAttachmentsToWriteUp; - (long long)_numberOfBatchesOfAttachmentsToFetchInInitialSync; - (long long)_numberOfMetadataBatchesOfAttachmentsToFetchInInitialSync; - (id)_operationErrorForModifyingRecordCompletion:(id)a0; - (void)_processAndValidateAttachmentRecordsEligibleForPurge:(id)a0 recordIDsToTransfers:(id)a1 capturedWithABC:(BOOL)a2 completion:(id /* block */)a3; - (void)_processAssetFetchOperationCompletionBlock:(id)a0 removeTombstones:(BOOL)a1 operationID:(id)a2 error:(id)a3; - (void)_processAssetFetchPerRecordCompletionBlock:(id)a0 recordID:(id)a1 error:(id)a2; - (void)_processAssetFetchPerRecordProgressBlock:(id)a0 progress:(double)a1; - (void)_processFetchRecordChangesCompleted:(id)a0 completionBlock:(id /* block */)a1; - (void)_processModifyPerRecordCallBack:(id)a0 error:(id)a1; - (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 syncType:(long long)a3; - (void)_processRecordZoneFetchCompletion:(id)a0 zoneID:(id)a1 clientChangeTokenData:(id)a2 moreComing:(BOOL)a3 shouldWriteBackChanges:(BOOL)a4 desiredKeys:(long long)a5 syncType:(long long)a6 error:(id)a7 currentBatchCount:(long long)a8 maxBatchCount:(long long)a9 activity:(id)a10 completionBlock:(id /* block */)a11; - (unsigned long long)_readNextDeleteAfterRow; - (id)_recordsToProcessWithError:(id)a0 error:(id)a1; - (void)_resetAttachmentSyncStateForRecord:(id)a0 toState:(long long)a1; - (int)_resyncForDeleteRecoveryState; - (void)_setNextDeleteAfterRow:(unsigned long long)a0; - (void)_updateDeviceConditionsToCheckIfNeededForCurrentBatchCount:(long long)a0 maxBatchCount:(long long)a1; - (void)_updateTransferUsingCKRecord:(id)a0 wasFetched:(BOOL)a1 dispatchToMain:(BOOL)a2; - (void)_writeAttachmentsToCloudKitWithActivity:(id)a0 completionBlock:(id /* block */)a1; - (void)_writeCKRecordsToAttachmentZone:(id)a0 activity:(id)a1 withCompletion:(id /* block */)a2; - (void)acceptFileTransfer:(id)a0 completion:(id /* block */)a1; - (void)downloadAttachmentAssetsForChatIDs:(id)a0 services:(id)a1 style:(unsigned char)a2 completion:(id /* block */)a3; - (void)downloadAttachmentAssetsWithActivity:(id)a0 restoringAttachments:(BOOL)a1; - (void)downloadAttachmentAssetsWithActivity:(id)a0 restoringAttachments:(BOOL)a1 completion:(id /* block */)a2; - (void)fetchAttachmentDataForTransfers:(id)a0 highQuality:(BOOL)a1 perTransferProgress:(id /* block */)a2 activity:(id)a3 completion:(id /* block */)a4; - (id)fileTransferCenter; - (id)initWithSyncTokenStore:(id)a0; - (id)latestSyncTokenForSyncType:(long long)a0; - (unsigned long long)purgedAttachmentsCountForChatsWithChatIdentifiers:(id)a0 services:(id)a1; - (id)purgedAttachmentsForChat:(id)a0 services:(id)a1 limit:(long long)a2; - (void)syncAttachmentDeletesToCloudKitWithActivity:(id)a0 completion:(id /* block */)a1; - (void)syncAttachmentsWithSyncType:(long long)a0 deviceConditionsToCheck:(unsigned long long)a1 activity:(id)a2 completionBlock:(id /* block */)a3; @end