#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
#ifndef KOCHAVATRACKER_SWIFT_H
#define KOCHAVATRACKER_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
#  define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
#  define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
#  define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
#  define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction 
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT 
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
#  define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL 
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import AppTrackingTransparency;
@import Foundation;
@import JavaScriptCore;
@import KochavaCore;
@import ObjectiveC;
@import StoreKit;
#endif

#import <KochavaTracker/KochavaTracker.h>

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="KochavaTracker",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)
@class KVAAdNetworkConversion;

/// A feature which interfaces with Apple’s SKAdNetwork attribution system.
SWIFT_CLASS_NAMED("KVAAdNetwork")
@interface KVAAdNetwork : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// The current conversion information.
@property (nonatomic, strong) KVAAdNetworkConversion * _Nonnull conversion;
/// A closure which is called when the SKAdNetwork registerAppForAdNetworkAttribution API has been called.
/// Your code should assume that if some action needs to be performed on the main queue that it should first dispatch asynchronously to it.
@property (nonatomic, copy) void (^ _Nullable closure_didRegisterAppForAttribution)(KVAAdNetwork * _Nonnull);
/// A closure which is called when the SKAdNetwork registerAppForAdNetworkAttribution API has been called.
/// Your code should assume that if some action needs to be performed on the main queue that it should first dispatch asynchronously to it.
@property (nonatomic, copy) KVAAdNetworkDidRegisterAppForAttributionBlock _Nullable didRegisterAppForAttributionBlock SWIFT_DEPRECATED_MSG("", "closure_didRegisterAppForAttribution");
@end

@class KVAAdNetworkConversionResult;

/// A feature which determines adnetwork conversion(s).
SWIFT_CLASS_NAMED("KVAAdNetworkConversion")
@interface KVAAdNetworkConversion : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A closure which is called when the SKAdNetwork updatePostbackConversionValue API has been called.
/// Your code should assume that if some action needs to be performed on the main queue that it should first dispatch asynchronously to it.
@property (nonatomic, copy) void (^ _Nullable closure_didUpdatePostbackValue)(KVAAdNetworkConversion * _Nonnull, KVAAdNetworkConversionResult * _Nonnull);
/// A closure which is called when the SKAdNetwork updatePostbackConversionValue API has been called.
/// Your code should assume that if some action needs to be performed on the main queue that it should first dispatch asynchronously to it.
@property (nonatomic, copy) KVAAdNetworkConversionDidUpdateValueBlock _Nullable didUpdateValueBlock SWIFT_DEPRECATED_MSG("", "closure_didUpdatePostbackValue");
/// The current conversion result.
/// This object will mutate when the current result is updated.  If you want a immutable picture then you should take a copy.
@property (nonatomic, strong) KVAAdNetworkConversionResult * _Nonnull result;
@end


/// A class which defines an adnetwork conversion event.
SWIFT_CLASS_NAMED("KVAAdNetworkConversionEvent")
@interface KVAAdNetworkConversionEvent : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A class which defines the parameters for the adnetwork conversion lock window.
SWIFT_CLASS_NAMED("KVAAdNetworkConversionLockWindow")
@interface KVAAdNetworkConversionLockWindow : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class KVAContext;
@class NSString;
@class NSNumber;

/// The adnetwork conversion result.
SWIFT_CLASS_NAMED("KVAAdNetworkConversionResult")
@interface KVAAdNetworkConversionResult : NSObject <NSCopying>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
+ (nullable instancetype)kva_from:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (id _Nullable)kva_asForContext:(KVAContext * _Nullable)context SWIFT_WARN_UNUSED_RESULT;
/// Return the conversion value integer which is used with the SKAdNetwork updatePostbackConversionValue API.
/// Apple currently restricts this value to 6-bits.  This is a combination (OR) of the translated value (translatedValueIntNumber) with any extension interval value (extensionIntervalTranslatedValueInt.integerValue).
- (NSInteger)valueInt SWIFT_WARN_UNUSED_RESULT;
/// The coarse value.
@property (nonatomic, readonly) SKAdNetworkCoarseConversionValue _Nullable coarseValue SWIFT_AVAILABILITY(ios_app_extension,introduced=16.1) SWIFT_AVAILABILITY(ios,introduced=16.1);
@property (nonatomic, readonly) NSError * _Nullable error;
/// A string which represents the model used for the conversion.
@property (nonatomic, readonly, copy) NSString * _Nullable modelString;
@property (nonatomic, readonly, strong) NSNumber * _Nullable translatedValueIntNumber;
/// A number representing the raw value.
/// This is a raw value which has not had any translations applied yet.  This also does not include any extension interval value (extensionIntervalTranslatedValueInt).
@property (nonatomic, strong) NSNumber * _Nullable rawValueNumber;
@end


/// A feature which provides measurement for App Clips.
SWIFT_CLASS_NAMED("KVAAppClips")
@interface KVAAppClips : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A feature which may be used to limit advertising tracking from the level of the application (or host).
SWIFT_CLASS_NAMED("KVAAppLimitAdTracking")
@interface KVAAppLimitAdTracking : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A boolean which indicates if you want to limit ad tracking at the application level.
/// This feature is related to the Limit Ad Tracking feature which is typically found on an Apple device under Settings, Privacy, Advertising.  In the same way that you can limit ad tracking through that setting, this feature provides a second and independent means for the host app to limit ad tracking by asking the user directly.  A value of true from either this feature or Apple’s will result in the limiting of ad tracking.
@property (nonatomic) BOOL boolean;
@end

@class KVANetworking;

