#if __OBJC2__
#ifndef SFAnalytics_h
#define SFAnalytics_h
#import <Foundation/Foundation.h>
#import "SFAnalyticsSampler.h"
#import "SFAnalyticsMultiSampler.h"
#import "SFAnalyticsActivityTracker.h"
extern const NSTimeInterval SFAnalyticsSamplerIntervalOncePerReport;
@interface SFAnalytics : NSObject
+ (instancetype)logger;
+ (NSInteger)fuzzyDaysSinceDate:(NSDate*)date;
+ (void)addOSVersionToEvent:(NSMutableDictionary*)event;
+ (NSString *)defaultAnalyticsDatabasePath:(NSString *)basename;
- (void)logSuccessForEventNamed:(NSString*)eventName;
- (void)logHardFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary*)attributes;
- (void)logSoftFailureForEventNamed:(NSString*)eventName withAttributes:(NSDictionary*)attributes;
- (void)noteEventNamed:(NSString*)eventName;
- (void)logResultForEvent:(NSString*)eventName hardFailure:(bool)hardFailure result:(NSError*)eventResultError;
- (void)logResultForEvent:(NSString*)eventName hardFailure:(bool)hardFailure result:(NSError*)eventResultError withAttributes:(NSDictionary*)attributes;
- (SFAnalyticsSampler*)addMetricSamplerForName:(NSString*)samplerName withTimeInterval:(NSTimeInterval)timeInterval block:(NSNumber* (^)(void))block;
- (SFAnalyticsSampler*)existingMetricSamplerForName:(NSString*)samplerName;
- (void)removeMetricSamplerForName:(NSString*)samplerName;
- (SFAnalyticsMultiSampler*)AddMultiSamplerForName:(NSString*)samplerName withTimeInterval:(NSTimeInterval)timeInterval block:(NSDictionary<NSString*, NSNumber*>* (^)(void))block;
- (SFAnalyticsMultiSampler*)existingMultiSamplerForName:(NSString*)samplerName;
- (void)removeMultiSamplerForName:(NSString*)samplerName;
- (SFAnalyticsActivityTracker*)logSystemMetricsForActivityNamed:(NSString*)eventName withAction:(void (^)(void))action;
- (void)logMetric:(NSNumber*)metric withName:(NSString*)metricName;
@property (readonly, class) NSString* databasePath;
- (void)setDateProperty:(NSDate*)date forKey:(NSString*)key;
- (NSDate*)datePropertyForKey:(NSString*)key;
- (void)removeState;
@end
#endif
#endif