#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
#ifndef CONTEXTSDK_SWIFT_H
#define CONTEXTSDK_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)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module"
#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
#pragma clang diagnostic pop
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef unsigned char char8_t;
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 Foundation;
@import ObjectiveC;
@import UIKit;
#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"
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"

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

#if defined(__OBJC__)

SWIFT_CLASS("_TtC10ContextSDK17BaseConfiguration")
@interface BaseConfiguration : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

SWIFT_CLASS("_TtC10ContextSDK18BaseContextManager")
@interface BaseContextManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

SWIFT_CLASS("_TtC10ContextSDK7BaseLog")
@interface BaseLog : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// A customizable object that defines the settings and preferences used to initialize ContextSDK.
SWIFT_CLASS("_TtC10ContextSDK13Configuration")
@interface Configuration : BaseConfiguration
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSString;
@class Log;
SWIFT_CLASS("_TtC10ContextSDK14ContextManager")
@interface ContextManager : BaseContextManager
+ (BOOL)setupWithLicenseKey:(NSString * _Nonnull)licenseKey defaultLogSender:(void (^ _Nullable)(Log * _Nonnull))defaultLogSender configuration:(Configuration * _Nonnull)configuration SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
/// Initializes ContextSDK. Call this once in your <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
/// \param launchOptions The launchOptions as passed by <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
///
/// \param licenseKey Your personal ContextSDK license key specific to the current bundle identifier.
///
///
/// returns:
/// Whether ContextSDK was initialized or not. It will fail if the license key is invalid, for instance.
+ (BOOL)applicationDidFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> * _Nullable)launchOptions licenseKey:(NSString * _Nonnull)licenseKey;
/// Initializes ContextSDK. Call this once in your <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
/// \param launchOptions The launchOptions as passed by <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
///
/// \param licenseKey Your personal ContextSDK license key specific to the current bundle identifier.
///
/// \param configuration Optional configuration option to enable and disable certain signals from being collected.
///
///
/// returns:
/// Whether ContextSDK was initialized or not. It will fail if the license key is invalid, for instance.
+ (BOOL)applicationDidFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> * _Nullable)launchOptions licenseKey:(NSString * _Nonnull)licenseKey configuration:(Configuration * _Nonnull)configuration;
+ (BOOL)setup:(NSString * _Nonnull)licenseKey configuration:(Configuration * _Nonnull)configuration SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
+ (BOOL)setup:(NSString * _Nonnull)licenseKey SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
/// The current version of the ContextSDK.
///
/// returns:
/// A string with the current version of the SDK, following the semantic versioning format, e.g. “5.4.0”.
+ (NSString * _Nonnull)sdkVersion SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents possible outcomes of contexts logged in ContextSDK.
/// Use this enum to categorize the outcomes of user interactions with features like ads, banners, and upsell prompts.
/// The values provide varying levels of granularity for both positive and negative signals. If a given flow only has 2 possible outcomes, we recommend using simply <code>positive</code> and <code>negative</code>.
typedef SWIFT_ENUM(NSInteger, EventOutcome, open) {
/// Optional outcome: The user has tapped on the ad, and followed any external link provided.
  EventOutcomePositiveAdTapped = 4,
/// Optional outcome: The user ended up successfully purchasing the product (all the way through the payment flow).
  EventOutcomePositiveConverted = 3,
/// Optional outcome: The user has tapped on the banner, and started the purchase flow, or read more about the offer.
  EventOutcomePositiveInteracted = 2,
/// The default signal. A generic, positive signal. Use this for the basic ContextSDK integration, e.g. when showing an upsell prompt.
  EventOutcomePositive = 1,
/// Log this when ContextSDK has recommended to skip showing an upsell prompt (<code>Context/shouldUpsell</code> is false). Logging this explicitly is not required if you use <code>ContextManager/optimize(flowName:maxDelay:customSignals:callback:)</code> as it will be handled by ContextSDK automatically.
  EventOutcomeSkipped = 0,
/// A generic, negative signal. Use this for the basic ContextSDK integration, on a user e.g. declining or dismissing an upsell prompt.
  EventOutcomeNegative = -1,
/// Optional outcome: Use this as a negative signal of a user not interacting with e.g. a banner. Depending on your app, we may recommend to log this when the app is put into the background, and hasn’t interacted with a banner in any way. This can be done using the <code>Context/logIfNotLoggedYet(_:)</code> method.
  EventOutcomeNegativeNotInteracted = -2,
/// Optional outcome: The user has actively dismissed the banner (e.g. using a close button).
  EventOutcomeNegativeDismissed = -3,
};

