@class NSDate, NSCalendar, NSString, NSArray, AnalyticsWorkspace, ImpoExpoService, NSObject, SystemSettingsRelay; @protocol OS_dispatch_queue; @interface NetworkAnalyticsModel : NSObject { NSString *journalName; AnalyticsWorkspace *workspace; NSObject *queue; ImpoExpoService *ieService; int wifiPredictionLogic; int cellPredictionLogic; int weightStrategy; NSString *_pathForReadingIpsFile; NSString *_simulatedJournalPath; unsigned long long periodPerDay; unsigned long long minimumEventsToConsiderPattern; long long firstEventTimeStampWifi; long long firstEventTimeStampCell; long long lastEventTimeStampWifi; long long lastEventTimeStampCell; unsigned long long numberOfDaysWithWifiEvents; unsigned long long numberOfDaysWithCellEvents; NSArray *defaultArrayOfDaysGroupWifi; NSArray *defaultArrayOfDaysGroupCell; NSArray *currentArrayOfDaysGroupWifi; NSArray *currentArrayOfDaysGroupCell; long long timezoneOffsetFromUtcNoDaylight; long long homeTimezoneOffsetFromUtcNoDaylight; BOOL homeTimezoneOffsetKnownCoreRoutine; double wifiPredictionError; double cellPredictionError; NSArray *defaultLQMPredictionsWifi; NSArray *defaultLQMPredictionsCell; NSArray *currentLQMPredictionsWifi; NSArray *currentLQMPredictionsCell; NSString *currentlyConnectedWifiSsid; NSArray *disconnectionPatternsWifi; id _cellEpochObserver; id _wifiEpochObserver; id _timezoneChangedObserver; NSCalendar *_calendar; unsigned long long limMinSamples; double limRatio; SystemSettingsRelay *systemSettingsRelay; } @property (retain) NSDate *lastModelRunTime; @property (retain) NSDate *debugTrainingTime; @property (nonatomic) BOOL isHelper; + (id)getDaysWithSimilarPatternForInterfaceType:(long long)a0; + (double)fetchPredictionErrorForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4; + (double)fetchTrainingProgressForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4; + (id)modelGeneratedAt; + (id)fetchPredictionsForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4 error:(id *)a5; + (unsigned long long)modelResolution; + (void)purgeAllJournalRecords; + (void)resetModel; - (double)_fetchTrainingProgressForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4; - (int)_elbowOfList:(id)a0; - (unsigned long long)_getWeightForAge:(long long)a0; - (void)dealloc; - (unsigned long long)_modelResolution; - (void)_trainModelForInterfaceType:(long long)a0 sanitizedLQMTable:(id)a1; - (id)_learnDisconnectionPatternForSetOfDays:(id)a0 impairmentEvents:(id)a1; - (id)_getPredictionJournalNameWithPrefix:(id)a0 forInterface:(long long)a1 slotSizeMinutes:(unsigned long long)a2; - (long long)_getDominantLQMInSlotWithTimeSpentInBest:(long long)a0 inFair:(long long)a1 inMinimallyViable:(long long)a2 inNone:(long long)a3; - (id)_getDaysWithSimilarPatternForInterfaceType:(long long)a0; - (void)trainModel; - (id)_purgeAndReturnValidJournalWithPrefix:(id)a0 olderThan:(unsigned long long)a1; - (id)initWithJournalName:(id)a0 workspace:(id)a1 queue:(id)a2; - (long long)_getNWInstantQualityForNetwork:(long long)a0 basedOnLQM:(char)a1; - (double)_fetchPredictionErrorForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4; - (struct { long long x0; long long x1; long long x2; long long x3; })_parseTimeIntoWeekdayAndSlotId:(long long)a0 withReferenceDate:(id)a1; - (void)_updateHomeTimezoneOffsetIfNeeded; - (BOOL)_isLegacyJournal:(id)a0; - (BOOL)_savePredictionToJournalForInterface:(long long)a0; - (id)_clusterEventsUsingKMeansForSetOfDays:(id)a0 networkStateTable:(id)a1 saveCentroidsTo:(id)a2; - (long long)_predictNetworkQualityBasedOnAverageNWInstantQuality:(double)a0; - (void)_actUponSystemSettingsAirplaneChanged:(BOOL)a0 wifiChanged:(BOOL)a1 cellDataChanged:(BOOL)a2; - (id)_getSavedPredictionHeaderNameForInterface:(long long)a0; - (void)_resetModel; - (void)_purgeSavedPredictionsOlderThan:(unsigned long long)a0; - (id)_getComplementaryPredictionNameForInterface:(long long)a0; - (void)_fetchHomeTimezoneOffsetFromJournal; - (unsigned long long)_sanitizeInternalLQMStateEventFrom:(id)a0 toTable:(id)a1; - (void)_handleTimezoneChanged; - (id)_readJournalEntriesUsingSimulatedfile; - (void)_shuffleArray:(id)a0; - (id)_fetchPredictionsForInterfaceType:(long long)a0 isAny:(BOOL)a1 isBuiltin:(BOOL)a2 scopedToLOI:(long long)a3 hasCustomSignature:(id)a4 error:(id *)a5; - (void)_trainModelAt:(id)a0; - (void)_processJournalData:(id)a0 startFrom:(long long)a1 endAt:(long long)a2 rawWifiStateSet:(id)a3 rawCellStateSet:(id)a4; - (BOOL)_insertInternalNetworkStateRecordTo:(id)a0 networkId:(id)a1 networkLQM:(long long)a2 age:(long long)a3 dayOfWeek:(long long)a4 slotId:(long long)a5 numberOfSlots:(long long)a6 stateDuration:(long long)a7; - (void)observeValueForKeyPath:(id)a0 ofObject:(id)a1 change:(id)a2 context:(void *)a3; - (BOOL)_isValidTimezoneToReturnPredictions; - (double)_clusterUsingKMeansOn:(id)a0 into:(int)a1 iterations:(int)a2 saveCentroidsTo:(id)a3; - (void).cxx_destruct; - (void)_purgeAllJournalRecords; - (id)_readJournalEntriesUsingImpoExpoService; - (void)processProxyTrain; - (void)_loadLatestPredictionFromJournalWithInterfaceType:(long long)a0; - (long long)_getCellInstantQualityBasedOnLQM:(char)a0; - (id)_loadSavedPredictionBasedOnHeaderData:(id)a0 interface:(long long)a1; - (BOOL)_shouldCreateIpsFile; - (id)_readJournalEntriesUsingIpsfile; - (unsigned long long)_getTotalWeightForCompletedHistory; - (id)_createHeaderDataForSavedPredictionsName:(id)a0 hasComplementaryPrediction:(BOOL)a1 interfaceType:(long long)a2; - (void)_printInternalStateSet:(id)a0; - (long long)_getWifiInstantQualityBasedOnLQM:(char)a0; - (void)_setCalendar:(id)a0; - (void)_clusterImpairmentEventsUsingKMeansOn:(id)a0 saveCentroidsTo:(id)a1; - (void)_handleNetworkNotificationFrom:(long long)a0 notification:(id)a1; - (void)_processLowInternetModeRecord:(id)a0 addTo:(id)a1; - (void)_removePrimarykeyAndLocationInJournalRecordInfo:(id)a0; - (id)_clusterEventsInWeekUsingKMeansOn:(id)a0; - (double)_evaluateErrorOfLQMPredictions:(id)a0 againstObservedLQMTable:(id)a1; - (id)_extractImpairmentEventsFromNetworkStateTable:(id)a0 setOfDays:(id)a1; - (void)_processNetworkState:(struct { struct _NSRange { unsigned long long x0; unsigned long long x1; } x0; char x1; int x2; int x3; long long x4; char x5; } *)a0 toStateSet:(id)a1 stateStartTimeInfo:(struct { long long x0; long long x1; long long x2; long long x3; })a2 stateEndTimeInfo:(struct { long long x0; long long x1; long long x2; long long x3; })a3 effectiveNetworkId:(id)a4; - (struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; double x3; double x4; unsigned long long x5; unsigned long long x6; double x7; double x8; unsigned long long x9; unsigned long long x10; double x11; double x12; })_calculateStatisticsFromNetworkStateTable:(id)a0 usingPredicate:(id)a1; - (long long)_getCurrentLocationTimezoneOffsetWithoutDST; - (BOOL)_isValidTimezoneToTrain; - (void)_generatePredictionForDays:(id)a0 fromClusteredEvents:(id)a1 clusterCentroids:(id)a2 interfaceType:(long long)a3 basedOnWeekClusters:(long long)a4 savePredictionsTo:(id)a5; - (void)_finishedReadingLowInternetModeRecords:(id)a0; - (id)_readJournalEntries; @end