@class NSMutableDictionary, HDContentProtectionManager, HDXPCGatedActivity, NSDate, HDProfile, NSObject, HKProfileIdentifier, HDAssertionManager, HDDatabaseJournal, NSMutableArray, NSConditionLock, NSDictionary, NSString, NSHashTable, NSMutableSet, NSOperationQueue, HKObserverSet, NSLock, NSUUID; @protocol OS_dispatch_queue, OS_dispatch_group, OS_dispatch_source; @interface HDDatabase : NSObject <HDAssertionObserver, HDContentProtectionObserver, HDDiagnosticObject, HDSQLiteDatabaseDelegate, HDDatabaseConnectionPoolDelegate, HDSQLiteDatabaseProvider, HDDatabaseJournalDelegate, HDDatabaseMigrationTransactionDelegate, HDProfileReadyObserver, HDHealthDaemonReadyObserver, HDAnalyticsSubmissionCoordinatorDelegate, HDDatabaseCorruptionEventStoreDelegate, HDHealthDatabase> { _Atomic BOOL _invalidated; _Atomic BOOL _started; NSString *_profileDirectoryPath; NSUUID *_databaseUUID; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _databaseUUIDLock; NSObject<OS_dispatch_queue> *_serialAsynchronousQueue; NSLock *_writeLock; NSObject<OS_dispatch_queue> *_protectedDataQueue; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _protectedDataLock; HKObserverSet *_protectedDataObservers; long long _protectedDataState; long long _protectedDataLock_observedContentProtectionState; BOOL _isObservingContentProtection; NSObject<OS_dispatch_group> *_contentProtectionObservationGroup; NSObject<OS_dispatch_source> *_inactivityFlushTimer; BOOL _hasFlushedForInactivity; NSMutableArray *_firstUnprotectedWriteTransactionBlocks; NSMutableArray *_firstProtectedWriteTransactionBlocks; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _transactionStartLock; NSObject<OS_dispatch_group> *_transactionStartGroup; NSMutableArray *_firstUnlockBlocks; BOOL _shouldNotifyFirstUnlockObservers; NSDate *_protectedDataFlushDeadlineDate; NSObject<OS_dispatch_source> *_protectedDataFlushDeadlineTimer; BOOL _hasFlushedProtectedData; BOOL _disableTakingProtectedDataAssertionsWhenLocked; unsigned long long _journalMergeEpoch; unsigned long long _mergedJournalEpoch; _Atomic BOOL _hasPendingSecondaryJournalMerge; _Atomic BOOL _shouldPerformHFDVerificationAfterSecondaryJournalMerge; HDXPCGatedActivity *_secondaryJournalMergeActivity; _Atomic BOOL _hasCompletedFirstJournalMergeCleanup; NSMutableDictionary *_databaseJournalMergeObserverSetByType; NSHashTable *_protectedResourceStores; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _protectedResourceAssertionsLock; NSMutableDictionary *_protectedResourceAssertionsByIdentifier; struct atomic_flag { _Atomic BOOL _Value; } _hasFaultedForCorruptionError; NSString *_threadLocalTransactionKey; NSString *_threadLocalTransactionContextStackKey; HDAssertionManager *_assertionManager; NSLock *_schemaMigrationLock; NSConditionLock *_activeDatabasesLock; NSMutableSet *_activeDatabases; NSHashTable *_migratedDatabases; NSOperationQueue *_asynchronousOperationQueue; NSMutableDictionary *_extendedTransactions; NSDictionary *_databasePoolForType; } @property (readonly, nonatomic) HDContentProtectionManager *contentProtectionManager; @property (nonatomic) double offsetTimeInterval; @property (nonatomic) double protectedDataFlushInterval; @property (nonatomic) double inactivityFlushInterval; @property (nonatomic) BOOL didRunPostMigrationUpdates; @property (nonatomic) long long corruptedMigrationAttemptsCount; @property (readonly, copy, nonatomic) NSDate *mostRecentObliterationDate; @property (copy, nonatomic) id /* block */ unitTest_didWaitForJournalMergeHandler; @property (readonly, nonatomic) HDDatabaseJournal *journal; @property (readonly, nonatomic) HDDatabaseJournal *cloudSyncJournal; @property (weak, nonatomic) HDProfile *profile; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (readonly, copy, nonatomic) NSString *profileDirectoryPath; @property (readonly, copy, nonatomic) HKProfileIdentifier *profileIdentifier; @property (readonly, nonatomic, getter=isDataProtectedByFirstUnlockAvailable) BOOL dataProtectedByFirstUnlockAvailable; @property (readonly, nonatomic, getter=isProtectedDataAvailable) BOOL protectedDataAvailable; + (id)allEntityClassesWithBehavior:(id)a0; + (id)allCurrentAndFutureEntityClasses; - (void)profileDidBecomeReady:(id)a0; - (void)daemonReady:(id)a0; - (id)databaseSizeInBytesForTypeUnprotected:(BOOL)a0 WAL:(BOOL)a1; - (void)assertionManager:(id)a0 assertionInvalidated:(id)a1; - (id)_newTTRPromptControllerWithProfile:(id)a0 domainName:(id)a1 loggingCategory:(id)a2; - (void)checkInDatabase:(id)a0 type:(long long)a1 protectedResources:(id)a2; - (void)unitTest_disableDatabaseAccessibilityAssertions; - (id)_newDatabaseConnectionWithURL:(id)a0; - (void)dealloc; - (void)_reportSQLiteCorruption:(id)a0 forDatabase:(long long)a1 shouldPrompt:(BOOL)a2; - (id)checkOutProtectedDatabase:(id)a0 error:(id *)a1; - (void)start; - (id)diagnosticDescription; - (id)store:(id)a0 objectForKey:(id)a1; - (BOOL)performTransactionWithContext:(id)a0 error:(id *)a1 block:(id /* block */)a2 inaccessibilityHandler:(id /* block */)a3; - (id)takeAccessibilityAssertionWithOwnerIdentifier:(id)a0 timeout:(double)a1 error:(id *)a2; - (unsigned long long)journalChapterCountForType:(long long)a0; - (BOOL)accessHighFrequencyDataStoreWithError:(id *)a0 block:(id /* block */)a1; - (id)HFDSizeInBytes; - (id)databaseSizeInBytesExcludingHFD; - (void)obliterateWithReason:(id)a0 preserveCopy:(BOOL)a1; - (void)addProtectedDataObserver:(id)a0; - (id)databaseUUIDWithError:(id *)a0; - (void)performInFirstProtectedWriteTransaction:(id /* block */)a0; - (void)migrationTransaction:(id)a0 didCreateDatabasesWithIdentifier:(id)a1; - (id)_newCorruptionEventStore; - (void)performWhenDataProtectedByFirstUnlockIsAvailable:(id /* block */)a0; - (void)finalizeExtendedTransactionForIdentifier:(id)a0; - (id)allEntityClassesWithProtectionClass:(long long)a0; - (void)store:(id)a0 setObject:(id)a1 forKey:(id)a2; - (BOOL)addJournalEntry:(id)a0 error:(id *)a1; - (void)reportDailyAnalyticsWithCoordinator:(id)a0 completion:(id /* block */)a1; - (id)progressForJournalMergeWithType:(long long)a0; - (id)takeAccessibilityAssertionWithOwnerIdentifier:(id)a0 shouldPerformTransaction:(BOOL)a1 timeout:(double)a2 error:(id *)a3; - (id)initWithProfile:(id)a0 concurrentReaderLimit:(unsigned long long)a1; - (id)_journalForType:(long long)a0; - (BOOL)performHighPriorityTransactionsWithError:(id *)a0 block:(id /* block */)a1; - (id)databasePoolForDatabaseType:(long long)a0; - (id)cloneAccessibilityAssertion:(id)a0 ownerIdentifier:(id)a1 error:(id *)a2; - (void)addProtectedDataObserver:(id)a0 queue:(id)a1; - (void)performInFirstUnprotectedWriteTransaction:(id /* block */)a0; - (id)checkOutUnprotectedDatabase:(id)a0 error:(id *)a1; - (void)addDatabaseJournalMergeObserver:(id)a0 journalType:(long long)a1 queue:(id)a2; - (void).cxx_destruct; - (id)beginExtendedTransactionWithContext:(id)a0 transactionTimeout:(double)a1 continuationTimeout:(double)a2 error:(id *)a3; - (void)databaseJournalMergeDidComplete:(id)a0; - (BOOL)performWithJournalType:(long long)a0 error:(id *)a1 block:(id /* block */)a2; - (void)unitTest_clearFirstJournalMergeCleanupFlag; - (void)unitTest_enableDatabaseAccessibilityAssertions; - (void)invalidateAndWait; - (void)databasePool:(id)a0 didFlushConnections:(id)a1; - (BOOL)addJournalEntries:(id)a0 error:(id *)a1; - (void)unitTest_setContentProtectionStateAndWait:(long long)a0; - (void)performAsynchronouslySerial:(id /* block */)a0; - (id)checkOutProtectedResources:(id)a0 error:(id *)a1; - (void)removeDatabaseJournalMergeObserver:(id)a0 journalType:(long long)a1; - (void)migrationTransaction:(id)a0 didEncounterDatabaseMismatchWithUnprotectedIdentifier:(id)a1 protectedIdentifier:(id)a2; - (void)performAsynchronously:(id /* block */)a0; - (id)allSeriesEntityClasses; - (void)migrationTransaction:(id)a0 reportHFDMigrationStatus:(long long)a1 schemaVersion:(long long)a2 error:(id)a3; - (id)migrationTransaction:(id)a0 entityClassesWithBehavior:(id)a1; - (id)unitTest_currentTransaction; - (id)newConnectionForPool:(id)a0 error:(id *)a1; - (id)extendedDatabaseTransactionForIdentifier:(id)a0; - (void)_reportDatabaseMigrationStatus:(long long)a0 component:(long long)a1 schemaVersion:(long long)a2 error:(id)a3; - (void)contentProtectionStateChanged:(long long)a0 previousState:(long long)a1; - (void)removeProtectedDataObserver:(id)a0; - (BOOL)performWithTransactionContext:(id)a0 error:(id *)a1 block:(id /* block */)a2; - (void)performWhenDataProtectedByFirstUnlockIsAvailableOnQueue:(id)a0 block:(id /* block */)a1; @end