/// This class represents all signals, ready to be logged (sent to a backend), of a single ContextSDK event.
SWIFT_CLASS("_TtC10ContextSDK3Log")
@interface Log : BaseLog
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Calibrates a context with the given parameters.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context to calibrate.
///
/// \param customSignalsID The ID of the custom signals to use.
///
/// \param flowNameC A C-style string representing the flow name.
///
/// \param maxDelay The maximum delay for calibration in seconds.
///
/// \param callback A callback function to execute after calibration.
///
SWIFT_EXTERN void contextSDK_calibrate(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t maxDelay, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Adds a custom signal with a Boolean value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The Boolean value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalBool(int32_t contextID, char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Adds a custom signal with a floating-point value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The floating-point value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalFloat(int32_t contextID, char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Adds a custom signal with an integer value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The integer value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalInt(int32_t contextID, char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Adds a custom signal with a string value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param valueC A C-style string representing the value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalString(int32_t contextID, char const * _Nonnull idC, char const * _Nonnull valueC) SWIFT_NOEXCEPT;

/// Appends Boolean metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The Boolean value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataBool(int32_t contextID, char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Appends floating-point metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The floating-point value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataFloat(int32_t contextID, char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Appends integer metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The integer value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataInt(int32_t contextID, char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Appends string metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param valueC A C-style string representing the value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataString(int32_t contextID, char const * _Nonnull idC, char const * _Nonnull valueC) SWIFT_NOEXCEPT;

/// Logs the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param outcome The outcome to log.
///
SWIFT_EXTERN void contextSDK_context_log(int32_t contextID, int32_t outcome) SWIFT_NOEXCEPT;

/// Logs the outcome of a specific context if it hasn’t been logged yet.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param outcome The outcome to log.
///
SWIFT_EXTERN void contextSDK_context_logIfNotLoggedYet(int32_t contextID, int32_t outcome) SWIFT_NOEXCEPT;

/// Determines whether a specific context should trigger an upsell.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
///
/// returns:
/// A Boolean indicating whether an upsell should be triggered.
SWIFT_EXTERN BOOL contextSDK_context_shouldUpsell(int32_t contextID) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Validates a specific context and returns the result as a string.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
///
/// returns:
/// A C-style string containing the validation result.
SWIFT_EXTERN char const * _Nonnull contextSDK_context_validate(int32_t contextID) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

SWIFT_EXTERN void contextSDK_fetchContext_string(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t duration, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Retrieves the next available context ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
///
/// returns:
/// A unique <code>Int32</code> identifier for a new context.
SWIFT_EXTERN int32_t contextSDK_getNextContextID(void) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Instantiates a context with the given parameters.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param flowNameC A C-style string representing the flow name.
///
/// \param customSignalsID The ID of the custom signals to use.
///
/// \param duration The duration of the context in seconds.
///
///
/// returns:
/// The ID of the newly created context.
SWIFT_EXTERN int32_t contextSDK_instantContext(char const * _Nonnull flowNameC, int32_t customSignalsID, int32_t duration) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

SWIFT_EXTERN void contextSDK_optimize_string(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t maxDelay, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Retrieves the most recent context for a given flow name.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param flowNameC A C-style string representing the flow name.
///
///
/// returns:
/// The ID of the most recent context, or -1 if no context is found.
SWIFT_EXTERN int32_t contextSDK_recentContext(char const * _Nonnull flowNameC) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Releases the context associated with the given ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context to release.
///
SWIFT_EXTERN void contextSDK_releaseContext(int32_t contextID) SWIFT_NOEXCEPT;

/// Releases the custom signals associated with the given context ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context whose custom signals should be released.
///
SWIFT_EXTERN void contextSDK_releaseCustomSignals(int32_t contextID) SWIFT_NOEXCEPT;

/// Enables or disables control mode.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param enabled A Boolean value indicating whether control mode should be enabled.
///
SWIFT_EXTERN void contextSDK_setControlMode(BOOL enabled) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a Boolean value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The Boolean value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalBool(char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a floating-point value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The floating-point value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalFloat(char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with an integer value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The integer value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalInt(char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a string value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param valueC A C-style string representing the value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalString(char const * _Nonnull idC, char const * _Nullable valueC) SWIFT_NOEXCEPT;

/// Sets up the Context Manager with the provided API backend license key.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param licenseKeyC A C-style string containing the license key.
///
SWIFT_EXTERN void contextSDK_setupContextManagerWithAPIBackend(char const * _Nonnull licenseKeyC) SWIFT_NOEXCEPT;

/// Tracks a custom event with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param eventNameC A C-style string representing the event name.
///
/// \param customSignalsID The ID of the custom signals to associate with the event.
///
SWIFT_EXTERN void contextSDK_trackEvent(char const * _Nonnull eventNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

/// Tracks a page view with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param pageNameC A C-style string representing the page name.
///
/// \param customSignalsID The ID of the custom signals to associate with the page view.
///
SWIFT_EXTERN void contextSDK_trackPageView(char const * _Nonnull pageNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

/// Tracks a user action with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param userActionNameC A C-style string representing the user action name.
///
/// \param customSignalsID The ID of the custom signals to associate with the action.
///
SWIFT_EXTERN void contextSDK_trackUserAction(char const * _Nonnull userActionNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

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

#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
#ifndef CONTEXTSDK_SWIFT_H
#define CONTEXTSDK_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)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module"
#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
#pragma clang diagnostic pop
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef unsigned char char8_t;
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 Foundation;
@import ObjectiveC;
@import UIKit;
#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"
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"

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

#if defined(__OBJC__)

SWIFT_CLASS("_TtC10ContextSDK17BaseConfiguration")
@interface BaseConfiguration : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

SWIFT_CLASS("_TtC10ContextSDK18BaseContextManager")
@interface BaseContextManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

SWIFT_CLASS("_TtC10ContextSDK7BaseLog")
@interface BaseLog : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// A customizable object that defines the settings and preferences used to initialize ContextSDK.
SWIFT_CLASS("_TtC10ContextSDK13Configuration")
@interface Configuration : BaseConfiguration
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSString;
@class Log;
SWIFT_CLASS("_TtC10ContextSDK14ContextManager")
@interface ContextManager : BaseContextManager
+ (BOOL)setupWithLicenseKey:(NSString * _Nonnull)licenseKey defaultLogSender:(void (^ _Nullable)(Log * _Nonnull))defaultLogSender configuration:(Configuration * _Nonnull)configuration SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
/// Initializes ContextSDK. Call this once in your <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
/// \param launchOptions The launchOptions as passed by <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
///
/// \param licenseKey Your personal ContextSDK license key specific to the current bundle identifier.
///
///
/// returns:
/// Whether ContextSDK was initialized or not. It will fail if the license key is invalid, for instance.
+ (BOOL)applicationDidFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> * _Nullable)launchOptions licenseKey:(NSString * _Nonnull)licenseKey;
/// Initializes ContextSDK. Call this once in your <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
/// \param launchOptions The launchOptions as passed by <code>UIApplicationDelegate</code>’s <code>application:didFinishLaunchingWithOptions:</code> method.
///
/// \param licenseKey Your personal ContextSDK license key specific to the current bundle identifier.
///
/// \param configuration Optional configuration option to enable and disable certain signals from being collected.
///
///
/// returns:
/// Whether ContextSDK was initialized or not. It will fail if the license key is invalid, for instance.
+ (BOOL)applicationDidFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> * _Nullable)launchOptions licenseKey:(NSString * _Nonnull)licenseKey configuration:(Configuration * _Nonnull)configuration;
+ (BOOL)setup:(NSString * _Nonnull)licenseKey configuration:(Configuration * _Nonnull)configuration SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
+ (BOOL)setup:(NSString * _Nonnull)licenseKey SWIFT_DEPRECATED_MSG("", "applicationDidFinishLaunchingWithOptions:licenseKey:");
/// The current version of the ContextSDK.
///
/// returns:
/// A string with the current version of the SDK, following the semantic versioning format, e.g. “5.4.0”.
+ (NSString * _Nonnull)sdkVersion SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents possible outcomes of contexts logged in ContextSDK.
/// Use this enum to categorize the outcomes of user interactions with features like ads, banners, and upsell prompts.
/// The values provide varying levels of granularity for both positive and negative signals. If a given flow only has 2 possible outcomes, we recommend using simply <code>positive</code> and <code>negative</code>.
typedef SWIFT_ENUM(NSInteger, EventOutcome, open) {
/// Optional outcome: The user has tapped on the ad, and followed any external link provided.
  EventOutcomePositiveAdTapped = 4,
/// Optional outcome: The user ended up successfully purchasing the product (all the way through the payment flow).
  EventOutcomePositiveConverted = 3,
/// Optional outcome: The user has tapped on the banner, and started the purchase flow, or read more about the offer.
  EventOutcomePositiveInteracted = 2,
/// The default signal. A generic, positive signal. Use this for the basic ContextSDK integration, e.g. when showing an upsell prompt.
  EventOutcomePositive = 1,
/// Log this when ContextSDK has recommended to skip showing an upsell prompt (<code>Context/shouldUpsell</code> is false). Logging this explicitly is not required if you use <code>ContextManager/optimize(flowName:maxDelay:customSignals:callback:)</code> as it will be handled by ContextSDK automatically.
  EventOutcomeSkipped = 0,
/// A generic, negative signal. Use this for the basic ContextSDK integration, on a user e.g. declining or dismissing an upsell prompt.
  EventOutcomeNegative = -1,
/// Optional outcome: Use this as a negative signal of a user not interacting with e.g. a banner. Depending on your app, we may recommend to log this when the app is put into the background, and hasn’t interacted with a banner in any way. This can be done using the <code>Context/logIfNotLoggedYet(_:)</code> method.
  EventOutcomeNegativeNotInteracted = -2,
/// Optional outcome: The user has actively dismissed the banner (e.g. using a close button).
  EventOutcomeNegativeDismissed = -3,
};

/// This class represents all signals, ready to be logged (sent to a backend), of a single ContextSDK event.
SWIFT_CLASS("_TtC10ContextSDK3Log")
@interface Log : BaseLog
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Calibrates a context with the given parameters.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context to calibrate.
///
/// \param customSignalsID The ID of the custom signals to use.
///
/// \param flowNameC A C-style string representing the flow name.
///
/// \param maxDelay The maximum delay for calibration in seconds.
///
/// \param callback A callback function to execute after calibration.
///
SWIFT_EXTERN void contextSDK_calibrate(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t maxDelay, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Adds a custom signal with a Boolean value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The Boolean value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalBool(int32_t contextID, char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Adds a custom signal with a floating-point value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The floating-point value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalFloat(int32_t contextID, char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Adds a custom signal with an integer value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param value The integer value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalInt(int32_t contextID, char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Adds a custom signal with a string value to a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the signal ID.
///
/// \param valueC A C-style string representing the value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_context_addCustomSignalString(int32_t contextID, char const * _Nonnull idC, char const * _Nonnull valueC) SWIFT_NOEXCEPT;

/// Appends Boolean metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The Boolean value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataBool(int32_t contextID, char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Appends floating-point metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The floating-point value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataFloat(int32_t contextID, char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Appends integer metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param value The integer value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataInt(int32_t contextID, char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Appends string metadata to the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param idC A C-style string representing the metadata ID.
///
/// \param valueC A C-style string representing the value to append as metadata.
///
SWIFT_EXTERN void contextSDK_context_appendOutcomeMetadataString(int32_t contextID, char const * _Nonnull idC, char const * _Nonnull valueC) SWIFT_NOEXCEPT;

/// Logs the outcome of a specific context.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param outcome The outcome to log.
///
SWIFT_EXTERN void contextSDK_context_log(int32_t contextID, int32_t outcome) SWIFT_NOEXCEPT;

/// Logs the outcome of a specific context if it hasn’t been logged yet.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
/// \param outcome The outcome to log.
///
SWIFT_EXTERN void contextSDK_context_logIfNotLoggedYet(int32_t contextID, int32_t outcome) SWIFT_NOEXCEPT;

/// Determines whether a specific context should trigger an upsell.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
///
/// returns:
/// A Boolean indicating whether an upsell should be triggered.
SWIFT_EXTERN BOOL contextSDK_context_shouldUpsell(int32_t contextID) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Validates a specific context and returns the result as a string.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context.
///
///
/// returns:
/// A C-style string containing the validation result.
SWIFT_EXTERN char const * _Nonnull contextSDK_context_validate(int32_t contextID) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

SWIFT_EXTERN void contextSDK_fetchContext_string(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t duration, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Retrieves the next available context ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
///
/// returns:
/// A unique <code>Int32</code> identifier for a new context.
SWIFT_EXTERN int32_t contextSDK_getNextContextID(void) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Instantiates a context with the given parameters.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param flowNameC A C-style string representing the flow name.
///
/// \param customSignalsID The ID of the custom signals to use.
///
/// \param duration The duration of the context in seconds.
///
///
/// returns:
/// The ID of the newly created context.
SWIFT_EXTERN int32_t contextSDK_instantContext(char const * _Nonnull flowNameC, int32_t customSignalsID, int32_t duration) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

SWIFT_EXTERN void contextSDK_optimize_string(int32_t contextID, int32_t customSignalsID, char const * _Nonnull flowNameC, int32_t maxDelay, void (* _Nonnull callback)(int32_t)) SWIFT_NOEXCEPT;

/// Retrieves the most recent context for a given flow name.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param flowNameC A C-style string representing the flow name.
///
///
/// returns:
/// The ID of the most recent context, or -1 if no context is found.
SWIFT_EXTERN int32_t contextSDK_recentContext(char const * _Nonnull flowNameC) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT;

/// Releases the context associated with the given ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context to release.
///
SWIFT_EXTERN void contextSDK_releaseContext(int32_t contextID) SWIFT_NOEXCEPT;

/// Releases the custom signals associated with the given context ID.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param contextID The ID of the context whose custom signals should be released.
///
SWIFT_EXTERN void contextSDK_releaseCustomSignals(int32_t contextID) SWIFT_NOEXCEPT;

/// Enables or disables control mode.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param enabled A Boolean value indicating whether control mode should be enabled.
///
SWIFT_EXTERN void contextSDK_setControlMode(BOOL enabled) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a Boolean value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The Boolean value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalBool(char const * _Nonnull idC, BOOL value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a floating-point value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The floating-point value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalFloat(char const * _Nonnull idC, float value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with an integer value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param value The integer value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalInt(char const * _Nonnull idC, int32_t value) SWIFT_NOEXCEPT;

/// Sets a global custom signal with a string value.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param idC A C-style string representing the signal ID.
///
/// \param valueC A C-style string representing the value to associate with the signal.
///
SWIFT_EXTERN void contextSDK_setGlobalCustomSignalString(char const * _Nonnull idC, char const * _Nullable valueC) SWIFT_NOEXCEPT;

/// Sets up the Context Manager with the provided API backend license key.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param licenseKeyC A C-style string containing the license key.
///
SWIFT_EXTERN void contextSDK_setupContextManagerWithAPIBackend(char const * _Nonnull licenseKeyC) SWIFT_NOEXCEPT;

/// Tracks a custom event with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param eventNameC A C-style string representing the event name.
///
/// \param customSignalsID The ID of the custom signals to associate with the event.
///
SWIFT_EXTERN void contextSDK_trackEvent(char const * _Nonnull eventNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

/// Tracks a page view with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param pageNameC A C-style string representing the page name.
///
/// \param customSignalsID The ID of the custom signals to associate with the page view.
///
SWIFT_EXTERN void contextSDK_trackPageView(char const * _Nonnull pageNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

/// Tracks a user action with the given name and custom signals.
/// <em>Note:</em> This method is intended for cross-platform interoperability only.
/// \param userActionNameC A C-style string representing the user action name.
///
/// \param customSignalsID The ID of the custom signals to associate with the action.
///
SWIFT_EXTERN void contextSDK_trackUserAction(char const * _Nonnull userActionNameC, int32_t customSignalsID) SWIFT_NOEXCEPT;

#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