/// A feature which interfaces with Apple’s App Tracking Transparency system.
SWIFT_CLASS_NAMED("KVAAppTrackingTransparency")
@interface KVAAppTrackingTransparency : NSObject <NSCopying, KVANetworkingProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Notify that a request for tracking authorization did complete.
/// \param status The provided authorization status.
///
- (void)authorizationDidCompleteWithStatus:(ATTrackingManagerAuthorizationStatus)status SWIFT_AVAILABILITY(ios_app_extension,introduced=14.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(maccatalyst,introduced=14.0) SWIFT_AVAILABILITY(ios,introduced=14.0);
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
/// A boolean which indicates if the instance should automatically request tracking authorization.
/// Default true.  Subject to server-based override.  Also subject to enabledBool.  See enabledBool.
@property (nonatomic) BOOL autoRequestTrackingAuthorizationBool;
/// A time interval to wait for the request for tracking authorization before proceeding to send the install.
/// Default 30.0.  Subject to server-based override.  This provides time to wait to obtain the authorization necessary to collect the IDFA.
@property (nonatomic) NSTimeInterval authorizationStatusWaitTimeInterval;
/// A boolean indicating if this feature is enabled.
/// Default: false.
@property (nonatomic) BOOL enabledBool;
/// The authorization status expressed as an NSString.
/// This is optional and will be nil until a status is known.  For this reason this can be checked as a means of determining if a status has been determined.  Current possible values:  “authorized”, “denied”, “notDetermined”, “restricted”, “unknown”.
@property (nonatomic, readonly, copy) NSString * _Nullable authorizationStatusString;
@end


/// A feature which interfaces with Apple Search Ads.
SWIFT_CLASS_NAMED("KVAAppleSearchAds")
@interface KVAAppleSearchAds : NSObject <KVANetworkingProvider>
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A feature which provides for attribution through Apple’s Apple Search Ads method 3.
SWIFT_CLASS_NAMED("KVAAppleSearchAdsMethod3")
@interface KVAAppleSearchAdsMethod3 : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Apple’s attribution as provided by Apple Search Ads method 3.
SWIFT_CLASS_NAMED("KVAAppleSearchAdsMethod3Attribution")
@interface KVAAppleSearchAdsMethod3Attribution : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class KVAAttributionResult;

/// A feature which provides attribution information related to the install.
SWIFT_CLASS_NAMED("KVAAttribution")
@interface KVAAttribution : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Get the attribution result with a completion handler.
/// \param closure_didComplete A completion handler to call once the result has been retrieved.
///
- (void)retrieveResultWithCompletionHandler:(void (^ _Nonnull)(KVAAttributionResult * _Nonnull))closure_didComplete;
/// The current attribution result.
/// When accessed this property will contain whatever value may have been previously collected.  For a current value which may initiate new asynchronous collection see func <code>retrieveResult(closure_didComplete:)</code>
@property (nonatomic, readonly, strong) KVAAttributionResult * _Nonnull result;
/// A closure which is called when attribution is retrieved.
@property (nonatomic, copy) void (^ _Nullable closure_didRetrieveResult)(KVAAttribution * _Nonnull, KVAAttributionResult * _Nonnull);
/// A boolean indicating if an attribution result should be retrieved.
/// This boolean does not need to be set if you are using func <code>retrieveResult(closure_didComplete:)</code> to retrieve the attribution result.  It needs to be set if you intend to set var <code>closure_didRetrieveResult-swift.property</code> and then wait for it to be called.
@property (nonatomic) BOOL retrieveResultBool;
@end


/// The attribution result.
SWIFT_CLASS_NAMED("KVAAttributionResult")
@interface KVAAttributionResult : NSObject
- (id _Nullable)kva_asForContext:(KVAContext * _Nullable)context SWIFT_WARN_UNUSED_RESULT;
/// A boolean indicating if the result attributed the install.
@property (nonatomic, readonly) BOOL attributedBool;
/// A boolean indicating if the current install is the first install.
@property (nonatomic, readonly) BOOL firstInstallBool;
/// A dictionary containing the raw result information.
@property (nonatomic, readonly, copy) NSDictionary * _Nullable rawDictionary;
/// A boolean indicating if the result was successfully retrieved.
@property (nonatomic, readonly) BOOL retrievedBool;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol KVACustomIdentifierRegistrarProvider;

/// A custom identifier.
SWIFT_CLASS_NAMED("KVACustomIdentifier")
@interface KVACustomIdentifier : NSObject <KVANetworkingProvider>
/// Create a custom identifier and then register it.
/// \param name The name of the custom identifier.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier;
/// Create a custom identifier and then register it.
/// \param name The name of the custom identifier.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
/// \param registrarArray An array of KVACustomIdentifierRegistrarProvider to which to register the custom identifier.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier registrarArray:(NSArray<id <KVACustomIdentifierRegistrarProvider>> * _Nullable)registrarArray;
/// A unique name for the custom identifier.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The identifier.
@property (nonatomic, readonly, copy) NSString * _Nullable identifier;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker28KVACustomIdentifierRegistrar_")
@protocol KVACustomIdentifierRegistrar
- (void)register:(KVACustomIdentifier * _Nonnull)customIdentifier;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker36KVACustomIdentifierRegistrarProvider_")
@protocol KVACustomIdentifierRegistrarProvider
/// A property which conforms to protocol KVACustomIdentifierRegistrar.
@property (nonatomic, readonly, strong) id <KVACustomIdentifierRegistrar> _Nonnull customIdentifierRegistrar;
@end


/// A feature which is responsible for custom identifiers.
SWIFT_CLASS_NAMED("KVACustomIdentifiers")
@interface KVACustomIdentifiers : NSObject <NSCopying, KVANetworkingProvider, KVACustomIdentifierRegistrar, KVACustomIdentifierRegistrarProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Register a custom identifier.
/// See class <code>KVACustomIdentifier</code>.
/// In order to send a custom identifier it must be allowed on your account.
/// \param customIdentifier The custom identifier.
///
- (void)register:(KVACustomIdentifier * _Nonnull)customIdentifier;
/// Register a custom identifier.
/// In order to send a custom identifier it must be allowed on your account.
/// \param name The name of the identifier.
///
/// \param identifier The identifier.
///
- (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier SWIFT_DEPRECATED_MSG("Please use KVACustomIdentifier.register(name:identifier:) instead.  In Objective-C use -[KVACustomIdentifier registerWithName:identifier:].");
/// Register a custom identifier.
/// In order to send a custom identifier it must be allowed on your account.
/// \param nameString The name of the identifier.
///
/// \param identifierString The identifier.
///
- (void)registerWithNameString:(NSString * _Nonnull)nameString identifierString:(NSString * _Nonnull)identifierString SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Please use KVACustomIdentifier.register(name:identifier:) instead.  In Objective-C use -[KVACustomIdentifier registerWithName:identifier:].");
@property (nonatomic, readonly, strong) id <KVACustomIdentifierRegistrar> _Nonnull customIdentifierRegistrar;
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
@end

@protocol KVACustomValueRegistrarProvider;

/// A custom value.
SWIFT_CLASS_NAMED("KVACustomValue")
@interface KVACustomValue : NSObject <KVANetworkingProvider>
/// Create a custom value and then register it.
/// \param name The name of the custom value.
///
/// \param value The value.  Must be a String or NSNumber (which includes NSDecimalNumber, Int, Double, and Bool).  A value of nil will remove any existing value under the specified name.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value;
/// Create a custom value and then register it.
/// \param name The name of the custom value.
///
/// \param value The value.  Must be a String or NSNumber (which includes NSDecimalNumber, Int, Double, and Bool).  A value of nil will remove any existing value under the specified name.
///
/// \param registrarArray An array of KVACustomValueRegistrarProvider to which to register the custom value.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value registrarArray:(NSArray<id <KVACustomValueRegistrarProvider>> * _Nullable)registrarArray;
/// A unique name for the custom value.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The value.
@property (nonatomic, readonly) id _Nullable value;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker23KVACustomValueRegistrar_")
@protocol KVACustomValueRegistrar
- (void)register:(KVACustomValue * _Nonnull)customValue;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker31KVACustomValueRegistrarProvider_")
@protocol KVACustomValueRegistrarProvider
/// A property which conforms to protocol KVACustomValueRegistrar.
@property (nonatomic, readonly, strong) id <KVACustomValueRegistrar> _Nonnull customValueRegistrar;
@end


/// A feature which is responsible for custom values.
SWIFT_CLASS_NAMED("KVACustomValues")
@interface KVACustomValues : NSObject <NSCopying, KVANetworkingProvider, KVACustomValueRegistrar, KVACustomValueRegistrarProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Register a custom value.
/// See class <code>KVACustomValue</code>.
/// \param customValue The custom value.
///
- (void)register:(KVACustomValue * _Nonnull)customValue;
@property (nonatomic, readonly, strong) id <KVACustomValueRegistrar> _Nonnull customValueRegistrar;
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
@end

@class NSURL;
@protocol KVADeeplinksProcessorProvider;

/// A deeplink.
SWIFT_CLASS_NAMED("KVADeeplink")
@interface KVADeeplink : NSObject <KVANetworkingProvider>
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param closure_didComplete A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param completionHandler A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url completionHandler:(void (^ _Nullable)(KVADeeplink * _Nonnull))completionHandler SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift static func process(url:closure_didComplete:) instead.  If in Objective-C then use method +processWithURL:closure_didComplete:", "processWithURL:closure_didComplete:");
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param timeoutTimeInterval A time interval after which to timeout and return whatever result we have.
///
/// \param closure_didComplete A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param timeoutTimeInterval A time interval after which to timeout and return whatever result we have.
///
/// \param completionHandler A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval completionHandler:(void (^ _Nullable)(KVADeeplink * _Nonnull))completionHandler SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift static func process(url:timeoutTimeInterval:closure_didComplete:) instead.  If in Objective-C then use method +processWithURL:timeoutTimeInterval:closure_didComplete:", "processWithURL:timeoutTimeInterval:closure_didComplete:");
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param processor An array of KVADeeplinksProcessorProvider to which to add the token.
///
/// \param closure_didComplete A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url processor:(id <KVADeeplinksProcessorProvider> _Nullable)processor closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param processor An array of KVADeeplinksProcessorProvider to which to add the token.
///
/// \param completionHandler A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url processor:(id <KVADeeplinksProcessorProvider> _Nullable)processor completionHandler:(void (^ _Nullable)(KVADeeplink * _Nonnull))completionHandler SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift static func process(url:processor:closure_didComplete:) instead.  If in Objective-C then use method +processWithURL:processor:closure_didComplete:", "processWithURL:processor:closure_didComplete:");
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param timeoutTimeInterval A time interval after which to timeout and return whatever result we have.
///
/// \param processor An array of KVADeeplinksProcessorProvider to which to add the token.
///
/// \param closure_didComplete A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval processor:(id <KVADeeplinksProcessorProvider> _Nullable)processor closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
/// Create a deeplink and then process it.
/// \param url The deep link url as provided.
///
/// \param timeoutTimeInterval A time interval after which to timeout and return whatever result we have.
///
/// \param processor An array of KVADeeplinksProcessorProvider to which to add the token.
///
/// \param completionHandler A closure to be called when processing is complete.
///
+ (void)processWithURL:(NSURL * _Nullable)url timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval processor:(id <KVADeeplinksProcessorProvider> _Nullable)processor completionHandler:(void (^ _Nullable)(KVADeeplink * _Nonnull))completionHandler SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift static func process(url:timeoutTimeInterval:processor:closure_didComplete:) instead.  If in Objective-C then use method +processWithURL:timeoutTimeInterval:processor:closure_didComplete:", "processWithURL:timeoutTimeInterval:processor:closure_didComplete:");
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nullable)kva_asForContext:(KVAContext * _Nullable)context SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// The deeplink url as provided by the operating system.
@property (nonatomic, copy) NSString * _Nullable urlString;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
/// The destination for the deeplink.
@property (nonatomic, copy) NSString * _Nullable destinationString;
/// A dictionary containing raw information about the deeplink.
@property (nonatomic, copy) NSDictionary * _Nullable rawDictionary;
@end

@protocol KVADeeplinksDeferredPrefetchAugmenter;

SWIFT_PROTOCOL("_TtP14KochavaTracker45KVADeeplinksDeferredPrefetchAugmenterProvider_")
@protocol KVADeeplinksDeferredPrefetchAugmenterProvider
/// A property which conforms to protocol KVADeeplinksDeferredPrefetchAugmenter.
@property (nonatomic, readonly, strong) id <KVADeeplinksDeferredPrefetchAugmenter> _Nonnull deeplinksDeferredPrefetchAugmenter;
@end

@class KVADeeplinksDeferredPrefetch;

SWIFT_PROTOCOL("_TtP14KochavaTracker37KVADeeplinksDeferredPrefetchAugmenter_")
@protocol KVADeeplinksDeferredPrefetchAugmenter
- (void)augment:(KVADeeplinksDeferredPrefetch * _Nonnull)deferredPrefetch;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker21KVADeeplinksProcessor_")
@protocol KVADeeplinksProcessor
/// Process a deeplink.
/// \param deeplink An instance of KVADeeplink.
///
/// \param timeoutTimeInterval A timeout time interval.
///
/// \param closure_didComplete A completion handler to call when processing is complete.
///
- (void)processDeeplink:(KVADeeplink * _Nonnull)deeplink timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
@end


/// A feature which measures deeplink activity.
SWIFT_CLASS_NAMED("KVADeeplinks")
@interface KVADeeplinks : NSObject <NSCopying, KVANetworkingProvider, KVADeeplinksDeferredPrefetchAugmenter, KVADeeplinksDeferredPrefetchAugmenterProvider, KVADeeplinksProcessor>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Augment deferred prefetch.
/// \param deferredPrefetch The deferred prefetch.
///
- (void)augment:(KVADeeplinksDeferredPrefetch * _Nonnull)deferredPrefetch;
/// Augment deferred prefetch.
/// \param name The name for the identifier.
///
/// \param identifier The identifier.
///
- (void)augmentDeferredPrefetchWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier SWIFT_DEPRECATED_MSG("Please use KVADeeplinks.DeferredPrefetch.augment(name:identifier:) instead.  In Objective-C use -[KVADeeplinksDeferredPrefetch augmentWithName:identifier:].");
@property (nonatomic, readonly, strong) id <KVADeeplinksDeferredPrefetchAugmenter> _Nonnull deeplinksDeferredPrefetchAugmenter;
/// Process a deeplink.
/// \param deeplink An instance of KVADeeplink.
///
/// \param timeoutTimeInterval A timeout time interval.
///
/// \param closure_didComplete A completion handler to call when processing is complete.
///
- (void)processDeeplink:(KVADeeplink * _Nonnull)deeplink timeoutTimeInterval:(NSTimeInterval)timeoutTimeInterval closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
@end


@interface KVADeeplinks (SWIFT_EXTENSION(KochavaTracker))
@end


/// A deferred prefetch for deeplinks.
SWIFT_CLASS_NAMED("DeferredPrefetch")
@interface KVADeeplinksDeferredPrefetch : NSObject <KVANetworkingProvider>
/// Create a deferred prefetch and then augment the deeplink process with it.
/// \param name The name of the deferred prefetch.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
+ (void)augmentWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier;
/// Create a deferred prefetch and then augment it.
/// \param name The name of the deferred prefetch.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
/// \param augmenterArray An array of KVADeeplinksDeferredPrefetchAugmenterProvider to which to augment the deferred prefetch.
///
+ (void)augmentWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier augmenterArray:(NSArray<id <KVADeeplinksDeferredPrefetchAugmenterProvider>> * _Nullable)augmenterArray;
/// A unique name for the deferred prefetch augmentation.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The identifier.
@property (nonatomic, readonly, copy) NSString * _Nullable identifier;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end





SWIFT_PROTOCOL("_TtP14KochavaTracker29KVADeeplinksProcessorProvider_")
@protocol KVADeeplinksProcessorProvider
/// A property which conforms to protocol KVADeeplinksProcessor.
@property (nonatomic, readonly, strong) id <KVADeeplinksProcessor> _Nullable deeplinksProcessor;
@end


/// A feature which is responsible for the identification of a device.
SWIFT_CLASS_NAMED("KVADeviceId")
@interface KVADeviceId : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A property containing the unique device ID that was generated when the tracker was first initialized on the current install.
@property (nonatomic, readonly, copy) NSString * _Nullable string;
@end

@class KVAEventType;
@protocol KVAEventSenderProvider;
@class KVAConsent;
@class NSDate;
@class NSDecimalNumber;

/// Events provide a means of defining a post-install event, providing standardized parameters.
SWIFT_CLASS_NAMED("KVAEvent")
@interface KVAEvent : NSObject <KVANetworkingProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Create an event.
/// The designated initializer.
/// \param type An event type.
///
- (nonnull instancetype)initWithType:(KVAEventType * _Nonnull)type OBJC_DESIGNATED_INITIALIZER;
/// Create an event with a type— using modern Objective-C syntax.
+ (nonnull instancetype)eventWithType:(KVAEventType * _Nonnull)type SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(type:) instead.  If in Objective-C then use [[KVAEvent alloc] initWithType:]", "init(type:)");
/// Create an event with a typeNameString.
/// For TVML.  This constructor was created because there didn’t appear to be a way to export an Objective-C enumeration using the JSExport system Apple provides.
- (nonnull instancetype)initWithTypeNameString:(NSString * _Nonnull)typeNameString;
/// Create an event with a typeNameString— using modern Objective-C syntax.
/// For TVML.  This constructor was created because there didn’t appear to be a way to export an Objective-C enumeration using the JSExport system Apple provides.
+ (nonnull instancetype)eventWithTypeNameString:(NSString * _Nonnull)typeNameString SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(typeNameString:) instead.  If in Objective-C then use [[KVAEvent alloc] initWithTypeNameString:]", "init(typeNameString:)");
/// Return a description of the instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Send the event using the default KVAEventSenderProvider.
/// The default is the shared instance of class <code>KVATracker</code>.
- (void)send;
/// Send the event with a specified array of KVAEventSenderProvider(s).
- (void)sendWithSenderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderProviderArray;
/// Return a string representation of the name of the event.
/// a.k.a.  “event_name”
- (NSString * _Nonnull)eventNameString SWIFT_WARN_UNUSED_RESULT;
/// Return any valueObject for a given propertyIdentifier.
/// \param propertyIdentifier A string which generally would be equivalent to the name of the key of the property as it would appear in the event payload.
///
- (id _Nullable)valueObjectForPropertyIdentifier:(NSString * _Nullable)propertyIdentifier SWIFT_WARN_UNUSED_RESULT;
/// A type for the event
/// Although these types are standardized, custom events are designated using type .custom.
@property (nonatomic, readonly, strong) KVAEventType * _Nonnull eventType;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
/// A boolean indicating if an asynchronous dispatch should occur when the event is sent.
/// Default true.  The default behavior dispatches the sending of an event to the default queue that should be used when sending the event (i.e. KVADispatchQueue.globalSerial).  If it is known that you are already on the appropriate queue, you may set this to true to avoid an additional dispatch.  This can have the effect of fine tuning behavior to ensure that related operations essentially occur atomically.  It is important to not use this feature if you are not on the appropriate queue already.
/// note:
/// This API is public in order to make it available for the internal use of modules within the Kochava SDK.  It should not be used unless otherwise directed by Kochava.
@property (nonatomic) BOOL sendAsyncBool;
/// A boolean indicating if a LogMessage should be printed when the event is sent.
/// Default true.  The default behavior prints a log message when the event is sent.  The corresponding log message is presented as though the event was sent by a call from the host.  This boolean can be set to false so that the event will be sent silently, and not appear as though it was sent by a call the host.
/// note:
/// This API is public in order to make it available for the internal use of modules within the Kochava SDK.  It should not be used unless otherwise directed by Kochava.
@property (nonatomic) BOOL sendLogMessagePrintBool;
/// A boolean which when set will cause the event to be serviced locally when sent.
/// When serviced locally the response for the request is provided locally and the request is post the event to the server is never made.  In every other respect the effects are the same.  AdNetwork conversion information is still calculated.
@property (nonatomic) BOOL serviceLocallyBool;
/// A property containing an action string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable actionString;
/// A property containing an ad campaign identifier string.
/// This is expected to contain a string corresponding to an ad campaign identifier.
@property (nonatomic, copy) NSString * _Nullable adCampaignIdString;
/// A property containing an ad campaign name string.
/// This is expected to contain a string corresponding to an ad campaign name.
@property (nonatomic, copy) NSString * _Nullable adCampaignNameString;
/// A property containing an ad device type string.
/// This is expected to contain a string corresponding to a device type.
@property (nonatomic, copy) NSString * _Nullable adDeviceTypeString;
/// A property containing an ad group identifier string.
/// This is expected to contain a string corresponding to an ad group identifier.
@property (nonatomic, copy) NSString * _Nullable adGroupIdString;
/// A property containing an ad group name string.
/// This is expected to contain a string corresponding to an ad group name.
@property (nonatomic, copy) NSString * _Nullable adGroupNameString;
/// A property containing an ad mediation network name string.
/// This is expected to contain a standardized string corresponding to an advertising network.  It is the name of the network that was used during mediation.
@property (nonatomic, copy) NSString * _Nullable adMediationNameString;
/// A property containing an ad network name string.
/// This is expected to contain a standardized string corresponding to an advertising network.
@property (nonatomic, copy) NSString * _Nullable adNetworkNameString;
/// A property containing an ad placement string.
/// This is expected to contain a string corresponding to an ad placement, ad unit, etc.
@property (nonatomic, copy) NSString * _Nullable adPlacementString;
/// A property containing an ad size string.
/// This is expected to contain a string corresponding to an ad size.
@property (nonatomic, copy) NSString * _Nullable adSizeString;
/// A property containing an ad type string.
/// This is expected to contain a string corresponding to an ad type.
@property (nonatomic, copy) NSString * _Nullable adTypeString;
/// A boolean indicating that this event originated from an Apple Watch.
@property (nonatomic) BOOL appleWatchBool;
/// A string containing a unique identifier associated with the Apple Watch from which this event originated.
/// Optional.  You may set this property in addition to appleWatchBool if you have a unique identifier associated with the watch.
@property (nonatomic, copy) NSString * _Nullable appleWatchIdString;
/// A property containing an App Store receipt which has been converted into a base64 encoded string.
/// The format of the information is expected to be that which is provided by the main bundle’s appStoreReceiptURL method, the data of which being loaded and base-64-string-encoded.
@property (nonatomic, copy) NSString * _Nullable appStoreReceiptBase64EncodedString;
/// A property containing a boolean wrapped in an NSNumber which indicates that something is background.
/// This is expected to contain a boolean which indicates if something is background, or occurred while in the background.  This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable backgroundBoolNumber;
/// A property indicating whether a checkout took place as a guest.
/// This is generally taken to be a boolean, but it is passed as a string so that you can provide more than two states.  Suggested values are “true” and “false”, but can also be values such as “yes”, “no”, or “partial”.
@property (nonatomic, copy) NSString * _Nullable checkoutAsGuestString;
/// A property containing a boolean wrapped in an NSNumber which indicates that something is completed.
/// This is expected to contain a boolean which indicates if something is completed.  This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable completedBoolNumber;
/// An instance of KVAConsent.
/// note:
/// This is an internal managed parameter which is stamped automatically when the event is sent.
@property (nonatomic, strong) KVAConsent * _Nullable consent;
/// A property containing a content identifier string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable contentIdString;
/// A property containing a content type string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable contentTypeString;
/// A property containing a currency type string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable currencyString;
/// A property containing a custom event name string.
/// Standardized event names are automatically determined from the event type enum.  If an appropriate event type is not present, you may set the event type to KVAEventType.custom and the customEventName property to your custom event name string.  Event names do not need to be pre-registered.  They can be any alphanumeric string value which does not begin with an underscore.  NOTE: Prepending an event name with an underscore is a convention reserved for Kochava system events. (i.e. _INSTALL)
@property (nonatomic, copy) NSString * _Nullable customEventName;
@property (nonatomic, copy) NSString * _Nullable customEventNameString SWIFT_DEPRECATED_MSG("", "customEventName");
/// A property containing a date.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSDate * _Nullable date;
/// A property containing a date string.  “dateString” can be used as an alternate to “date” when a specific date format is desired.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable dateString;
/// A property containing a description.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable descriptionString;
/// A property containing a destination.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable destinationString;
/// A property that contains a duration.  It is a time interval that is wrapped in an NSNumber.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable durationTimeIntervalNumber;
/// A property that contains an end date.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSDate * _Nullable endDate;
/// A property that contains an end date.  “endDateString” can be used as an alternate to “endDate” when a specific date format is desired.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable endDateString;
/// A property containing an informational dictionary of key/value pairs.
/// A information dictionary.  The keys and values can be any alphanumeric string value.  This field has an entirely generic quality, in that it can contain whatever you consider to be fitting value.  The dictionary should not contain sub-dictionaries.  The maximum supported depth is 10, after which containers and elements will be redacted.  Instances of NSNull will also be redacted, and custom classes are not supported.
@property (nonatomic, copy) NSDictionary * _Nullable infoDictionary;
/// A property containing an informational string.
/// A informational string.  This can be any alphanumeric string value.  This field has an entirely generic quality, in that it can contain whatever you consider to be fitting value.
/// If the string passed is all numeric (and may include a decimal point), Kochava will automatically sum the amounts passed for the same nameString.  For example, if you sent the purchase amount of in-app purchases in infoString and named nameString “IAP – Purchase Price”, Kochava would add up all the purchase amounts for you and present them as a total for “IAP – Purchase Price”.  Regardless of what is passed in infoString, Kochava’s user dashboard will let you access all the data passed in infoString for any nameString, and present a count of all times an event was sent passing any given nameString.
/// NOTE: If you pass a string of JSON represented data, only the root level (no nested chunks) is stored.  Also, a limit of 75 characters is applied for a non-JSON-decodable string passed as an event infoString.
@property (nonatomic, copy) NSString * _Nullable infoString;
/// A property that contains an indication of where an item as added from.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable itemAddedFromString;
/// A property that contains a level.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable levelString;
/// A property that contains a maximum rating value.  It is a double that is wrapped in an NSNumber.  This property is used in conjunction with ratingValueDoubleNumber.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable maxRatingValueDoubleNumber;
/// A property that contains a name.  It can be a human name or the name of any other item type.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  It can be a person’s name or the name of any other object.
@property (nonatomic, copy) NSString * _Nullable nameString;
/// A property that contains an order id.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable orderIdString;
/// A property that contains an origin.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable originString;
/// A property that contains a payload in the form of a dictionary.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  The maximum supported depth is 9, after which containers and elements will be redacted.  Instances of NSNull will also be redacted, and custom classes are not supported.
@property (nonatomic, copy) NSDictionary * _Nullable payloadDictionary;
/// A property that contains a price.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  Because it uses an NSDecimalNumber, it is better suited for preserving decimal precision than priceDoubleNumber.  priceDecimalNumber and priceDoubleNumber share the same key when sent to the server.  If both are set, the value within priceDecimalNumber will win.
@property (nonatomic, strong) NSDecimalNumber * _Nullable priceDecimalNumber;
/// A property that contains a price.  It is a double that is wrapped in an NSNumber.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  In order to better preserve decimal precision, see priceDecimalNumber.  priceDecimalNumber and priceDoubleNumber share the same key when sent to the server.  If both are set, the value within priceDecimalNumber will win.
@property (nonatomic, strong) NSNumber * _Nullable priceDoubleNumber;
/// A property that contains a quantity.  It is a double that is wrapped in an NSNumber.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable quantityDoubleNumber;
/// A property that contains a rating value.  It is a double that is wrapped in an NSNumber.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, strong) NSNumber * _Nullable ratingValueDoubleNumber;
/// A property that contains a receipt id.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable receiptIdString;
/// A property that contains where something was referred from.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable referralFromString;
/// A property that contains a registration method.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable registrationMethodString;
/// A property that contains results.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable resultsString;
/// A property that contains a score.  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable scoreString;
/// A property that contains a search term (or terms).  It is a string that can contain any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable searchTermString;
/// A property that contains a source string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable sourceString;
/// A property that contains a spatial coordinate’s x value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  One such application is to record the occurrence of events in 3D Gamespace.
@property (nonatomic, strong) NSNumber * _Nullable spatialXDoubleNumber;
/// A property that contains a spatial coordinate’s y value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  One such application is to record the occurrence of events in 3D Gamespace.
@property (nonatomic, strong) NSNumber * _Nullable spatialYDoubleNumber;
/// A property that contains a spatial coordinate’s z value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.  One such application is to record the occurrence of events in 3D Gamespace.
@property (nonatomic, strong) NSNumber * _Nullable spatialZDoubleNumber;
/// A property that contains a start date.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSDate * _Nullable startDate;
/// A property that contains a start date.  “startDateString” is a string that can be used as an alternate to “startDate” when a specific display format is desired.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable startDateString;
/// A property that contains a success string.  It is a string that can be any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable successString;
/// A property that contains a user id.  It is a string that can be any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable userIdString;
/// A property that contains a URI (or URL) string.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable uriString;
/// A property that contains a username.  This is intended to be used to store an account-syle username, as opposed to a user’s name (compare “nameString”).  It is a string that can be any alphanumeric value.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable userNameString;
/// A property that contains a validated string.  It is a string that is intended to contain a boolean-like value, such as “true” or “false”.  It can also contain other  custom values such as “partial”.
/// This field has a somewhat generic quality, in that it can contain whatever you consider to be fitting value.
@property (nonatomic, copy) NSString * _Nullable validatedString;
@end


@interface KVAEvent (SWIFT_EXTENSION(KochavaTracker)) <JSExport>
@end


@interface KVAEvent (SWIFT_EXTENSION(KochavaTracker))
@end

@protocol KVAEventDefaultParameterRegistrarProvider;

/// An event default parameter.
SWIFT_CLASS_NAMED("DefaultParameter")
@interface KVAEventDefaultParameter : NSObject <KVANetworkingProvider>
/// Create an event default parameter for a userIdString and then register it.
/// \param name The name of the event default parameter.
///
/// \param userIdString The value.  A value of nil will remove any existing value under the user_id name.
///
+ (void)registerWithUserIdString:(NSString * _Nullable)userIdString;
/// Create an event default parameter for a userIdString and then register it.
/// \param name The name of the event default parameter.
///
/// \param userIdString The value.  A value of nil will remove any existing value under the user_id name.
///
/// \param registrarArray An array of KVAEventDefaultParameterRegistrarProvider to which to register the event default parameter.
///
+ (void)registerWithUserIdString:(NSString * _Nullable)userIdString registrarArray:(NSArray<id <KVAEventDefaultParameterRegistrarProvider>> * _Nullable)registrarArray;
/// Create an event default parameter and then register it.
/// \param name The name of the event default parameter.
///
/// \param value The value.  Must be a String or NSNumber (which includes NSDecimalNumber, Int, Double, and Bool).  A value of nil will remove any existing value under the specified name.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value;
/// Create an event default parameter and then register it.
/// \param name The name of the event default parameter.
///
/// \param value The value.  Must be a String or NSNumber (which includes NSDecimalNumber, Int, Double, and Bool).  A value of nil will remove any existing value under the specified name.
///
/// \param registrarArray An array of KVAEventDefaultParameterRegistrarProvider to which to register the event default parameter.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value registrarArray:(NSArray<id <KVAEventDefaultParameterRegistrarProvider>> * _Nullable)registrarArray;
/// A unique name for the parameter.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface KVAEvent (SWIFT_EXTENSION(KochavaTracker))
/// Create an event which has a custom event name, and then send it.
/// \param eventName A string containing the custom event name.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName;
/// Create an event which has a custom event name, and then send it.
/// \param eventName A string containing the custom event name.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:) instead.", "sendCustomWithEventName:");
/// Create an event which has a custom event name, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray;
/// Create an event which has a custom event name, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:senderArray:) instead.", "sendCustomWithEventName:senderArray:");
/// Create an event which has a custom event name and an optional dictionary containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary;
/// Create an event which has a custom event name and an optional dictionary containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:infoDictionary:) instead.", "sendCustomWithEventName:infoDictionary:");
/// Create an event which has a custom event name and an optional dictionary containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray;
/// Create an event which has a custom event name and an optional dictionary containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:infoDictionary:senderArray:) instead.", "sendCustomWithEventName:infoDictionary:senderArray:");
/// Create an event which has a custom event name and an optional string containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoString An info string.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString;
/// Create an event which has a custom event name and an optional string containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoString An info string.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:infoString:) instead.", "sendCustomWithEventName:infoString:");
/// Create an event which has a custom event name and an optional string containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoString A custom string.  It may be an unnested (single dimensional) dictionary converted to a JSON formatted string.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithEventName:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray;
/// Create an event which has a custom event name and an optional string containing additional info, and then send it.
/// \param eventName A string containing the custom event name.
///
/// \param infoString A custom string.  It may be an unnested (single dimensional) dictionary converted to a JSON formatted string.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol KVAEventSenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class KVATracker, which if you are using you may simply your call by using the function of the same name which omits this parameter.
///
+ (void)sendCustomWithNameString:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString senderArray:(NSArray<id <KVAEventSenderProvider>> * _Nullable)senderArray SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Use Swift func sendCustom(eventName:infoString:senderArray:) instead.", "sendCustomWithEventName:infoString:senderArray:");
/// Create an event with event type KVAEventType.custom.
/// \param eventName A string containing the custom event name.
///
- (nonnull instancetype)initCustomWithEventName:(NSString * _Nonnull)eventName;
/// Create an event with event type KVAEventType.custom— using modern Objective-C syntax.
/// \param eventName A string containing the custom event name.
///
+ (nonnull instancetype)customEventWithNameString:(NSString * _Nonnull)eventName SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(customWithEventName:) instead.  If in Objective-C then use [[KVAEvent alloc] initCustomWithEventName:]", "init(customWithEventName:)");
/// Create an event with event type KVAEventType.custom.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
- (nonnull instancetype)initCustomWithEventName:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary;
/// Create an event with event type KVAEventType.custom— using modern Objective-C syntax.
/// \param eventName A string containing the custom event name.
///
/// \param infoDictionary A dictionary (single dimensional) containing any number of values with keys.
///
+ (nonnull instancetype)customEventWithNameString:(NSString * _Nonnull)eventName infoDictionary:(NSDictionary * _Nullable)infoDictionary SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(customWithEventName:infoDictionary:) instead.  If in Objective-C then use [[KVAEvent alloc] initCustomWithEventName:infoDictionary:]", "init(customWithEventName:infoDictionary:)");
/// Create an event with event type KVAEventType.custom.
/// \param eventName A string containing the custom event name.
///
/// \param infoString An info string.
///
- (nonnull instancetype)initCustomWithEventName:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString;
/// Create an event with event type KVAEventType.custom— using modern Objective-C syntax.
/// \param eventName A string containing the custom event name.
///
/// \param infoString An info string.
///
+ (nonnull instancetype)customEventWithNameString:(NSString * _Nonnull)eventName infoString:(NSString * _Nullable)infoString SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(customWithEventName:infoString:) instead.  If in Objective-C then use [[KVAEvent alloc] initCustomWithEventName:infoString:]", "init(customWithEventName:infoString:)");
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker33KVAEventDefaultParameterRegistrar_")
@protocol KVAEventDefaultParameterRegistrar
- (void)register:(KVAEventDefaultParameter * _Nonnull)eventDefaultParameter;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker41KVAEventDefaultParameterRegistrarProvider_")
@protocol KVAEventDefaultParameterRegistrarProvider
/// A property which conforms to protocol KVAEventDefaultParameterRegistrar.
@property (nonatomic, readonly, strong) id <KVAEventDefaultParameterRegistrar> _Nonnull eventDefaultParameterRegistrar;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker14KVAEventSender_")
@protocol KVAEventSender
/// Send an event from the device to the appropriate server(s).
/// \param event A KVAEvent configured with the values you want to associate with the event.
///
- (void)sendEvent:(KVAEvent * _Nonnull)event;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker22KVAEventSenderProvider_")
@protocol KVAEventSenderProvider
/// A property which conforms to protocol KVAEventSender.
@property (nonatomic, readonly, strong) id <KVAEventSender> _Nonnull eventSender;
@end


/// A class which defines an event type.
SWIFT_CLASS_NAMED("KVAEventType")
@interface KVAEventType : NSObject
/// An event type which signifies that an achievement was achieved.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull achievement;)
+ (KVAEventType * _Nonnull)achievement SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an ad was clicked.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull adClick;)
+ (KVAEventType * _Nonnull)adClick SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an item was added to a cart.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull addToCart;)
+ (KVAEventType * _Nonnull)addToCart SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an item was added to a wish list.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull addToWishList;)
+ (KVAEventType * _Nonnull)addToWishList SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an ad was viewed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull adView;)
+ (KVAEventType * _Nonnull)adView SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a checkout was started.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull checkoutStart;)
+ (KVAEventType * _Nonnull)checkoutStart SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that consent was granted.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull consentGranted;)
+ (KVAEventType * _Nonnull)consentGranted SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a customEventName will be supplied.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull custom;)
+ (KVAEventType * _Nonnull)custom SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that there was a deep link.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull deeplink;)
+ (KVAEventType * _Nonnull)deeplink SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a level was completed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull levelComplete;)
+ (KVAEventType * _Nonnull)levelComplete SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a purchase was completed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull purchase;)
+ (KVAEventType * _Nonnull)purchase SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a push notification was opened.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull pushOpened;)
+ (KVAEventType * _Nonnull)pushOpened SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a push notification was received.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull pushReceived;)
+ (KVAEventType * _Nonnull)pushReceived SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an item was rated.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull rating;)
+ (KVAEventType * _Nonnull)rating SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a registration was completed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull registrationComplete;)
+ (KVAEventType * _Nonnull)registrationComplete SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a search was performed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull search;)
+ (KVAEventType * _Nonnull)search SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a trial was started.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull startTrial;)
+ (KVAEventType * _Nonnull)startTrial SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that there was a subscription.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull subscribe;)
+ (KVAEventType * _Nonnull)subscribe SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a tutorial was completed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull tutorialComplete;)
+ (KVAEventType * _Nonnull)tutorialComplete SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an item was viewed.  You may use this in any equivalent circumstance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEventType * _Nonnull view;)
+ (KVAEventType * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
/// Return a description of the instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// The name.
/// Examples:  “Add to Cart”, “Add to Wish List”, “Achievement”, etc.
@property (nonatomic, readonly, copy) NSString * _Nonnull nameString;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A feature which tracks user behavior and actions beyond the install.
SWIFT_CLASS_NAMED("KVAEvents")
@interface KVAEvents : NSObject <KVAEventDefaultParameterRegistrar, KVAEventDefaultParameterRegistrarProvider, KVAEventSender>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Register a default parameter.
/// See class KVAEvent.<code>KVAEvent/DefaultParameter</code>.
/// \param defaultParameter The default parameter.
///
- (void)register:(KVAEventDefaultParameter * _Nonnull)defaultParameter;
@property (nonatomic, readonly, strong) id <KVAEventDefaultParameterRegistrar> _Nonnull eventDefaultParameterRegistrar;
- (void)sendEvent:(KVAEvent * _Nonnull)event;
@end

@protocol KVAIdentityLinkRegistrarProvider;

/// An identity link.
SWIFT_CLASS_NAMED("KVAIdentityLink")
@interface KVAIdentityLink : NSObject <KVANetworkingProvider>
/// Create an identity link and then register it.
/// \param name The name of the identity link.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier;
/// Create an identity link and then register it.
/// \param name The name of the identity link.
///
/// \param identifier The identifier.  An identifier of nil will remove any existing identifier under the specified name.
///
/// \param registrarArray An array of KVAIdentityLinkRegistrarProvider to which to register the identity link.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier registrarArray:(NSArray<id <KVAIdentityLinkRegistrarProvider>> * _Nullable)registrarArray;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// A unique name for the identity link.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The identifier.
@property (nonatomic, readonly, copy) NSString * _Nullable identifier;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker24KVAIdentityLinkRegistrar_")
@protocol KVAIdentityLinkRegistrar
- (void)register:(KVAIdentityLink * _Nonnull)identityLink;
@end


SWIFT_PROTOCOL("_TtP14KochavaTracker32KVAIdentityLinkRegistrarProvider_")
@protocol KVAIdentityLinkRegistrarProvider
/// A property which conforms to protocol KVAIdentityLinkRegistrar.
@property (nonatomic, readonly, strong) id <KVAIdentityLinkRegistrar> _Nonnull identityLinkRegistrar;
@end


/// A feature which is responsible for linking identities.
SWIFT_CLASS_NAMED("KVAIdentityLinking")
@interface KVAIdentityLinking : NSObject <KVAIdentityLinkRegistrar, KVAIdentityLinkRegistrarProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Register an identity link.
/// See class <code>KVAIdentityLink</code>.
/// \param identityLink The identity link.
///
- (void)register:(KVAIdentityLink * _Nonnull)identityLink;
/// Register an identity link.
/// note:
/// When used, and when possible, this method should be called before (or as soon as possible after) the tracker is started.  This helps to ensure that your identity values are associated with your install.
/// \param name The name of the identifier.
///
/// \param identifier The identifier.
///
- (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nonnull)identifier SWIFT_DEPRECATED_MSG("Please use KVAIdentityLink.register(name:identifier:) instead.  In Objective-C use -[KVAIdentityLink registerWithName:identifier:].");
/// Register an identity link.
/// note:
/// When used, and when possible, this method should be called before (or as soon as possible after) the tracker is started.  This helps to ensure that your identity values are associated with your install.
/// \param nameString The name of the identifier.
///
/// \param identifierString The identifier.
///
- (void)registerWithNameString:(NSString * _Nonnull)nameString identifierString:(NSString * _Nonnull)identifierString SWIFT_DEPRECATED_MSG("Modern Objective-C-style method deprecated.  Please use KVAIdentityLink.register(name:identifier:) instead.  In Objective-C use -[KVAIdentityLink registerWithName:identifier:].");
@property (nonatomic, readonly, strong) id <KVAIdentityLinkRegistrar> _Nonnull identityLinkRegistrar;
@end


/// A feature which provides information about the install.
SWIFT_CLASS_NAMED("KVAInstall")
@interface KVAInstall : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// The date that the install did start first.
/// This will be nil until the first time that the start function for the tracker has executed.
@property (nonatomic, readonly, copy) NSDate * _Nullable didStartFirstDate;
@end

@class KVAPushNotificationsToken;

SWIFT_PROTOCOL("_TtP14KochavaTracker34KVAPushNotificationsTokenRegistrar_")
@protocol KVAPushNotificationsTokenRegistrar
- (void)registerToken:(KVAPushNotificationsToken * _Nonnull)token;
@end


/// A feature which provides for the measurement of push notifications.
SWIFT_CLASS_NAMED("KVAPushNotifications")
@interface KVAPushNotifications : NSObject <KVAPushNotificationsTokenRegistrar>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)registerToken:(KVAPushNotificationsToken * _Nonnull)token;
/// A boolean indicating if push notifications is enabled.
@property (nonatomic) BOOL enabledBool;
@end

