luxlabs header browser preview


@class NSArray, NSDictionary, NSSet, NSString, NSMutableDictionary, FCMTWriterLock;

@interface FCReadingHistory : FCPrivateDataController <FCClearableReadingHistory> {
    NSMutableDictionary *_itemsByIdentifier;
    NSMutableDictionary *_itemsByArticleID;
    FCMTWriterLock *_itemsLock;
}

@property (readonly, nonatomic) NSArray *sortedVisitedArticleIDs;
@property (readonly, nonatomic) NSArray *sortedListenedArticleIDs;
@property (readonly, nonatomic) NSArray *readingHistoryItems;
@property (readonly, nonatomic) NSDictionary *readingHistoryItemsByArticleID;
@property (readonly, nonatomic) NSSet *allReadArticleIDs;
@property (readonly, nonatomic) NSSet *allSeenArticleIDs;
@property (readonly, nonatomic) NSSet *allConsumedArticleIDs;
@property (readonly, nonatomic) NSSet *allLikedArticleIDs;
@property (readonly, nonatomic) NSSet *allDislikedArticleIDs;
@property (readonly) unsigned long long hash;
@property (readonly) Class superclass;
@property (readonly, copy) NSString *description;
@property (readonly, copy) NSString *debugDescription;

+ (id)desiredKeys;
+ (void)populateLocalStoreClassRegistry:(id)a0;
+ (unsigned long long)localStoreVersion;
+ (BOOL)requiresPushNotificationSupport;
+ (id)backingRecordZoneIDs;
+ (long long)commandQueueUrgency;
+ (void)configureKeyValueStoreForJSONHandling:(id)a0;
+ (id)commandsToMergeLocalDataToCloud:(id)a0 privateDataDirectory:(id)a1;
+ (id)backingRecordIDs;
+ (id)commandStoreFileName;
+ (id)localStoreFilename;
+ (BOOL)requiresHighPriorityFirstSync;
+ (BOOL)requiresBatchedSync;

- (id)historyItemsByArticleIDForArticleIDs:(id)a0;
- (BOOL)markArticleAsSeenWithHeadline:(id)a0;
- (void)removeObserver:(id)a0;
- (BOOL)markArticleAsReadWithArticleID:(id)a0 articleVersion:(long long)a1 readDate:(id)a2;
- (BOOL)toggleDislikeForArticleWithID:(id)a0;
- (BOOL)toggleArticleHasBeenMarkedAsOffensive:(id)a0;
- (id)pruneRecords:(id)a0 forZoneName:(id)a1;
- (void)loadLocalCachesFromStore;
- (id)sortedVisitedArticleIDsSatisfying:(id /* block */)a0;
- (BOOL)canHelpRestoreZoneName:(id)a0;
- (id)listeningProgressSavedDateFor:(id)a0;
- (void)markArticleAsReadWithHeadline:(id)a0;
- (void)removeArticleFromHistory:(id)a0;
- (BOOL)hasArticleBeenRemovedFromAudio:(id)a0;
- (BOOL)markArticleAsSeenWithHeadline:(id)a0 rememberForever:(BOOL)a1;
- (double)softMaxRecordAgeWhenMigratingZoneName:(id)a0;
- (void)markArticleAsReadWithHeadline:(id)a0 fromGroupType:(long long)a1 swipedToArticle:(BOOL)a2 onScreenChecker:(id /* block */)a3;
- (BOOL)hasArticleBeenRead:(id)a0;
- (BOOL)hasArticleBeenSeen:(id)a0;
- (unsigned long long)likingStatusForArticleID:(id)a0;
- (long long)listenedCountFor:(id)a0;
- (BOOL)hasArticleBeenMarkedAsOffensive:(id)a0;
- (double)listeningProgressFor:(id)a0;
- (id)localStoreMigrator;
- (BOOL)hasArticleBeenVisited:(id)a0;
- (id)firstSeenDateFor:(id)a0;
- (id)lastListenedFor:(id)a0;
- (BOOL)markArticle:(id)a0 withRemovedFromAudio:(BOOL)a1;
- (BOOL)markArticle:(id)a0 withLikingStatus:(unsigned long long)a1;
- (BOOL)markArticle:(id)a0 withCompletedListening:(BOOL)a1;
- (id)lastVisitedDateForArticleID:(id)a0;
- (id)consumedArticleIDsForTagID:(id)a0 fromTime:(id)a1;
- (id)recordsForRestoringZoneName:(id)a0;
- (BOOL)hasArticleCompletedReading:(id)a0;
- (BOOL)hasArticleBeenConsumed:(id)a0;
- (id)historyItemsForArticleIDs:(id)a0;
- (id)allKnownRecordNamesWithinRecordZoneWithID:(id)a0;
- (void)clearHistory;
- (id)readingPositionSavedDateFor:(id)a0;
- (BOOL)markArticle:(id)a0 withCompletedReading:(BOOL)a1;
- (id)readingPositionJSONFor:(id)a0;
- (void).cxx_destruct;
- (id)markArticlesAsSeenWithHeadlines:(id)a0;
- (void)handleSyncWithChangedRecords:(id)a0 deletedRecordNames:(id)a1;
- (BOOL)canHelpPruneZoneName:(id)a0;
- (BOOL)toggleLikeForArticleWithID:(id)a0;
- (id)initWithContext:(id)a0 pushNotificationCenter:(id)a1 storeDirectory:(id)a2;
- (void)markArticle:(id)a0 asArticleConsumed:(BOOL)a1 sourceChannelTagID:(id)a2;
- (void)markArticle:(id)a0 withLastListened:(id)a1;
- (id)mostRecentlyReadArticlesWithMaxCount:(unsigned long long)a0;
- (void)markArticle:(id)a0 withReadingPositionJSON:(id)a1;
- (void)addObserver:(id)a0;
- (unsigned long long)softMaxRecordCountWhenMigratingZoneName:(id)a0;
- (BOOL)hasArticleBeenReadMoreThanThreshold:(id)a0;
- (id)mostRecentlyCompletedListeningArticlesWithMaxCount:(unsigned long long)a0;
- (void)markArticle:(id)a0 withListeningProgress:(double)a1;
- (void)markArticle:(id)a0 asOffensive:(BOOL)a1;
- (BOOL)hasArticleCompletedListening:(id)a0;

@end