@class NSUUID, NSMutableDictionary, NSHashTable, NSDate, SADeviceRecord, NSMutableSet; @protocol SABluetoothScanRequestProtocol, SATimeServiceProtocol, SAAnalyticsServiceProtocol, SALocationRequestProtocol; @interface SAWithYouDetector : NSObject @property (retain, nonatomic) id clock; @property (weak, nonatomic) id bluetoothScanner; @property (weak, nonatomic) id locationRequester; @property (retain, nonatomic) id analytics; @property (retain, nonatomic) NSHashTable *clients; @property (retain, nonatomic) SADeviceRecord *deviceRecord; @property (nonatomic) BOOL longScanIsOngoing; @property (nonatomic) BOOL requestedShortScan; @property (retain, nonatomic) NSDate *lastLongScanRequest; @property (retain, nonatomic) NSDate *lastStartOfScan; @property (retain, nonatomic) NSDate *lastEndOfScan; @property (nonatomic) BOOL isNotifyWhileTravelingEnabled; @property (nonatomic) BOOL isPeriodicScansNeeded; @property (nonatomic) BOOL isInVehicularTravel; @property (retain, nonatomic) NSDate *nextOpportunisticScanDate; @property (retain, nonatomic) NSUUID *nextScheduledAlarm; @property (retain, nonatomic) NSDate *previousBufferEmptyTime; @property (retain, nonatomic) NSDate *initializationTime; @property (retain, nonatomic) NSMutableSet *relevantDevicesToFindDuringLongScan; @property (retain, nonatomic) NSMutableDictionary *foundDevicesDuringCurrentScan; @property (nonatomic) BOOL isFindingRelevantDevices; @property (retain, nonatomic) NSDate *lastRelevantDeviceFoundTime; @property (nonatomic) unsigned long long lastLongScanContext; @property (nonatomic) unsigned long long extraFoundHELECount; @property (nonatomic) unsigned long long extraFoundNonHELECount; @property (retain, nonatomic) NSDate *lastExtraHELEFoundTime; @property (retain, nonatomic) NSDate *lastExtraNonHELEFoundTime; + (id)convertSAWithYouStatusToString:(unsigned long long)a0; + (id)convertSAWithYouLongScanContextToString:(unsigned long long)a0; - (void)ingestTAEvent:(id)a0; - (void)addClient:(id)a0; - (void)removeClient:(id)a0; - (void)_updateWithYouStatusOnAdvBufferEmptyEvent:(id)a0; - (void)_scheduleNextAlarmForScanAfterDate:(id)a0; - (void)_updateLastWithYouDateAndLocation:(id)a0 forCurrentDate:(id)a1; - (BOOL)_isStatusBitSetForRelatedDeviceWithShiftIndex:(unsigned long long)a0 fromAdvertisement:(id)a1; - (unsigned long long)statusForDeviceWithUUID:(id)a0; - (BOOL)isPeriodicScansAllowed; - (void)_notifyAllClientsOfWithYouStatusUpdate:(unsigned long long)a0 forDeviceWithUUID:(id)a1; - (BOOL)_isOnlyMonitoringLeashOnlyDevices; - (void)_updateWithYouStatusIfNecessaryOnAdvertisement:(id)a0; - (void)sendScanContextToCoreAnalytics:(unsigned long long)a0 isPartOfLongScan:(BOOL)a1 scanDuration:(double)a2 relevantOnlyScanDuration:(double)a3 foundExtraHELECount:(unsigned long long)a4 extraHELEScanDuration:(double)a5 foundExtraNonHELECount:(unsigned long long)a6 extraNonHELEScanDuration:(double)a7 longScanContext:(unsigned long long)a8; - (void)_updateWithYouStatusOfRelatedDevices:(id)a0; - (BOOL)_isRecentEnoughAdvertisement:(id)a0 forCurrentDate:(id)a1; - (void)resetAllWithYouStatusAndScanStates; - (BOOL)_deviceIsWatch:(id)a0; - (void)forceUpdateWithYouStatusToFindDevices:(id)a0 withContext:(unsigned long long)a1; - (BOOL)_isValidPartID:(long long)a0; - (void)updateExtraDeviceInformation:(id)a0; - (void)requestScanIfNeeded; - (void)_updateWithYouStatusIfNecessaryOnConnectionEvent:(id)a0; - (void)_deviceWithUUID:(id)a0 isWithYouDuringLongScanOnAdvertisement:(id)a1; - (void).cxx_destruct; - (void)forceUpdateWithYouStatus; - (void)_updateAllWithYouStatusOnScanEndedEvent:(id)a0; - (void)alarmFiredForUUID:(id)a0; - (void)forceUpdateWithYouStatusWithShortScan:(BOOL)a0; - (void)resumePeriodicScan; - (BOOL)_enoughTimeHasPassedSinceInitializationToMarkNotWithYouForDeviceUUID:(id)a0; - (BOOL)allRelevantDevicesToFindAreFound; - (BOOL)isExtraDeviceFound:(id)a0 onDate:(id)a1; - (BOOL)allSAEnabledDevicesAreFound; - (void)pausePeriodicScan; - (void)didChangeTravelTypeFrom:(unsigned long long)a0 to:(unsigned long long)a1 hints:(unsigned long long)a2; - (unsigned long long)_finalizeToBeVerifiedStatus:(unsigned long long)a0; - (double)_maxAgeOfWithYouAdvertisementForDeviceUUID:(id)a0; - (id)initWithBluetoothScanner:(id)a0 locationRequester:(id)a1 deviceRecord:(id)a2 clock:(id)a3 analytics:(id)a4; @end