@class NSData;
@protocol KVAPushNotificationsTokenRegistrarProvider;

/// A push notifications token.
SWIFT_CLASS_NAMED("KVAPushNotificationsToken")
@interface KVAPushNotificationsToken : NSObject <KVANetworkingProvider>
/// Create a push notifications token using data and then register.
/// \param data The device token as provided in Data.
///
+ (void)registerWithData:(NSData * _Nonnull)data;
/// Create a push notifications token using data and then register.
/// \param data The device token as provided in Data.
///
/// \param registrarArray An array of KVAPushNotificationsTokenRegistrarProvider to which to add the token.
///
+ (void)registerWithData:(NSData * _Nonnull)data registrarArray:(NSArray<id <KVAPushNotificationsTokenRegistrarProvider>> * _Nullable)registrarArray;
/// Create a push notifications token using data and then register.
/// \param dataHexString The device token as provided as a data hex string.
///
+ (void)registerWithDataHexString:(NSString * _Nonnull)dataHexString;
/// Create a push notifications token using data and then register.
/// \param dataHexString The device token as provided as a data hex string.
///
/// \param registrarArray An array of KVAPushNotificationsTokenRegistrarProvider to which to add the token.
///
+ (void)registerWithDataHexString:(NSString * _Nonnull)dataHexString registrarArray:(NSArray<id <KVAPushNotificationsTokenRegistrarProvider>> * _Nullable)registrarArray;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// The token data as provided by the operating system.
@property (nonatomic, readonly, copy) NSData * _Nullable data;
/// The date that the token was provided by the operating system.
@property (nonatomic, readonly, copy) NSDate * _Nullable providedDate;
/// An instance of networking.
/// This exists here related to the conformance to KVAExecutable and then KVANetworkingProvider.  When this instance is constructed and then executed as an executable from within the the networking class, the networking class will also when possible stamp itself here as an indication of where it originated, so that this instance can properly default where it should be sent to be executed.  This can be derived from the networking.mutator.mutableDelegate when cast to whatever it may be expected to be.  Because it’s weak it may disappear at some point, but if it’s there it’s a better default than a shared instance.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_PROTOCOL("_TtP14KochavaTracker42KVAPushNotificationsTokenRegistrarProvider_")
@protocol KVAPushNotificationsTokenRegistrarProvider
/// A property which conforms to protocol KVAPushNotificationsTokenRegistrar.
@property (nonatomic, readonly, strong) id <KVAPushNotificationsTokenRegistrar> _Nonnull pushNotificationsTokenRegistrar;
@end


