#if __OBJC2__
#ifndef SFAnalytics_h
#define SFAnalytics_h
#import <Foundation/Foundation.h>
#import <Security/SFAnalyticsSampler.h>
#import <Security/SFAnalyticsMultiSampler.h>
#import <Security/SFAnalyticsActivityTracker.h>
NS_ASSUME_NONNULL_BEGIN
extern const NSTimeInterval SFAnalyticsSamplerIntervalOncePerReport;
typedef NS_ENUM(uint32_t, SFAnalyticsTimestampBucket) {
SFAnalyticsTimestampBucketSecond = 0,
SFAnalyticsTimestampBucketMinute = 1,
SFAnalyticsTimestampBucketHour = 2,
};
@protocol SFAnalyticsProtocol <NSObject>
+ (id<SFAnalyticsProtocol> _Nullable)logger;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError
withAttributes:(NSDictionary* _Nullable)attributes;
- (SFAnalyticsMultiSampler* _Nullable)AddMultiSamplerForName:(NSString *)samplerName
withTimeInterval:(NSTimeInterval)timeInterval
block:(NSDictionary<NSString *,NSNumber *> *(^)(void))block;
- (SFAnalyticsActivityTracker* _Nullable)logSystemMetricsForActivityNamed:(NSString*)eventName
withAction:(void (^ _Nullable)(void))action;
- (SFAnalyticsActivityTracker* _Nullable)startLogSystemMetricsForActivityNamed:(NSString *)eventName;
@end
@interface SFAnalytics : NSObject <SFAnalyticsProtocol>
+ (instancetype _Nullable)logger;
+ (NSInteger)fuzzyDaysSinceDate:(NSDate*)date;
+ (void)addOSVersionToEvent:(NSMutableDictionary*)event;
+ (NSString *)defaultAnalyticsDatabasePath:(NSString *)basename;
+ (NSString *)defaultProtectedAnalyticsDatabasePath:(NSString *)basename uuid:(NSUUID * __nullable)userUuid;
+ (NSString *)defaultProtectedAnalyticsDatabasePath:(NSString *)basename;
- (void)dailyCoreAnalyticsMetrics:(NSString *)eventName;
- (void)logSuccessForEventNamed:(NSString*)eventName;
- (void)logSuccessForEventNamed:(NSString*)eventName timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (void)logHardFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary* _Nullable)attributes;
- (void)logHardFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary* _Nullable)attributes timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (void)logSoftFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary* _Nullable)attributes;
- (void)logSoftFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary* _Nullable)attributes timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (void)noteEventNamed:(NSString*)eventName;
- (void)noteEventNamed:(NSString*)eventName timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError
timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError
withAttributes:(NSDictionary* _Nullable)attributes;
- (void)logResultForEvent:(NSString*)eventName
hardFailure:(bool)hardFailure
result:(NSError* _Nullable)eventResultError
withAttributes:(NSDictionary* _Nullable)attributes
timestampBucket:(SFAnalyticsTimestampBucket)timestampBucket;
- (SFAnalyticsSampler* _Nullable)addMetricSamplerForName:(NSString*)samplerName
withTimeInterval:(NSTimeInterval)timeInterval
block:(NSNumber* (^)(void))block;
- (SFAnalyticsSampler* _Nullable)existingMetricSamplerForName:(NSString*)samplerName;
- (void)removeMetricSamplerForName:(NSString*)samplerName;
- (SFAnalyticsMultiSampler* _Nullable)AddMultiSamplerForName:(NSString*)samplerName
withTimeInterval:(NSTimeInterval)timeInterval
block:(NSDictionary<NSString*, NSNumber*>* (^)(void))block;
- (SFAnalyticsMultiSampler*)existingMultiSamplerForName:(NSString*)samplerName;
- (void)removeMultiSamplerForName:(NSString*)samplerName;
- (SFAnalyticsActivityTracker* _Nullable)logSystemMetricsForActivityNamed:(NSString*)eventName
withAction:(void (^ _Nullable)(void))action;
- (SFAnalyticsActivityTracker* _Nullable)startLogSystemMetricsForActivityNamed:(NSString *)eventName;
- (void)logMetric:(NSNumber*)metric withName:(NSString*)metricName;
@property (readonly, class, nullable) NSString* databasePath;
- (void)setDateProperty:(NSDate* _Nullable)date forKey:(NSString*)key;
- (NSDate* _Nullable)datePropertyForKey:(NSString*)key;
- (void)incrementIntegerPropertyForKey:(NSString*)key;
- (void)setNumberProperty:(NSNumber* _Nullable)number forKey:(NSString*)key;
- (NSNumber * _Nullable)numberPropertyForKey:(NSString*)key;
- (void)removeState;
@end
NS_ASSUME_NONNULL_END
#endif
#endif