@class NSString, EMBlockedSenderManager, EFLazyCache, CNContactStore, EFSQLTableSchema, EDPersistenceHookRegistry, EDPersistenceDatabase, NSObject; @protocol OS_dispatch_queue; @interface EDSenderPersistence : NSObject { struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _contactStoreLock; } @property (class, readonly, nonatomic) EFSQLTableSchema *sendersTableSchema; @property (class, readonly, nonatomic) EFSQLTableSchema *senderAddressesTableSchema; @property (class, readonly, copy, nonatomic) NSString *sendersTableName; @property (class, readonly, copy, nonatomic) NSString *sendersBucketColumnName; @property (class, readonly, copy, nonatomic) NSString *senderAddressesTableName; @property (class, readonly, copy, nonatomic) NSString *senderAddressesSenderColumnName; @property (class, readonly, copy, nonatomic) NSString *senderAddressesAddressColumnName; @property (readonly, nonatomic) EDPersistenceDatabase *database; @property (readonly, nonatomic) EMBlockedSenderManager *blockedSenderManager; @property (readonly, nonatomic) EDPersistenceHookRegistry *hookRegistry; @property (retain, nonatomic) CNContactStore *contactStore; @property (readonly, nonatomic) EFLazyCache *emailAddressToBucketCache; @property (readonly, nonatomic) EFLazyCache *databaseIDToEmailAddressCache; @property (readonly, nonatomic) NSObject *processingQueue; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)tablesAndForeignKeysToResolve:(id *)a0 associationsToResolve:(id *)a1; + (id)addJoinsForSenderBucketToSelectStatement:(id)a0 withSourceAddressColumn:(id)a1; - (void)_moveAddressesFromSentMessagesToPrimaryForMessages:(id)a0; - (long long)_bucketForSenderAddress:(id)a0; - (id)_addressIDsForAddresses:(id)a0 connection:(id)a1; - (id)_addressesToDatabaseIDsForSimpleAddresses:(id)a0 connection:(id)a1; - (void)persistenceDidAddMessages:(id)a0 generationWindow:(id)a1; - (id)_simpleAddressesForAddresses:(id)a0; - (id)_moveSenderWithSimpleEmailAddresses:(id)a0 toBucket:(long long)a1 sync:(BOOL)a2 userInitiated:(BOOL)a3 transactionGeneration:(long long *)a4; - (id)initWithDatabase:(id)a0 blockedSenderManager:(id)a1 hookRegistry:(id)a2 contactStore:(id)a3; - (long long)_bucketForSenderWithDatabaseID:(long long)a0 connection:(id)a1; - (BOOL)_addNewSender:(id)a0 toBucket:(long long)a1 connection:(id)a2; - (BOOL)_blockOrUnblockSendersForAddresses:(id)a0 block:(BOOL)a1 blockedAddressDatabaseIDs:(id)a2 connection:(id)a3 addressesToUpdate:(id *)a4; - (void)_updateBlockedSendersWithBlockedSenderAddresses:(id)a0 newlyBlockedAddresses:(id /* block */)a1 newlyUnblockedAddresses:(id /* block */)a2; - (id)relevantSendersForSearch; - (id)_combineDictionary:(id)a0 withDictionary:(id)a1; - (void)_setIsBlocked:(BOOL)a0 forAddresses:(id)a1; - (void)scheduleRecurringActivity; - (unsigned long long)handleReconciliationMergeErrorForTable:(id)a0 columnName:(id)a1 statement:(id)a2 journalRowID:(id)a3 protectedRowID:(id)a4 connection:(id)a5 rowsUpdated:(unsigned long long *)a6 error:(id *)a7; - (void)_invalidateCaches; - (BOOL)_addNewSendersForEmailAddresses:(id)a0 toBucket:(long long)a1 connection:(id)a2 newSenders:(id *)a3; - (void)addAddresses:(id)a0 toSender:(id)a1; - (BOOL)_moveSenderWithDatabaseID:(long long)a0 toBucket:(long long)a1 connection:(id)a2; - (void).cxx_destruct; - (long long)bucketForSenderAddress:(id)a0; - (void)moveSenderWithEmailAddresses:(id)a0 toBucket:(long long)a1; - (id)_contactIdentifierForSenderWithDatabaseID:(long long)a0 connection:(id)a1; - (void)test_tearDown; - (void)_moveSenderWithEmailAddresses:(id)a0 toBucket:(long long)a1 sync:(BOOL)a2 userInitiated:(BOOL)a3; - (id)_addressIDsGroupedByContactsForAddressesByContact:(id)a0 withConnection:(id)a1 addressesByID:(id *)a2; - (void)_invalidateCachesForAddresses:(id)a0; - (id)_emailAddressForDatabaseID:(id)a0 connection:(id)a1; - (id)_addressesGroupedByContactForAddresses:(id)a0 unmatchedAddresses:(id *)a1 otherAddressesByContact:(id *)a2; - (BOOL)_addAddressesWithDatabaseIDs:(id)a0 toSenderWithDatabaseID:(id)a1 connection:(id)a2 error:(id *)a3; - (BOOL)_addNewSenderWithAddressIDs:(id)a0 contactIdentifier:(id)a1 toBucket:(long long)a2 connection:(id)a3 senderDatabaseID:(long long *)a4; - (void)_blockedSendersDidChange:(id)a0; - (void)_reloadBlockedSendersWithAddresses:(id)a0; - (void)removeAddresses:(id)a0 fromSender:(id)a1; - (id)_newlyBlockedAddressesForBlockedAddressDatabaseIDs:(id)a0 connection:(id)a1; - (id)_addressesGroupedBySimpleAddressForAddresses:(id)a0; - (id)_newlyUnblockedAddressesForBlockedAddressDatabaseIDs:(id)a0 connection:(id)a1; - (id)_addressesToDatabaseIDsForSelect:(id)a0 addressColumns:(id)a1 connection:(id)a2 error:(id *)a3; @end