/// A class which encapsulates a session.
SWIFT_CLASS_NAMED("KVASession")
@interface KVASession : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A feature which provides for the measurement of sessions.
SWIFT_CLASS_NAMED("KVASessions")
@interface KVASessions : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class KVATrackerConfig;
@class KVATrackerGeneral;
@class KVAPrivacy;
@protocol KVAPrivacyProfileRegistrar;

/// The class KVATracker provides an interface between a host application and Kochava’s Attribution and Measurement servers.
SWIFT_CLASS_NAMED("KVATracker")
@interface KVATracker : NSObject <KVAPrivacyProfileRegistrarProvider, KVACustomIdentifierRegistrarProvider, KVACustomValueRegistrarProvider, KVADeeplinksDeferredPrefetchAugmenterProvider, KVADeeplinksProcessorProvider, KVAEventDefaultParameterRegistrarProvider, KVAEventSenderProvider, KVAIdentityLinkRegistrarProvider, KVAPushNotificationsTokenRegistrarProvider>
/// A shared instance, for convenience.
/// This is the preferred way of using a tracker.  To complete the integration you must call func <code>start(withAppGUIDString:)</code> or func <code>start(withPartnerNameString:)</code>.  You may alternatively use a constructor to create your own tracker.  The shared instance simplifies your implementation as you do not need to store a tracker instance somewhere in a public location in your own code.
/// By default this instance will use the default storage location equivalent to calling <code>init(storageIdentifier:)</code> with storageIdentifier nil.  If you wish to specify an alternative storage location, see var <code>sharedStorageIdentifier</code>.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVATracker * _Nonnull shared;)
+ (KVATracker * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// A shared instance, for convenience— optional.
/// See var <code>shared</code>.  This variable will be nil prior to the shared instance being defaulted.  This may be used to optionally invalidate any existing shared instance without causing it to first be defaulted in the process.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVATracker * _Nullable shared_optional;)
+ (KVATracker * _Nullable)shared_optional SWIFT_WARN_UNUSED_RESULT;
/// The shared instance, an ambiguated form of the var <code>shared</code> which conforms to protocol KVASharedPropertyProvider.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) id _Nonnull sharedInstance;)
+ (id _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// Create a tracker.
/// You rarely create instances of class KVATracker.  Instead, you start the provided shared instance using one of the start instance methods.  See static var <code>shared</code>.
/// <h2>Example</h2>
/// \code
/// class MyClass
/// {
///     let tracker = KVATracker()
/// }
///
/// \endcode
- (nonnull instancetype)init;
/// Create a tracker.
/// You rarely create instances of class KVATracker.  Instead, you start the provided shared instance using one of the start instance methods.  See static var <code>shared</code>.
/// <h2>Example</h2>
/// \code
/// class MyClass
/// {
///     let tracker = KVATracker(storageIdentifier: "alternate")
/// }
///
/// \endcode\param storageIdentifier An optional storage identifier.  The storage identifier should be left unset (nil) unless you have a reason to not use the default storage space.  See default constructor KVATracker().
///
- (nonnull instancetype)initWithStorageIdentifier:(NSString * _Nullable)storageIdentifier OBJC_DESIGNATED_INITIALIZER;
/// Create a tracker— using modern Objective-C syntax.
/// You rarely create instances of class KVATracker.  Instead, you start the provided shared instance using one of the start instance methods.  See static var <code>shared</code>.
/// note:
/// This convenience constructor exists for Objective-C and is expected to be removed in a future version.  In Swift you should use default constructor KVATracker()— or preferably, the shared instance.
/// <h2>Example</h2>
/// \code
/// KVATracker *tracker = KVATracker.tracker;
///
/// \endcode
+ (nonnull instancetype)tracker SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init() instead.  If in Objective-C then use [[KVATracker alloc] init].  Also consider using the shared instance, var shared, which should be used unless you intend to use multiple instances concurrently.", "init()");
/// Create a tracker— using modern Objective-C syntax.
/// You rarely create instances of class KVATracker.  Instead, you start the provided shared instance using one of the start instance methods.  See static var <code>shared</code>.
/// <h2>Example</h2>
/// \code
/// KVATracker *tracker = [KVATracker trackerWithStorageIdentifier:@"alternate"];
///
/// \endcodenote:
/// This convenience constructor exists for Objective-C and is expected to be removed in a future version.  In Swift you should use default constructor KVATracker(storageIdentifier:)— or preferably, the shared instance.
/// \param storageIdString An optional storage identifier.  The storage identifier should be left unset (nil) unless you have a reason to not use the default storage space.  See default constructor KVATracker().
///
+ (nonnull instancetype)trackerWithStorageIdString:(NSString * _Nullable)storageIdString SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Modern Objective-C-style factory method deprecated.  Use Swift init(storageIdentifier:) instead.  If in Objective-C then use [[KVATracker alloc] initWithStorageIdentifier:].  Also consider using the shared instance, var shared, which should be used unless you intend to use multiple instances concurrently.  If you need to set a storage identifier, you may do so with the shared instance by first setting var sharedStorageIdentifier prior to any other access to var shared.  See static var sharedStorageIdentifier for important information regarding the use of setting or changing the storage identifier.", "init(storageIdentifier:)");
/// Configure the instance with an object.
/// This is the same method which is used to configure the instance when the <code>config</code> response is returned from Kochava’s servers (aka kvinit).  It can also be called from the host to change the defaults of various parameters (or else override them).  The structure of the object you provide has the same capability as that which the server may return.  Additionally you can wrap the parameters you provide in special objects with special keys <code>$default$</code>, <code>$default.append$</code>, <code>$override$</code>, or <code>$override.append$</code>, to indicate how these options are treated relative to the server’s options.
/// | Special Key | Treatment  |
/// — | —
/// $default$ |  Elements within this object will serve as a default for any options of the same name when not specified by the server.  The use of this option will replace any previous use of <code>$default$</code> or <code>$default.append$</code>.
/// $default.append$ |  Elements within this object will append to any previously established <code>$default$</code>.  You may use this without using <code>$default$</code> first, allowing you to specify multiple defaults over the course of multiple configuration calls.  The use of this option is generally considered preferred relative to the others.  That is because as a default it still allows for the server to specify overrides, and as an append it will respect any other previous configuration calls which you may have made at other times and places.
/// $override$ |  Elements within this object will override any options of the same name specified by the server.  Use this option when you do not want to allow the server to specify overrides.  The use of this option will replace any previous use of <code>$override$</code> or <code>$override.append$</code>.
/// $override.append$ |  Elements within this object will append to any previously established <code>$override$</code>.  You may use this without using <code>$override$</code> first, allowing you to specify multiple overrides over the course of multiple configuration calls.  The use of this option is generally preferred to <code>$override$</code>.  That is because as an append it will respect any other previous configuration calls which you may have made at other times and places.
/// The following example will deny the collection of two datapoints, the idfa and idfv.  Ordinarily the best way to do this is through the Kochava dashboard, where these can be controlled within multiple version(s) of an app already in production.  However, if at build time you wanted to explicitly override server-side control, such that these two items effectively always appear in the deny datapoints list, the following code would do so:
/// <h2>Example</h2>
/// \code
/// // trackerConfigureObject
/// let trackerConfigureObject =
/// [
///     "$override.append$":
///     [
///         "privacy":
///         [
///             "deny_datapoints":
///             [
///                 "idfa",
///                 "idfv"
///             ]
///         ]
///     ]
/// ]
///
/// // KVATracker
/// KVATracker.shared.configure(with: trackerConfigureObject, context: .host)
/// KVATracker.shared.start(withAppGUIDString: "koapple-sdk-h-random-sn4i")
///
/// \endcode\param object An object from which to configure the instance.  This is most commonly a JSON object.
///
/// \param context The context from which the object was provided.  In rare cases this may have some bearing on the proper interpretation of what was provided.  When this method is called from the host, whether an app or an app extension, the specified context should be <code>.host</code>.
///
- (void)configureWith:(id _Nullable)object context:(KVAContext * _Nullable)context;
/// Start the tracker with an appGUIDString.
/// You may start a tracker with either an appGUIDString or a partnerNameString.  Most commonly this is done with an appGUIDString.  See also func <code>start(withPartnerNameString:)</code>.
/// <h2>Example</h2>
/// \code
/// KVATracker.shared.start(withAppGUIDString: "_YOUR_KOCHAVA_APP_GUID_")
///
/// \endcode\param appGUIDString A Kochava app GUID.
///
- (void)startWithAppGUIDString:(NSString * _Nonnull)appGUIDString;
/// Start the tracker with a partnerNameString.
/// You may start a tracker with either an appGUIDString or a partnerNameString.  Most commonly this is done with an appGUIDString.  See also func <code>start(withAppGUIDString:)</code>.
/// <h2>Examples</h2>
/// \code
/// KVATracker.shared.start(withPartnerNameString: "_YOUR_KOCHAVA_PARTNER_NAME_")
///
/// \endcode\param partnerNameString A Kochava partner name.
///
- (void)startWithPartnerNameString:(NSString * _Nonnull)partnerNameString;
/// Start the tracker.
/// An appGUIDString or partnerNameString must be set prior to making this call.  To do this, instead see func <code>start(withAppGUIDString:)</code> and func <code>start(withPartnerNameString:)</code>.  This method is called by those two methods, and provides public conformance to protocol KVAStartable.  This method can be used to start an instance of a tracker which was created from decoded JSON.
- (void)start;
/// Start the tracker with advanced options.
/// An appGUIDString or partnerNameString must be set prior to making this call.  To do this, instead see func <code>start(withAppGUIDString:)</code> and func <code>start(withPartnerNameString:)</code>.  This method is called by those two methods, and provides public conformance to protocol KVAStartable.  This method can be used to start an instance of a tracker which was created from decoded JSON.
/// important:
/// If you pass asyncBool as false, it becomes your responsibility to ensure that class KVASystem var shared func primarySystemStartDidExecuteOnMainThread() has been called prior to calling this method.  The synchronous dispatch associated with this process can only be made after an asynchronous dispatch to ensure that no locks exist at the time, and so if you pass asyncBool as false it will be skipped here.
/// \param logMessagePrintBool A boolean indicating if a log messages consistent with this being a call to a public entry point should be printed.
///
/// \param asyncBool A boolean indicating if the work within this method should asynchronously dispatch to the globalSerial queue.
///
- (void)startWithLogMessagePrintBool:(BOOL)logMessagePrintBool asyncBool:(BOOL)asyncBool;
/// Stop the tracker.
/// The primary action of this method is to reset the startedTask, which will cause any task which is dependent upon that task to block the initiation of new execution.  The current state of the system is fundamentally maintained;  however, essentially the same things which would not execute prior to having been started will not execute while stopped.
/// Stop is similar to <code>invalidate()</code> (or the use of KVATrackerProduct/reset(deleteLocalDataBool:) or KVATrackerProduct/shutdown(deleteLocalDataBool:) which wrap <code>invalidate()</code>) in that both will block new execution, though through different mechanisms;  however, it is different in that stop maintains state and can be started again.  In contrast <code>invalidate()</code> discards state, cannot be re-started, and in the case of the shared instance is automatically released.
/// Stop is similar to class KVANetworking var sleepBool in that both will block new execution through a similar mechanism;  however, it is different in that stop essentially covers all aspects of exectution which are at an inverse of start.  In contrast, class KVANetworking var sleepBool exempts certain key features and these can continue to execute while sleep is in effect.
- (void)stop;
/// Stop the tracker with advanced options.
/// The primary action of this method is to reset the startedTask, which will cause any task which is dependent upon that task to block the initiation of new execution.  The current state of the system is fundamentally maintained;  however, essentially the same things which would not execute prior to having been started will not execute while stopped.
/// Stop is similar to <code>invalidate()</code> (or the use of KVATrackerProduct/reset(deleteLocalDataBool:) or KVATrackerProduct/shutdown(deleteLocalDataBool:) which wrap <code>invalidate()</code>) in that both will block new execution, though through different mechanisms;  however, it is different in that stop maintains state and can be started again.  In contrast <code>invalidate()</code> discards state, cannot be re-started, and in the case of the shared instance is automatically released.
/// Stop is similar to class KVANetworking var sleepBool in that both will block new execution through a similar mechanism;  however, it is different in that stop essentially covers all aspects of exectution which are at an inverse of start.  In contrast, class KVANetworking var sleepBool exempts certain key features and these can continue to execute while sleep is in effect.
/// \param logMessagePrintBool A boolean indicating if a log messages consistent with this being a call to a public entry point should be printed.
///
/// \param asyncBool A boolean indicating if the work within this method should asynchronously dispatch to the globalSerial queue.
///
- (void)stopWithLogMessagePrintBool:(BOOL)logMessagePrintBool asyncBool:(BOOL)asyncBool;
/// Invalidate the tracker.
/// When using this method with the shared instance, you are guaranteed to be re-defaulted a new instance the next time it is referenced, and you may immediately move forward to re-configure and start it.
- (void)invalidate;
/// Invalidate the tracker with advanced options.
/// See func <code>invalidate()</code>
/// \param logMessagePrintBool A boolean indicating if a log messages consistent with this being a call to a public entry point should be printed.
///
/// \param asyncBool A boolean indicating if the work within this method should asynchronously dispatch to the globalSerial queue.
///
- (void)invalidateWithLogMessagePrintBool:(BOOL)logMessagePrintBool asyncBool:(BOOL)asyncBool;
/// Return a description of the instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// A feature which interfaces with Apple’s SKAdNetwork attribution system.
@property (nonatomic, readonly, strong) KVAAdNetwork * _Nonnull adNetwork;
/// A feature which may be used to limit advertising tracking from the level of the application (or host).
@property (nonatomic, readonly, strong) KVAAppLimitAdTracking * _Nonnull appLimitAdTracking;
/// A feature which interfaces with Apple’s App Tracking Transparency system.
@property (nonatomic, readonly, strong) KVAAppTrackingTransparency * _Nonnull appTrackingTransparency;
/// A feature which provides attribution information related to the install.
@property (nonatomic, readonly, strong) KVAAttribution * _Nonnull attribution;
/// A feature which is responsible for controlling and updating the configuration of the tracker.
/// This is sometimes referred to by the name of the backing service which provides the configuration, <em>kvinit</em>.
@property (nonatomic, readonly, strong) KVATrackerConfig * _Nonnull config;
/// A feature which is responsible for custom identifiers.
/// Register a custom identifier by calling class <code>KVACustomIdentifiers</code> func <code>KVACustomIdentifiers/register(name:identifier:)</code>.
@property (nonatomic, readonly, strong) KVACustomIdentifiers * _Nonnull customIdentifiers;
/// A feature which is responsible for custom values.
/// Register a custom value by calling class <code>KVACustomValue</code> func <code>KVACustomValue/register(name:value:)</code>.
@property (nonatomic, readonly, strong) KVACustomValues * _Nonnull customValues;
/// A feature which measures deeplink activity.
/// Create and process a basic deeplink (which is a wrapper for Apple’s url) by calling class <code>KVADeeplink</code> func <code>KVADeeplink/process(url:closure_didComplete:)</code>.
@property (nonatomic, readonly, strong) KVADeeplinks * _Nonnull deeplinks;
/// A feature which is responsible for the identification of a device.
/// The managed id is referred to as the <em>Kochava Device Id</em>.  Get the Kochava Device Id by getting class <code>KVADeviceId</code> var <code>KVADeviceId/string</code>.
@property (nonatomic, readonly, strong) KVADeviceId * _Nonnull deviceId;
/// A feature which encapsulates all of the general aspects of a tracker not belonging to any other encapsulated features.
@property (nonatomic, readonly, strong) KVATrackerGeneral * _Nonnull general;
/// A feature which is responsible for linking identities.
/// Register an identity link by calling class <code>KVAIdentityLinking</code> func <code>KVAIdentityLinking/register(name:identifier:)</code>.
@property (nonatomic, readonly, strong) KVAIdentityLinking * _Nonnull identityLink;
/// A feature which provides information about the install.
/// The install is automatically sent to Kochava’s servers after starting the tracker, and after the retrieval of the tracker’s configuration in feature var <code>config</code>.
@property (nonatomic, readonly, strong) KVAInstall * _Nonnull install;
/// A feature which provides networking support.
/// The networking instance manages the exchange of data between the client and various server(s), along with the associated tasks, network transactions, and adapters.  See class KVANetworking in module KochavaCore.
@property (nonatomic, readonly, strong) KVANetworking * _Nonnull networking;
/// A feature which provides for the measurement of push notifications.
/// Create and register a push notifications token (which is a wrapper for Apple’s device token data) by calling class <code>KVAPushNotificationsToken</code> func  <code>KVAPushNotificationsToken/register(data:)</code>.
@property (nonatomic, readonly, strong) KVAPushNotifications * _Nonnull pushNotifications;
/// A boolean which indicates if you want to limit ad tracking at the application level.  This is a convenience variable which is fully equivalent to, and interchangeable with, <code>appLimitAdTracking</code>.<code>KVAAppLimitAdTracking/bool</code>.
/// This feature is related to the Limit Ad Tracking feature which is typically found on an Apple device under Settings, Privacy, Advertising.  In the same way that you can limit ad tracking through that setting, this feature provides a second and independent means for the host app to limit ad tracking by asking the user directly.  A value of false from either this feature or Apple’s will result in the limiting of ad tracking.
@property (nonatomic) BOOL appLimitAdTrackingBool SWIFT_DEPRECATED_MSG("Convenience wrapper function deprecated.  Use Swift var appLimitAdTracking.bool instead.  In Objective-C use var appLimitAdTracking.boolean instead, as bool is a reserved word in Objective-C.", "appLimitAdTracking.bool");
/// A property containing the unique device ID that was generated when the tracker was first initialized on the current install (convenience).  This is a convenience variable which is fully equivalent to, and interchangeable with, <code>deviceId</code>.<code>KVADeviceId/string</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable deviceIdString SWIFT_DEPRECATED_MSG("Convenience wrapper function deprecated.  Use var deviceId.string instead.", "deviceId.string");
/// A feature which is responsible for privacy, including intelligent consent.  This is a convenience variable which is fully equivalent to, and interchangeable with, <code>networking</code>.privacy.
/// Privacy profiles are automatically registered from the server.  Alternatively create and register a privacy profile locally by calling class KVAPrivacyProfile func KVAPrivacyProfile/register(name:payloadKeyStringArray:).  Enable (or explicitly disable) a profile by calling class KVAPrivacy func KVAPrivacy/setEnabledBool(forProfileNameString:enabledBool:).
@property (nonatomic, readonly, strong) KVAPrivacy * _Nonnull privacy;
/// A boolean which when true causes the instance to sleep.  This is a convenience variable which is fully equivalent to, and interchangeable with, <code>networking</code>.sleepBool.
/// The default is false.  When set to true, this causes tasks to effectively be suspended until this condition is lifted.  While this is set to true, tasks are not lost per-say;  however, if a task may have otherwise occurred multiple times, it may be represented only once once the condition is lifted.
@property (nonatomic) BOOL sleepBool;
@property (nonatomic, readonly, strong) id <KVACustomIdentifierRegistrar> _Nonnull customIdentifierRegistrar;
@property (nonatomic, readonly, strong) id <KVACustomValueRegistrar> _Nonnull customValueRegistrar;
@property (nonatomic, readonly, strong) id <KVADeeplinksDeferredPrefetchAugmenter> _Nonnull deeplinksDeferredPrefetchAugmenter;
@property (nonatomic, readonly, strong) id <KVADeeplinksProcessor> _Nullable deeplinksProcessor;
@property (nonatomic, readonly, strong) id <KVAEventDefaultParameterRegistrar> _Nonnull eventDefaultParameterRegistrar;
@property (nonatomic, readonly, strong) id <KVAEventSender> _Nonnull eventSender;
@property (nonatomic, readonly, strong) id <KVAIdentityLinkRegistrar> _Nonnull identityLinkRegistrar;
@property (nonatomic, readonly, strong) id <KVAPrivacyProfileRegistrar> _Nonnull privacyProfileRegistrar;
@property (nonatomic, readonly, strong) id <KVAPushNotificationsTokenRegistrar> _Nonnull pushNotificationsTokenRegistrar;
/// A string used as a  storage identifier for the shared instance.
/// This is used to further qualify where in persistent storage the information for this instance is stored.  This property should not be used except in very specific circumstances.  Please contact your client success representative if you are interested in using this.  You would set this value to a short unique string consisting of regular alphanumeric characters.
/// Following deployment with a given storage identifier this should never be changed except to represent an entirely new integration.
/// If used, it is imperative that this value be consistently set prior to accessing the shared instance for the first time.  You must make accommodations to set this as early as possible, where it would be prior to any access to var <code>shared</code> throughout all of your code.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) NSString * _Nullable sharedStorageIdentifier;)
+ (NSString * _Nullable)sharedStorageIdentifier SWIFT_WARN_UNUSED_RESULT;
+ (void)setSharedStorageIdentifier:(NSString * _Nullable)sharedStorageIdentifier;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) NSString * _Nullable sharedStorageIdString SWIFT_DEPRECATED_MSG("Use sharedStorageIdentifier instead.", "sharedStorageIdentifier");)
+ (NSString * _Nullable)sharedStorageIdString SWIFT_WARN_UNUSED_RESULT;
+ (void)setSharedStorageIdString:(NSString * _Nullable)sharedStorageIdString;
/// A boolean indicating whether or not the instance has been started.
@property (nonatomic, readonly) BOOL startedBool;
@end


