#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
#ifndef KOCHAVAMEASUREMENT_SWIFT_H
#define KOCHAVAMEASUREMENT_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 KochavaNetworking;
@import ObjectiveC;
@import StoreKit;
#endif

#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="KochavaMeasurement",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)
@class KVAMeasurement_AdNetwork_Conversion;

/// A feature which interfaces with Apple’s SKAdNetwork attribution system.
SWIFT_CLASS_NAMED("AdNetwork")
@interface KVAMeasurement_AdNetwork : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// The current conversion information.
@property (nonatomic, strong) KVAMeasurement_AdNetwork_Conversion * _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)(KVAMeasurement_AdNetwork * _Nonnull);
@end


@interface KVAMeasurement_AdNetwork (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class KVAMeasurement_AdNetwork_Conversion_Result;

/// A feature which determines adnetwork conversion(s).
SWIFT_CLASS_NAMED("Conversion")
@interface KVAMeasurement_AdNetwork_Conversion : NSObject
/// 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)(KVAMeasurement_AdNetwork_Conversion * _Nonnull, KVAMeasurement_AdNetwork_Conversion_Result * _Nonnull);
/// 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) KVAMeasurement_AdNetwork_Conversion_Result * _Nonnull result;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class KVANetworking;

/// A feature which interfaces with Apple Search Ads.
SWIFT_CLASS("_TtCC18KochavaMeasurement11Measurement14AppleSearchAds")
@interface AppleSearchAds : NSObject <KVANetworking_Provider>
/// 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


@interface AppleSearchAds (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class KVAMeasurement_Attribution_Result;

/// A feature which provides attribution information related to the install.
SWIFT_CLASS_NAMED("Attribution")
@interface KVAMeasurement_Attribution : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Retrieve the attribution result.
/// \param closure_didComplete A closure to call once the result has been retrieved.  This closure will be called on the Kochava SDK’s globalSerial queue.
///
- (void)retrieveResultWithClosure_didComplete:(void (^ _Nonnull)(KVAMeasurement_Attribution_Result * _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) KVAMeasurement_Attribution_Result * _Nonnull result SWIFT_DEPRECATED_MSG("Synchronous result getter deprecated.  Use Swift func retrieveResult(closure_didComplete:) instead.  In Objective-C use -retrieveResultWithClosure_didComplete:", "retrieveResult(closure_didComplete:)");
/// A closure which is called when attribution is retrieved.
@property (nonatomic, copy) void (^ _Nullable closure_didRetrieveResult)(KVAMeasurement_Attribution * _Nonnull, KVAMeasurement_Attribution_Result * _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


@interface KVAMeasurement_Attribution (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class KVAContext;

/// The attribution result.
SWIFT_CLASS_NAMED("Result")
@interface KVAMeasurement_Attribution_Result : NSObject
- (id _Nullable)kva_toContext:(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


@interface KVAMeasurement_AdNetwork_Conversion (SWIFT_EXTENSION(KochavaMeasurement))
@end


@interface KVAMeasurement_AdNetwork_Conversion (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class NSString;
@class NSNumber;

/// The adnetwork conversion result.
SWIFT_CLASS_NAMED("Result")
@interface KVAMeasurement_AdNetwork_Conversion_Result : NSObject <NSCopying>
- (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_toContext:(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;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface KVAMeasurement_AdNetwork_Conversion (SWIFT_EXTENSION(KochavaMeasurement))
@end

@protocol KVACustomIdentifier_RegistrarProvider;

/// A custom identifier.
SWIFT_CLASS_NAMED("CustomIdentifier")
@interface KVACustomIdentifier : NSObject <KVANetworking_Provider>
/// 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 CustomIdentifier_RegistrarProvider to which to register the custom identifier.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier registrarArray:(NSArray<id <KVACustomIdentifier_RegistrarProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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_NAMED("CustomIdentifier_Registrar")
@protocol KVACustomIdentifier_Registrar
- (void)register:(KVACustomIdentifier * _Nonnull)customIdentifier;
@end


SWIFT_PROTOCOL_NAMED("CustomIdentifier_RegistrarProvider")
@protocol KVACustomIdentifier_RegistrarProvider
/// A property which conforms to protocol CustomIdentifier_Registrar.
@property (nonatomic, readonly, strong) id <KVACustomIdentifier_Registrar> _Nonnull customIdentifier_registrar;
@end

@protocol KVACustomValue_RegistrarProvider;

/// A custom value.
SWIFT_CLASS_NAMED("CustomValue")
@interface KVACustomValue : NSObject <KVANetworking_Provider>
/// 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 CustomValue_RegistrarProvider to which to register the custom value.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value registrarArray:(NSArray<id <KVACustomValue_RegistrarProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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_NAMED("CustomValue_Registrar")
@protocol KVACustomValue_Registrar
- (void)register:(KVACustomValue * _Nonnull)customValue;
@end


SWIFT_PROTOCOL_NAMED("CustomValue_RegistrarProvider")
@protocol KVACustomValue_RegistrarProvider
/// A property which conforms to protocol CustomValue_Registrar.
@property (nonatomic, readonly, strong) id <KVACustomValue_Registrar> _Nonnull customValue_registrar;
@end

@class NSURL;
@protocol KVADeeplink_ProcessorProvider;

/// A deeplink.
SWIFT_CLASS_NAMED("Deeplink")
@interface KVADeeplink : NSObject <KVANetworking_Provider>
/// 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 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 processor An array of Deeplink_ProcessorProvider 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 <KVADeeplink_ProcessorProvider> _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 Deeplink_ProcessorProvider 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 <KVADeeplink_ProcessorProvider> _Nullable)processor closure_didComplete:(void (^ _Nullable)(KVADeeplink * _Nonnull))closure_didComplete;
- (id _Nullable)kva_toContext:(KVAContext * _Nullable)context 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 Executable and then Networking_Provider.  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.execution.parentExecutor 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;
@property (nonatomic, readonly, copy) NSString * _Nullable pathURLString;
/// A dictionary containing raw information about the deeplink.
@property (nonatomic, copy) NSDictionary * _Nullable rawDictionary;
/// The unwrapped deeplink url.
/// This url has gone through the Deeplink.Wrapper.Unwrapper.  It may be the same as the urlString, but if unwrapping occurred successfully then it may be different.  In cases where the Deeplink.Wrapper.Unwrapper has not been used, including deferred attribution based resolution, this value will be nil.
@property (nonatomic, copy) NSString * _Nullable unwrappedURLString;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface KVADeeplink (SWIFT_EXTENSION(KochavaMeasurement))
@end

@protocol KVAMeasurement_Deeplinks_DeferredPrefetch_AugmenterProvider;

/// A deferred prefetch for deeplinks.
SWIFT_CLASS_NAMED("DeferredPrefetch")
@interface KVADeeplink_DeferredPrefetch : NSObject <KVANetworking_Provider>
/// 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 Measurement_Deeplinks_DeferredPrefetch_AugmenterProvider to which to augment the deferred prefetch.
///
+ (void)augmentWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier augmenterArray:(NSArray<id <KVAMeasurement_Deeplinks_DeferredPrefetch_AugmenterProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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 KVADeeplink (SWIFT_EXTENSION(KochavaMeasurement))
@end

@protocol KVADeeplink_Wrapper_RegistrarProvider;

/// A deeplink wrapper.
SWIFT_CLASS_NAMED("Wrapper")
@interface KVADeeplink_Wrapper : NSObject <KVANetworking_Provider>
/// Create a deeplink wrapper and then register it.
/// \param domain A domain to associate with the deeplink wrapper.
///
+ (void)registerWithDomain:(NSString * _Nonnull)domain;
/// Create a deeplink wrapper and then register it.
/// \param domain A domain to associate with the deeplink wrapper.
///
/// \param registrarArray An array of Deeplink_Wrapper_RegistrarProvider to which to register the deeplink wrapper.
///
+ (void)registerWithDomain:(NSString * _Nonnull)domain registrarArray:(NSArray<id <KVADeeplink_Wrapper_RegistrarProvider>> * _Nullable)registrarArray;
/// A unique domain for the parameter.
@property (nonatomic, readonly, copy) NSString * _Nonnull domain;
/// An instance of networking.
/// This exists here related to the conformance to Executable and then Networking_Provider.  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.execution.parentExecutor 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_NAMED("Deeplink_Processor")
@protocol KVADeeplink_Processor
/// Process a deeplink.
/// \param deeplink An instance of Deeplink.
///
/// \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


SWIFT_PROTOCOL_NAMED("Deeplink_ProcessorProvider")
@protocol KVADeeplink_ProcessorProvider
/// A property which conforms to protocol Deeplink_Processor.
@property (nonatomic, readonly, strong) id <KVADeeplink_Processor> _Nullable deeplink_processor;
@end


SWIFT_PROTOCOL_NAMED("Deeplink_Wrapper_Registrar")
@protocol KVADeeplink_Wrapper_Registrar
- (void)register:(KVADeeplink_Wrapper * _Nonnull)wrapper;
@end


SWIFT_PROTOCOL_NAMED("Deeplink_Wrapper_RegistrarProvider")
@protocol KVADeeplink_Wrapper_RegistrarProvider
/// A property which conforms to protocol Deeplink_Wrapper_Registrar.
@property (nonatomic, readonly, strong) id <KVADeeplink_Wrapper_Registrar> _Nonnull deeplink_wrapper_registrar;
@end

@class KVAEvent_Type;
@protocol KVAEvent_SenderProvider;
@class KVAConsent;
@class NSDate;
@class NSDecimalNumber;

/// Events provide a means of defining a post-install event, providing standardized parameters.
SWIFT_CLASS_NAMED("Event")
@interface KVAEvent : NSObject <KVANetworking_Provider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Create an event.
/// The designated initializer.
/// \param type An event type.
///
- (nonnull instancetype)initWithType:(KVAEvent_Type * _Nonnull)type OBJC_DESIGNATED_INITIALIZER;
/// 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;
/// Send the event using the default Event_SenderProvider.
/// The default is the shared instance of class <code>Measurement</code>.
- (void)send;
/// Send the event with a specified array of Event_SenderProvider(s).
- (void)sendWithSenderArray:(NSArray<id <KVAEvent_SenderProvider>> * _Nullable)senderProviderArray;
/// Return a description of the instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Return a string representation of the name of the event.
/// a.k.a.  “event_name”
- (NSString * _Nonnull)eventName 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) KVAEvent_Type * _Nonnull eventType;
/// An instance of networking.
/// This exists here related to the conformance to Executable and then Networking_Provider.  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.execution.parentExecutor 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 actor that should be used when sending the event.  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 Consent.
/// 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 EventType.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;
/// 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(KochavaMeasurement)) <JSExport>
@end


@interface KVAEvent (SWIFT_EXTENSION(KochavaMeasurement))
@end

@protocol KVAEvent_DefaultParameter_RegistrarProvider;

/// An event default parameter.
SWIFT_CLASS_NAMED("DefaultParameter")
@interface KVAEvent_DefaultParameter : NSObject <KVANetworking_Provider>
/// 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 Event_DefaultParameter_RegistrarProvider to which to register the event default parameter.
///
+ (void)registerWithUserIdString:(NSString * _Nullable)userIdString registrarArray:(NSArray<id <KVAEvent_DefaultParameter_RegistrarProvider>> * _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 Event_DefaultParameter_RegistrarProvider to which to register the event default parameter.
///
+ (void)registerWithName:(NSString * _Nonnull)name value:(id _Nullable)value registrarArray:(NSArray<id <KVAEvent_DefaultParameter_RegistrarProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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(KochavaMeasurement))
/// 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.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol Event_SenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class Measurement, 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 <KVAEvent_SenderProvider>> * _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.
///
+ (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.
///
/// \param senderArray Optional.  An array of senders.  These are objects which conform to protocol Event_SenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class Measurement, 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 <KVAEvent_SenderProvider>> * _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 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 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 Event_SenderProvider.  If this parameter is not passed the default sender will be used.  The default sender is the shared instance of class Measurement, 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 <KVAEvent_SenderProvider>> * _Nullable)senderArray;
/// Create an event with event type EventType.custom.
/// \param eventName A string containing the custom event name.
///
- (nonnull instancetype)initCustomWithEventName:(NSString * _Nonnull)eventName;
/// Create an event with event type EventType.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 EventType.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;
@end


SWIFT_PROTOCOL_NAMED("Event_DefaultParameter_Registrar")
@protocol KVAEvent_DefaultParameter_Registrar
- (void)register:(KVAEvent_DefaultParameter * _Nonnull)eventDefaultParameter;
@end


SWIFT_PROTOCOL_NAMED("Event_DefaultParameter_RegistrarProvider")
@protocol KVAEvent_DefaultParameter_RegistrarProvider
/// A property which conforms to protocol Event_DefaultParameter_Registrar.
@property (nonatomic, readonly, strong) id <KVAEvent_DefaultParameter_Registrar> _Nonnull event_defaultParameter_registrar;
@end


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


SWIFT_PROTOCOL_NAMED("Event_SenderProvider")
@protocol KVAEvent_SenderProvider
/// A property which conforms to protocol Event_Sender.
@property (nonatomic, readonly, strong) id <KVAEvent_Sender> _Nonnull event_sender;
@end


/// A class which defines an event type.
SWIFT_CLASS_NAMED("Event_Type")
@interface KVAEvent_Type : 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) KVAEvent_Type * _Nonnull achievement;)
+ (KVAEvent_Type * _Nonnull)achievement SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that an ad was clicked.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEvent_Type * _Nonnull adClick;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull addToCart;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull addToWishList;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull adView;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull checkoutStart;)
+ (KVAEvent_Type * _Nonnull)checkoutStart SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that consent was granted.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEvent_Type * _Nonnull consentGranted;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull custom;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull deeplink;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull levelComplete;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull purchase;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull pushOpened;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull pushReceived;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull rating;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull registrationComplete;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull search;)
+ (KVAEvent_Type * _Nonnull)search SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that a trial was started.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEvent_Type * _Nonnull startTrial;)
+ (KVAEvent_Type * _Nonnull)startTrial SWIFT_WARN_UNUSED_RESULT;
/// An event type which signifies that there was a subscription.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KVAEvent_Type * _Nonnull subscribe;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull tutorialComplete;)
+ (KVAEvent_Type * _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) KVAEvent_Type * _Nonnull view;)
+ (KVAEvent_Type * _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 name;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol KVAIdentityLink_RegistrarProvider;

/// An identity link.
SWIFT_CLASS_NAMED("IdentityLink")
@interface KVAIdentityLink : NSObject <KVANetworking_Provider>
/// 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 IdentityLink_RegistrarProvider to which to register the identity link.
///
+ (void)registerWithName:(NSString * _Nonnull)name identifier:(NSString * _Nullable)identifier registrarArray:(NSArray<id <KVAIdentityLink_RegistrarProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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_NAMED("IdentityLink_Registrar")
@protocol KVAIdentityLink_Registrar
- (void)register:(KVAIdentityLink * _Nonnull)identityLink;
@end


SWIFT_PROTOCOL_NAMED("IdentityLink_RegistrarProvider")
@protocol KVAIdentityLink_RegistrarProvider
/// A property which conforms to protocol IdentityLink_Registrar.
@property (nonatomic, readonly, strong) id <KVAIdentityLink_Registrar> _Nonnull identityLink_registrar;
@end

@protocol KVAPushNotificationsToken_Registrar;

SWIFT_PROTOCOL_NAMED("PushNotificationsToken_RegistrarProvider")
@protocol KVAPushNotificationsToken_RegistrarProvider
/// A property which conforms to protocol PushNotificationsToken_Registrar.
@property (nonatomic, readonly, strong) id <KVAPushNotificationsToken_Registrar> _Nonnull pushNotificationsToken_registrar;
@end

@protocol KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter;

SWIFT_PROTOCOL_NAMED("Measurement_Deeplinks_DeferredPrefetch_AugmenterProvider")
@protocol KVAMeasurement_Deeplinks_DeferredPrefetch_AugmenterProvider
/// A property which conforms to protocol Measurement_Deeplinks_DeferredPrefetch_Augmenter.
@property (nonatomic, readonly, strong) id <KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter> _Nonnull deeplinks_deferredPrefetch_augmenter;
@end

@class KVAMeasurement_AppLimitAdTracking;
@class KVAMeasurement_AppTrackingTransparency;
@class KVAMeasurement_CustomIdentifiers;
@class KVAMeasurement_CustomValues;
@class KVAMeasurement_Deeplinks;
@class KVAMeasurement_General;
@class KVAMeasurement_IdentityLinking;
@class KVAMeasurement_Install;
@class KVAMeasurement_InstallIdentifier;
@class KVAMeasurement_PushNotifications;
@class KVANetworking_Config;
@class KVANetworking_Privacy;
@protocol KVAPrivacyProfile_Registrar;

/// The class Measurement provides an interface between a host application and Kochava’s Measurement and Attribution servers.
SWIFT_CLASS_NAMED("Measurement")
@interface KVAMeasurement : NSObject <KVACustomIdentifier_RegistrarProvider, KVACustomValue_RegistrarProvider, KVADeeplink_ProcessorProvider, KVADeeplink_Wrapper_RegistrarProvider, KVAEvent_DefaultParameter_RegistrarProvider, KVAEvent_SenderProvider, KVAIdentityLink_RegistrarProvider, KVAMeasurement_Deeplinks_DeferredPrefetch_AugmenterProvider, KVAPushNotificationsToken_RegistrarProvider, KVAPrivacyProfile_RegistrarProvider>
/// A shared instance, for convenience.
/// This is the preferred way of using a measurement instance.  To complete the integration you must call func <code>Measurement/start(appGUIDString:)</code> or func <code>Measurement/start(partnerNameString:)</code>.  You may alternatively use a constructor to create your own measurement instance.  The shared instance simplifies your implementation as you do not need to store a measurement instance somewhere in a public location in your own code, and you do not need to manually link together the clients of any optional products.
/// By default this instance will use the default storage location equivalent to calling <code>Measurement/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) KVAMeasurement * _Nonnull shared;)
+ (KVAMeasurement * _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) KVAMeasurement * _Nullable shared_optional;)
+ (KVAMeasurement * _Nullable)shared_optional SWIFT_WARN_UNUSED_RESULT;
/// The shared instance, an ambiguated form of the var <code>shared</code> which conforms to protocol SharedInstanceProvider.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) id _Nonnull sharedInstance;)
+ (id _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// Create a measurement instance.  You rarely create instances of class Measurement.  Instead you typically configure the provided shared instance and then start it using the start method.  See static var <code>shared</code>.
/// <h2>Example</h2>
/// \code
/// class MyClass
/// {
///     let measurement = Measurement()
/// }
///
/// \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.
///
- (nonnull instancetype)initWithStorageIdentifier:(NSString * _Nullable)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
/// // measurementConfigureObject
/// let measurementConfigureObject =
/// [
///     "$override.append$":
///     [
///         "privacy":
///         [
///             "deny_datapoints":
///             [
///                 "idfa",
///                 "idfv"
///             ]
///         ]
///     ]
/// ]
///
/// // Measurement
/// Measurement.shared.configure(with: measurementConfigureObject, context: .host)
/// Measurement.shared.start(appGUIDString: "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 measurement instance with an appGUIDString.
/// You may start a measurement instance with either an appGUIDString or a partnerNameString.  Most commonly this is done with an appGUIDString.  See also func <code>Measurement/start(partnerNameString:)</code>.
/// <h2>Example</h2>
/// \code
/// Measurement.shared.start(appGUIDString: "_YOUR_KOCHAVA_APP_GUID_")
///
/// \endcode\param appGUIDString A Kochava app GUID.
///
- (void)startWithAppGUIDString:(NSString * _Nonnull)appGUIDString;
/// Start the measurement instance with a partnerNameString.
/// You may start a measurement instance with either an appGUIDString or a partnerNameString.  Most commonly this is done with an appGUIDString.  See also func <code>Measurement/start(appGUIDString:)</code>.
/// <h2>Examples</h2>
/// \code
/// Measurement.shared.start(partnerNameString: "_YOUR_KOCHAVA_PARTNER_NAME_")
///
/// \endcode\param partnerNameString A Kochava partner name.
///
- (void)startWithPartnerNameString:(NSString * _Nonnull)partnerNameString;
/// Start the measurement instance.
/// An appGUIDString or partnerNameString must be set prior to making this call.  To do this, instead see func <code>Measurement/start(appGUIDString:)</code> and func <code>Measurement/start(partnerNameString:)</code>.  This method is called by those two methods, and provides public conformance to protocol Startable.  This method can be used to start an instance of measurement which was created from decoded JSON.
- (void)start;
/// Start the measurement instance with advanced options.
/// An appGUIDString or partnerNameString must be set prior to making this call.  To do this, instead see func <code>Measurement/start(appGUIDString:)</code> and func <code>Measurement/start(partnerNameString:)</code>.  This method is called by those two methods, and provides public conformance to protocol Startable.  This method can be used to start an instance of measurement which was created from decoded JSON.
/// important:
/// If you pass asyncBool as false, it becomes your responsibility to ensure that class System 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 measurement instance.
/// The primary action of this method is to reset the Networking.General.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>Measurement/invalidate()</code> (or the use of KochavaMeasurement.Product/reset(deleteLocalDataBool:) or KochavaMeasurement.Product/shutdown(deleteLocalDataBool:) which wrap <code>Measurement/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>Measurement/invalidate()</code> discards state, cannot be re-started, and in the case of the shared instance is automatically released.
/// Stop is similar to class Networking 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 Networking var sleepBool exempts certain key features and these can continue to execute while sleep is in effect.
- (void)stop;
/// Stop the measurement instance with advanced options.
/// The primary action of this method is to reset the Networking.General.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>Measurement/invalidate()</code> (or the use of KochavaMeasurement.Product/reset(deleteLocalDataBool:) or KochavaMeasurement.Product/shutdown(deleteLocalDataBool:) which wrap <code>Measurement/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>Measurement/invalidate()</code> discards state, cannot be re-started, and in the case of the shared instance is automatically released.
/// Stop is similar to class Networking 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 Networking 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;
/// Return a description of the instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Invalidate the measurement instance.
/// 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 measurement instance with advanced options.
/// See func <code>Measurement/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;
/// A feature which interfaces with Apple’s SKAdNetwork attribution system.
/// <h1>See</h1>
/// Class <code>Measurement/AdNetwork</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_AdNetwork * _Nonnull adNetwork;
/// A feature which may be used to limit advertising tracking from the level of the application (or host).
/// <h1>See</h1>
/// Class <code>Measurement/AppLimitAdTracking</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_AppLimitAdTracking * _Nonnull appLimitAdTracking;
/// A feature which interfaces with Apple’s App Tracking Transparency system.
/// <h1>See</h1>
/// Class <code>Measurement_AppTrackingTransparency</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_AppTrackingTransparency * _Nonnull appTrackingTransparency;
/// A feature which provides attribution information related to the install.
/// <h1>See</h1>
/// Class <code>Measurement/Attribution</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_Attribution * _Nonnull attribution;
/// A feature which is responsible for custom identifiers.  Register a custom identifier by calling class <code>CustomIdentifier</code> func <code>CustomIdentifier/register(name:identifier:)</code>.
/// <h1>See</h1>
/// Class <code>Measurement/CustomIdentifiers</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_CustomIdentifiers * _Nonnull customIdentifiers;
/// A feature which is responsible for custom values.  Register a custom value by calling class <code>CustomValue</code> func <code>CustomValue/register(name:value:)</code>.
/// <h1>See</h1>
/// Class <code>Measurement/CustomValues</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_CustomValues * _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>Deeplink</code> func <code>Deeplink/process(url:closure_didComplete:)</code>.
/// <h1>See</h1>
/// Class <code>Measurement/Deeplinks</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_Deeplinks * _Nonnull deeplinks;
/// A feature which encapsulates all of the general aspects of a measurement instance not belonging to any other encapsulated features.
/// <h1>See</h1>
/// Class <code>Measurement/General-swift.class</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_General * _Nonnull general;
/// A feature which is responsible for linking identities.  Register an identity link by calling class <code>IdentityLink</code> func <code>IdentityLink/register(name:identifier:)</code>.
/// <h1>See</h1>
/// Class <code>Measurement/IdentityLinking</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_IdentityLinking * _Nonnull identityLinking;
/// A feature which provides information about the install.  The install is automatically sent to Kochava’s servers after starting the measurement instance, and after the retrieval of the measurement’s configuration.
/// <h1>See</h1>
/// Class <code>Measurement/Install</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_Install * _Nonnull install;
/// A feature which is responsible for the identification of an install.  Retrieve the Kochava Install Identifier using class <code>Measurement/InstallIdentifier</code> func <code>Measurement/InstallIdentifier/retrieve(closure_didComplete:)</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_InstallIdentifier * _Nonnull installIdentifier;
/// 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.
/// <h1>See</h1>
/// Class Networking in module KochavaNetworking.
@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>PushNotificationsToken</code> func  <code>PushNotificationsToken/register(data:)</code>.
/// <h1>See</h1>
/// Class <code>Measurement/PushNotifications</code>.
@property (nonatomic, readonly, strong) KVAMeasurement_PushNotifications * _Nonnull pushNotifications;
/// A feature which is responsible for controlling and updating the configuration of the networking instance (as well as any clients, parent or linked).  This is a convenience variable which is fully equivalent to, and interchangeable with, <code>networking</code>.config.
@property (nonatomic, readonly, strong) KVANetworking_Config * _Nonnull config;
/// 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 PrivacyProfile func PrivacyProfile/register(name:datapointKeyArray:).  Enable (or explicitly disable) a profile by calling class Networking.Privacy func Networking/Privacy/setEnabledBool(forProfileNameString:enabledBool:).
/// <h1>See</h1>
/// Class KVAPrivacy in module KochavaNetworking.
@property (nonatomic, readonly, strong) KVANetworking_Privacy * _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;
/// A boolean indicating whether or not the instance has been started.
@property (nonatomic, readonly) BOOL startedBool;
@property (nonatomic, readonly, strong) id <KVACustomIdentifier_Registrar> _Nonnull customIdentifier_registrar;
@property (nonatomic, readonly, strong) id <KVACustomValue_Registrar> _Nonnull customValue_registrar;
@property (nonatomic, readonly, strong) id <KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter> _Nonnull deeplinks_deferredPrefetch_augmenter;
@property (nonatomic, readonly, strong) id <KVADeeplink_Processor> _Nullable deeplink_processor;
@property (nonatomic, readonly, strong) id <KVADeeplink_Wrapper_Registrar> _Nonnull deeplink_wrapper_registrar;
@property (nonatomic, readonly, strong) id <KVAEvent_DefaultParameter_Registrar> _Nonnull event_defaultParameter_registrar;
@property (nonatomic, readonly, strong) id <KVAEvent_Sender> _Nonnull event_sender;
@property (nonatomic, readonly, strong) id <KVAIdentityLink_Registrar> _Nonnull identityLink_registrar;
@property (nonatomic, readonly, strong) id <KVAPrivacyProfile_Registrar> _Nonnull privacyProfile_registrar;
@property (nonatomic, readonly, strong) id <KVAPushNotificationsToken_Registrar> _Nonnull pushNotificationsToken_registrar;
/// A boolean indicating if the shared instance’s networking should link automatically.
/// Default true.  If overridden to false, 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.  Keep in mind that you should expect to need to do the same with any client(s) which would normally automatically link to this client, setting their own boolean to false as well, as those clients could attempt to link as well when their shared instances are accessed for the first time.
/// The presumption is that if you use this feature to disable automatic linking that you would then go on to perform your own linking, making a call to Networking func link(…) as the first interaction(s) you have with the shared instance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL sharedNetworkingLinkAutomaticallyBool;)
+ (BOOL)sharedNetworkingLinkAutomaticallyBool SWIFT_WARN_UNUSED_RESULT;
+ (void)setSharedNetworkingLinkAutomaticallyBool:(BOOL)sharedNetworkingLinkAutomaticallyBool;
/// 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;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement)) <JSExport>
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


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


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which encapsulates all of the general aspects of a measurement instance not belonging to any other feature components.
SWIFT_CLASS_NAMED("General")
@interface KVAMeasurement_General : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which tracks user behavior and actions beyond the install.
SWIFT_CLASS_NAMED("Events")
@interface KVAMeasurement_Events : NSObject <KVAEvent_DefaultParameter_Registrar, KVAEvent_DefaultParameter_RegistrarProvider, KVAEvent_Sender>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)sendEvent:(KVAEvent * _Nonnull)event;
/// Register a default parameter.
/// See class Event.<code>Event/DefaultParameter</code>.
/// \param defaultParameter The default parameter.
///
- (void)register:(KVAEvent_DefaultParameter * _Nonnull)defaultParameter;
@property (nonatomic, readonly, strong) id <KVAEvent_DefaultParameter_Registrar> _Nonnull event_defaultParameter_registrar;
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class KVAPushNotificationsToken;

SWIFT_PROTOCOL_NAMED("PushNotificationsToken_Registrar")
@protocol KVAPushNotificationsToken_Registrar
- (void)registerToken:(KVAPushNotificationsToken * _Nonnull)token;
@end


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


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end



@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end



@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which may be used to limit advertising tracking from the level of the application (or host).
SWIFT_CLASS_NAMED("AppLimitAdTracking")
@interface KVAMeasurement_AppLimitAdTracking : 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


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


SWIFT_PROTOCOL_NAMED("Measurement_Deeplinks_DeferredPrefetch_Augmenter")
@protocol KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter
- (void)augment:(KVADeeplink_DeferredPrefetch * _Nonnull)deferredPrefetch;
@end


/// A feature which measures and processes deeplinks.
SWIFT_CLASS_NAMED("Deeplinks")
@interface KVAMeasurement_Deeplinks : NSObject <NSCopying, KVADeeplink_Processor, KVADeeplink_Wrapper_Registrar, KVADeeplink_Wrapper_RegistrarProvider, KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter, KVAMeasurement_Deeplinks_DeferredPrefetch_AugmenterProvider, KVANetworking_Provider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Register wrapper.
/// \param wrapper The deeplink wrapper.
///
- (void)register:(KVADeeplink_Wrapper * _Nonnull)wrapper;
@property (nonatomic, readonly, strong) id <KVADeeplink_Wrapper_Registrar> _Nonnull deeplink_wrapper_registrar;
/// Augment deferred prefetch.
/// \param deferredPrefetch The deferred prefetch.
///
- (void)augment:(KVADeeplink_DeferredPrefetch * _Nonnull)deferredPrefetch;
@property (nonatomic, readonly, strong) id <KVAMeasurement_Deeplinks_DeferredPrefetch_Augmenter> _Nonnull deeplinks_deferredPrefetch_augmenter;
/// Process a deeplink.
/// \param deeplink An instance of Deeplink.
///
/// \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 KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which is responsible for the identification of an install.
SWIFT_CLASS_NAMED("InstallIdentifier")
@interface KVAMeasurement_InstallIdentifier : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Retrieve the identifier.
/// This is the Kochava Install Identifier.
/// \param closure_didComplete A closure to be called when the retrieval did complete.  The identifier will be passed into this closure as a parameter.  This closure will be called on the Kochava SDK’s globalSerial queue.
///
- (void)retrieveWithClosure_didComplete:(void (^ _Nonnull)(NSString * _Nullable))closure_didComplete;
/// A property containing the unique install identifier that was generated when the measurement instance was first initialized on the current install.
@property (nonatomic, readonly, copy) NSString * _Nullable string SWIFT_DEPRECATED_MSG("Synchronous identifier getter deprecated.  Use Swift func retrieve(closure_didComplete:) instead.  In Objective-C use -retrieveWithClosure_didComplete:", "retrieve(closure_didComplete:)");
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which is responsible for custom identifiers.
SWIFT_CLASS_NAMED("CustomIdentifiers")
@interface KVAMeasurement_CustomIdentifiers : NSObject <NSCopying, KVACustomIdentifier_Registrar, KVACustomIdentifier_RegistrarProvider, KVANetworking_Provider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Register a custom identifier.
/// See class <code>CustomIdentifier</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;
@property (nonatomic, readonly, strong) id <KVACustomIdentifier_Registrar> _Nonnull customIdentifier_registrar;
/// An instance of networking.
@property (nonatomic, strong) KVANetworking * _Nullable networking;
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


/// A feature which is responsible for linking identities.
SWIFT_CLASS_NAMED("IdentityLinking")
@interface KVAMeasurement_IdentityLinking : NSObject <KVAIdentityLink_Registrar, KVAIdentityLink_RegistrarProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Register an identity link.
/// See class <code>IdentityLink</code>.
/// \param identityLink The identity link.
///
- (void)register:(KVAIdentityLink * _Nonnull)identityLink;
@property (nonatomic, readonly, strong) id <KVAIdentityLink_Registrar> _Nonnull identityLink_registrar;
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


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


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


@interface KVAMeasurement (SWIFT_EXTENSION(KochavaMeasurement))
@end


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


/// A feature which interfaces with Apple’s App Tracking Transparency system.
SWIFT_CLASS_NAMED("Measurement_AppTrackingTransparency")
@interface KVAMeasurement_AppTrackingTransparency : NSObject <NSCopying, KVANetworking_Provider>
- (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(visionos,introduced=1.0) 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 provides for attribution through Apple’s Apple Search Ads method 3.
SWIFT_CLASS("_TtCCC18KochavaMeasurement11Measurement14AppleSearchAds7Method3")
@interface Method3 : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface Method3 (SWIFT_EXTENSION(KochavaMeasurement))
@end

@class KochavaNetworking_Product;

/// A class which defines the measurement 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 Product so that it can be represented in Objective-C.  If you use Product it will still build, but the automatic module registration will fail to locate the class when importing pre-compiled xcframeworks (as opposed to swift packages, which do still work).  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, KochavaNetworking.Product does not have this problem, presumably because it’s in the same module as Product.  In order to convert this class to subclass Product, 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("Product")
@interface KochavaMeasurement_Product : NSObject
/// The singleton shared instance.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) KochavaNetworking_Product * _Nonnull shared;)
+ (KochavaNetworking_Product * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSData;

/// A push notifications token.
SWIFT_CLASS_NAMED("PushNotificationsToken")
@interface KVAPushNotificationsToken : NSObject <KVANetworking_Provider>
/// 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 PushNotificationsToken_RegistrarProvider to which to add the token.
///
+ (void)registerWithData:(NSData * _Nonnull)data registrarArray:(NSArray<id <KVAPushNotificationsToken_RegistrarProvider>> * _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 PushNotificationsToken_RegistrarProvider to which to add the token.
///
+ (void)registerWithDataHexString:(NSString * _Nonnull)dataHexString registrarArray:(NSArray<id <KVAPushNotificationsToken_RegistrarProvider>> * _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 Executable and then Networking_Provider.  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.execution.parentExecutor 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




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


@interface KVADeeplink_Wrapper (SWIFT_EXTENSION(KochavaMeasurement))
@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
