luxlabs header browser preview


@class NSString, TIKeyboardInput, NSArray, TITypingSession, NSMutableDictionary, TIUserModelDataStore, TIInputMode, NSMutableArray, NSObject, NSDictionary, NLTagger;
@protocol OS_dispatch_queue, TISensorWriterWrapper;

@interface TISKMetricCollector : NSObject <TITypingSessionAggregatedEventObserver> {
    TIInputMode *_inputMode;
    NSMutableDictionary *_touchToEventMap;
    NSMutableArray *_events;
    NSArray *_sortedEvents;
    NSMutableArray *_touches;
    NSMutableArray *_layoutIDs;
    NSMutableArray *_taps;
    long long _wordPosition;
    TIKeyboardInput *_lastInput;
    long long _currentWordPosition;
    long long _eventOrder;
    unsigned long long _aggregatedWordThreshold;
    TIUserModelDataStore *_userModelDataStore;
    BOOL _accentedLanguage;
    NSMutableArray *_accentedLayoutsMap;
    NSString *_identifier;
    NSObject<OS_dispatch_queue> *_workQueue;
    int _tccNotifyToken;
    BOOL _isTCCAuthorized;
    BOOL _skipTCCAuthorization;
    NSDictionary *_wordBucketDictionary;
    NSDictionary *_emojiBuckets;
    NLTagger *_tagger;
    NSString *_previousWord;
}

@property (nonatomic) unsigned long long wordAccumulationThreshold;
@property (retain, nonatomic) id<TISensorWriterWrapper> dataWriter;
@property (retain, nonatomic) NSMutableArray *savedSessionStatsArray;
@property (retain, nonatomic) NSMutableArray *currentSessionStatsArray;
@property (retain, nonatomic) TITypingSession *typingSession;
@property (nonatomic) BOOL isLoaded;
@property (readonly) unsigned long long hash;
@property (readonly) Class superclass;
@property (readonly, copy) NSString *description;
@property (readonly, copy) NSString *debugDescription;

+ (id)makeMetricCollector:(id)a0 wordsThreshold:(unsigned long long)a1 isTesting:(BOOL)a2;
+ (BOOL)isSensorKitSupported:(id)a0;

- (id)init:(id)a0;
- (void)_clear;
- (void)_consumeDeleteWordEvent:(id)a0;
- (void)_haltSessionTypingTimer:(id)a0 event:(id)a1;
- (void)_metricWalk;
- (void)dealloc;
- (void)_consumePathsAndPredictions:(id)a0 emojiSearchMode:(BOOL)a1;
- (void)removeSessionStatsWithNegativeDurationFromArray:(id)a0 ForTypingSession:(id)a1;
- (void)testTCCAuthorization;
- (id)init:(id)a0 wordsThreshold:(unsigned long long)a1 accentedLanguage:(BOOL)a2;
- (id)getWordBucketCategoryForWord:(id)a0;
- (double)totalTimeSpan;
- (void)handleTypingSession:(id)a0;
- (id)init:(id)a0 wordsThreshold:(unsigned long long)a1 accentedLanguage:(BOOL)a2 skipTCCAuthorization:(BOOL)a3;
- (long long)findIndexSessionStatsFromArray:(id)a0 thatHasLayout:(id)a1;
- (id)_consumeTypingSession:(id)a0;
- (void)loadEmojiBucketDictionaryIfNecessary;
- (void)_processEvents;
- (id)_mapIDToLayout:(unsigned long long)a0;
- (id)eventsDescription:(BOOL)a0;
- (id)lemmatizeWord:(id)a0;
- (void)sessionDidEnd:(id)a0 aligned:(id)a1;
- (id)privateEventsDescription;
- (void)loadWordBucketDictionaryIfNecessary;
- (id)consumeTypingSession:(id)a0;
- (void).cxx_destruct;
- (id)eventsDescription;
- (void)placeTaskOnWorkQueue:(id /* block */)a0;
- (void)_persistSavedSessionStatsArray;
- (id)_insertEmojiSwitchEvents:(id)a0;
- (double)totalTimeSpanFromLastTap;
- (void)_consumeInputsAndTouches:(id)a0 occurenceTime:(double)a1 emojiSearchMode:(BOOL)a2;
- (void)_mapTapsToEvents;
- (void)processNewSessionStatsArray:(id)a0;
- (id)loadDataWithFilename:(id)a0;
- (id)_retrieveSavedSessionSampleArray;
- (void)_consumeWordEntry:(id)a0;
- (void)_resetConsumeState;
- (void)_coalesceTaps;
- (BOOL)publishIfSessionStatsHasWordCountMoreThanThreshold:(id)a0 withSessionStartTime:(BOOL)a1;
- (void)setupSessionStatsForLayouts;
- (void)_setupTCCAuthNotification;
- (void)_loadStatsFromDataStore;
- (void)_consumeUserAction:(id)a0;
- (id)init:(id)a0 wordsThreshold:(unsigned long long)a1;

@end