@interface KVATracker (SWIFT_EXTENSION(KochavaTracker)) <JSExport>
@end


/// A feature which is responsible for controlling and updating the configuration of the tracker.
SWIFT_CLASS_NAMED("KVATrackerConfig")
@interface KVATrackerConfig : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Get the config dictionary with a completion handler.
/// \param closure_didComplete A completion handler to call once the result has been retrieved.
///
- (void)retrieveWithClosure_didComplete:(void (^ _Nonnull)(KVATrackerConfig * _Nonnull))closure_didComplete;
/// A closure which is called when attribution is retrieved.
@property (nonatomic, copy) void (^ _Nullable closure_didComplete)(KVATrackerConfig * _Nonnull);
@property (nonatomic, readonly) BOOL consentGDPRAppliesBool;
/// A boolean indicating if the configuration has been collected from the server at least one time.
@property (nonatomic, readonly) BOOL collectedBool;
@end


/// A feature which is responsible for the collection of datapoints.
SWIFT_CLASS_NAMED("KVATrackerDatapoints")
@interface KVATrackerDatapoints : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A feature which encapsulates all of the general aspects of a tracker not belonging to any other encapsulated features.
SWIFT_CLASS_NAMED("KVATrackerGeneral")
@interface KVATrackerGeneral : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A string containing the partner name, when applicable.
/// An example would be “Moloco”.
@property (nonatomic, copy) NSString * _Nullable partnerNameString;
/// A unique identifier for an app, resolved.
/// This value is a resolved value when taking into consideration both the hostAppGUIDString as well as the serverAppGUIDString.  This is the app GUID that is ultimately sent to the server to identify the app in general contexts.  When set, this defaults to setting the hostAppGUIDString.
@property (nonatomic, copy) NSString * _Nullable appGUIDString;
@end


/// A feature which is responsible for tracker-specific logging activities.
/// You can set the KVALog.shared.level to control what level of log messages are printed, as well as configure various other options through module KochavaCore class KVALog.
SWIFT_CLASS_NAMED("KVATrackerLogging")
@interface KVATrackerLogging : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class KVAProduct;

/// A class which defines the tracker product.
/// A product in this context generally refers to the result of a build.
/// note:
/// This is currently overridden to be a subclass of NSObject rather than KVAProduct so that it can be represented in Objective-C.  If you use KVAProduct it will still build, but the automatic module registration will fail to locate the class.  You can see early evidence of the problem if you also make the shared property be of the class type, where the compiler will say that it cannot use @objc because it cannot be expressed in Objective-C.  This is apparently a problem that Swift has providing Objective-C compatibility to Swift classes which subclass other Swift classes across modules.  For example, KVACoreProduct does not have this problem, presumably because it’s in the same module as KVAProduct.  In order to convert this class to subclass KVAProduct, or to subsequently allow shared to be of the class’ type, a means of registering/loading the class as a Swift-only class would be required.  More importantly, however, we’d need to give up public Objective-C support.  Since that doesn’t seem possible, the only alternative would be that Apple fixes this issue and provides the necessary support, assuming that’s possible.
SWIFT_CLASS_NAMED("KVATrackerProduct")
@interface KVATrackerProduct : NSObject
/// The singleton shared instance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAProduct * _Nonnull shared;)
+ (KVAProduct * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Defines the parameters for the tracker product.
SWIFT_CLASS("_TtC14KochavaTracker23KVATrackerProductParams")
@interface KVATrackerProductParams : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A feature which updates the server when there are changes to tracked components.
SWIFT_CLASS_NAMED("KVATrackerUpdates")
@interface KVATrackerUpdates : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif

#else
#error unsupported Swift architecture
#endif
