#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.2.3 effective-5.10 (swiftlang-6.2.3.3.21 clang-1700.6.3.2)
#ifndef AATKIT_SWIFT_H
#define AATKIT_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 CoreFoundation;
@import CoreLocation;
@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="AATKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

SWIFT_CLASS("_TtC6AATKit19AATAbstractAdConfig")
@interface AATAbstractAdConfig : NSObject <NSCopying>
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents possible positions for the AdChoices icon on a native ad.
typedef SWIFT_ENUM(NSInteger, AATAdChoicesIconPosition, closed) {
/// Position the AdChoices icon at the top-left corner.
  AATAdChoicesIconPositionTopLeft = 0,
/// Position the AdChoices icon at the top-right corner.
  AATAdChoicesIconPositionTopRight = 1,
/// Position the AdChoices icon at the bottom-left corner.
  AATAdChoicesIconPositionBottomLeft = 2,
/// Position the AdChoices icon at the bottom-right corner.
  AATAdChoicesIconPositionBottomRight = 3,
};

SWIFT_CLASS("_TtC6AATKit11AATAdConfig")
@interface AATAdConfig : AATAbstractAdConfig
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@interface AATAdConfig (SWIFT_EXTENSION(AATKit))
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

@class NSString;
@interface AATAdConfig (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly) NSUInteger hash;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

SWIFT_CLASS("_TtC6AATKit14AATAdDebugInfo")
@interface AATAdDebugInfo : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATPlacement;
/// Conform to this protocol to be notified about the ads display events
SWIFT_PROTOCOL("_TtP6AATKit20AATAdDisplayDelegate_")
@protocol AATAdDisplayDelegate
/// This method will be called when the app is paused for an ad.
/// <em>NOTE:</em> This callback is unreliable due to inconsistent use of callbacks in different ad network SDKs.
- (void)aatPauseForAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
/// This method will be called when the app resumes after displaying an ad
/// <em>NOTE:</em> This callback is unreliable due to inconsistent use of callbacks in different ad network SDKs.
- (void)aatResumeAfterAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

@class AATPriceInfo;
/// Contains information about an ad, including its pricing details.
SWIFT_CLASS("_TtC6AATKit9AATAdInfo")
@interface AATAdInfo : NSObject
/// The price information associated with the ad.
@property (nonatomic, readonly, strong) AATPriceInfo * _Nullable priceInfo;
/// A string representation of the <code>AATAdInfo</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATAdMobCustomEventsDelegate;
SWIFT_PROTOCOL("_TtP6AATKit20AATAdMobCustomEvents_")
@protocol AATAdMobCustomEvents
- (void)setCustomEventDelegate:(id <AATAdMobCustomEventsDelegate> _Nonnull)delegate;
@end

@class AATReward;
SWIFT_PROTOCOL("_TtP6AATKit28AATAdMobCustomEventsDelegate_")
@protocol AATAdMobCustomEventsDelegate
- (void)customEventLoaderDidFailAd;
- (void)customEventLoaderDidReceiveAd;
- (void)customEventReportImpression;
- (void)customEventWillPresentModal;
- (void)customEventWillDismissModal;
- (void)customEventDidDismissModal;
- (void)customEventWasClicked;
- (void)didRewardUserWithReward:(AATReward * _Nonnull)reward;
@end

/// Configuration options for AdMob ads.
SWIFT_CLASS("_TtC6AATKit15AATAdMobOptions")
@interface AATAdMobOptions : NSObject
/// Initializes a new instance of <code>AATAdMobOptions</code>.
/// \param inlineBannerMaxHeight The maximum height for AdMob inline adaptive banners.
///
- (nonnull instancetype)initWithInlineBannerMaxHeight:(NSInteger)inlineBannerMaxHeight OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents supported ad networks used by AATKit.
/// This enum lists all the ad networks integrated with the SDK.
typedef SWIFT_ENUM(NSInteger, AATAdNetwork, open) {
/// InMobi ad network.
  AATAdNetworkINMOBI = 0,
/// Mintegral ad network.
  AATAdNetworkMINTEGRAL = 1,
/// Google AdMob ad network.
  AATAdNetworkADMOB = 2,
/// Represents no ad network.
  AATAdNetworkEMPTY = 3,
/// AppLovin ad network.
  AATAdNetworkAPPLOVIN = 4,
/// SmartAd ad network.
  AATAdNetworkSMARTAD = 5,
/// SmartAd Server Direct integration.
  AATAdNetworkSMARTADSERVERDIRECT = 6,
/// RTB2 ad network.
  AATAdNetworkRTB2 = 7,
/// Google AdManager (DFP).
  AATAdNetworkDFP = 8,
/// Facebook Audience Network.
  AATAdNetworkFACEBOOK = 9,
/// FeedAd network.
  AATAdNetworkFEEDAD = 10,
/// Unity Ads network.
  AATAdNetworkUNITY = 11,
/// AppNexus (Xandr) ad network.
  AATAdNetworkAPPNEXUS = 12,
/// Ogury ad network.
  AATAdNetworkOGURY = 13,
/// Amazon Header Bidding.
  AATAdNetworkAMAZONHB = 14,
/// PubNative (HyBid) ad network.
  AATAdNetworkPUBNATIVE = 15,
/// Teads ad network.
  AATAdNetworkTEADS = 16,
/// Tappx ad network.
  AATAdNetworkTAPPX = 17,
/// YOC ad network.
  AATAdNetworkYOC = 18,
/// Vungle ad network.
  AATAdNetworkVUNGLE2 = 19,
/// DFP Direct integration.
  AATAdNetworkDFPDIRECT = 20,
/// IronSource  ad network.
  AATAdNetworkIRONSOURCENEW = 21,
/// Gravite RTBSDK ad network.
  AATAdNetworkGRAVITERTB = 22,
/// SuperAwesome ad network.
  AATAdNetworkSUPERAWESOME = 23,
/// Kidoz ad network.
  AATAdNetworkKIDOZ = 24,
/// Display IO ad network.
  AATAdNetworkDISPLAYIO = 25,
/// AdMob bidding network, used internally.
  AATAdNetworkADMOBBIDDING = 26,
/// Meta bidding network, used internally.
  AATAdNetworkMETABIDDING = 27,
  AATAdNetworkMOLOCOBIDDING = 28,
/// Vungle bidding network, used internally.
  AATAdNetworkVUNGLEBIDDING = 29,
};

SWIFT_PROTOCOL("_TtP6AATKit16AATInitializable_")
@protocol AATInitializable
- (nonnull instancetype)init;
@end

SWIFT_PROTOCOL("_TtP6AATKit33AATAdNetworkDriverVersionProtocol_")
@protocol AATAdNetworkDriverVersionProtocol <AATInitializable>
- (NSString * _Nonnull)getVersion SWIFT_WARN_UNUSED_RESULT;
@end

@class AATAppNexusOptions;
@class AATFeedAdOptions;
@class AATDFPOptions;
@class AATSuperAwesomeOptions;
@class AATGraviteRTBOptions;
@class AATDisplayIOOptions;
@class AATMetaBiddingOptions;
/// Configuration container for multiple ad network options.
/// This class aggregates the configuration options for various supported ad networks,
/// allowing easy setup of network-specific settings in one place.
SWIFT_CLASS("_TtC6AATKit20AATAdNetworksOptions")
@interface AATAdNetworksOptions : NSObject
/// Initializes a new instance of <code>AATAdNetworksOptions</code> with optional parameters.
/// \param appNexusOptions Configuration for AppNexus. Defaults to <code>nil</code>.
///
/// \param feedAdOptions Configuration for feed ads. Defaults to <code>nil</code>.
///
/// \param adMobOptions Configuration for AdMob. Defaults to <code>nil</code>.
///
/// \param dfpOptions Configuration for DFP. Defaults to <code>nil</code>.
///
/// \param superAwesomeOptions Configuration for SuperAwesome. Defaults to <code>nil</code>.
///
/// \param graviteRTBOptions Configuration for Gravite RTB SDK. Defaults to <code>nil</code>.
///
/// \param displayIOOptions Configuration for Display IO. Defaults to <code>nil</code>.
///
/// \param metaBiddingOptions Configuration for Meta bidding. Defaults to <code>nil</code>.
///
- (nonnull instancetype)initWithAppNexusOptions:(AATAppNexusOptions * _Nullable)appNexusOptions feedAdOptions:(AATFeedAdOptions * _Nullable)feedAdOptions adMobOptions:(AATAdMobOptions * _Nullable)adMobOptions dfpOptions:(AATDFPOptions * _Nullable)dfpOptions superAwesomeOptions:(AATSuperAwesomeOptions * _Nullable)superAwesomeOptions graviteRTBOptions:(AATGraviteRTBOptions * _Nullable)graviteRTBOptions displayIOOptions:(AATDisplayIOOptions * _Nullable)displayIOOptions metaBiddingOptions:(AATMetaBiddingOptions * _Nullable)metaBiddingOptions OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_PROTOCOL("_TtP6AATKit20AATAdQualityDelegate_")
@protocol AATAdQualityDelegate
/// /// Called when the ad should be blocked or reported
/// \param placement placement instance
///
/// \param blockReasons Blocked reason string array
///
/// \param reportReasons Reported reason string array
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdIncidentWithPlacement:(id <AATPlacement> _Nonnull)placement blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when the ad should be blocked or reported after display
/// \param placement placement instance
///
/// \param blockReasons Blocked reason string array
///
/// \param reportReasons Reported reason string array
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdIncidentOnDisplayWithPlacement:(id <AATPlacement> _Nonnull)placement blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when an ad is successfully verified
/// \param placement placement instance
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdVerifiedWithPlacement:(id <AATPlacement> _Nonnull)placement adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when the ad is not verified within the specified time or for unsupported adNetworkSdk
/// \param placement placement instance
///
/// \param error The error describing the ad not verified state
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdNotVerifiedWithPlacement:(id <AATPlacement> _Nonnull)placement error:(NSError * _Nonnull)error adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
@end

enum AATAdType : NSInteger;
SWIFT_PROTOCOL("_TtP6AATKit26AATAdQualityDriverDelegate_")
@protocol AATAdQualityDriverDelegate
- (void)didAdVerifiedWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdNotVerifiedWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat error:(NSError * _Nonnull)error adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdIncidentWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdIncidentOnDisplayWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
@end

SWIFT_PROTOCOL("_TtP6AATKit26AATAdQualityDriverProtocol_")
@protocol AATAdQualityDriverProtocol
@property (nonatomic, strong) id <AATAdQualityDriverDelegate> _Nullable delegate;
- (void)verifyAdWithAd:(NSObject * _Nonnull)ad adNetwork:(enum AATAdNetwork)adNetwork format:(enum AATAdType)format adUnitId:(NSString * _Nullable)adUnitId;
- (void)willDisplayAdWithAd:(NSObject * _Nonnull)ad adNetwork:(enum AATAdNetwork)adNetwork format:(enum AATAdType)format adUnitId:(NSString * _Nullable)adUnitId;
- (void)didClickAdWithAd:(NSObject * _Nonnull)ad;
- (void)removeAdWithAd:(NSObject * _Nonnull)ad;
@end

SWIFT_PROTOCOL("_TtP6AATKit27AATAdQualityManagerProtocol_")
@protocol AATAdQualityManagerProtocol
- (id <AATAdQualityDriverProtocol> _Nonnull)initDriver SWIFT_METHOD_FAMILY(none) SWIFT_WARN_UNUSED_RESULT;
@end

/// Represents the ad formats supported by AATKit.
typedef SWIFT_ENUM(NSInteger, AATAdType, open) {
/// Fullscreen ads, covering the entire screen.
  AATAdTypeFullscreen = 0,
/// Banner ads.
  AATAdTypeBanner = 1,
/// Native ads, integrated within app content.
  AATAdTypeNative = 2,
/// Rewarded ads that offer incentives to users.
  AATAdTypeRewarded = 3,
/// App open ads.
  AATAdTypeAppOpen = 4,
};

@class NSNumber;
enum ClickThroughAction : NSInteger;
/// Configuration options for AppNexus ads.
SWIFT_CLASS("_TtC6AATKit18AATAppNexusOptions")
@interface AATAppNexusOptions : NSObject
/// Initializes a new instance of <code>AATAppNexusOptions</code>.
/// \param autoCloseTime Optional delay in seconds after which a full-screen ad will be dismissed. Default is <code>nil</code>.
///
/// \param supportNativeBanner Boolean indicating if banner ads can serve native ads. Default is <code>false</code>.
///
/// \param clickThroughAction Specifies what happens when a user clicks on an ad.
///
- (nonnull instancetype)initWithAutoCloseTime:(NSNumber * _Nullable)autoCloseTime supportNativeBanner:(BOOL)supportNativeBanner clickThroughAction:(enum ClickThroughAction)clickThroughAction OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Defines how an ad click is handled when the user taps on it.
typedef SWIFT_ENUM(NSInteger, ClickThroughAction, open) {
/// Uses the SDK’s default click-through behavior.
  ClickThroughActionDefault = 0,
/// Opens ad in the system browser.
  ClickThroughActionOpenDeviceBrowser = 1,
/// Opens the ad in an in-app browser.
  ClickThroughActionOpenSDKBrowser = 2,
};

SWIFT_PROTOCOL("_TtP6AATKit12AATPlacement_")
@protocol AATPlacement
/// Get placement name.
///
/// returns:
/// The placement name.
- (NSString * _Nonnull)getName SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATAppOpenPlacementDelegate;
@protocol AATStatisticsDelegate;
@protocol AATImpressionDelegate;
SWIFT_PROTOCOL("_TtP6AATKit21AATAppOpenAdPlacement_")
@protocol AATAppOpenAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATAppOpenPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to be notified when there is no ad available
SWIFT_PROTOCOL("_TtP6AATKit15AATNoAdDelegate_")
@protocol AATNoAdDelegate
/// This method will be called when there is no ad available
- (void)aatNoAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

/// Conform to this protocol to be notified when there is an ad
SWIFT_PROTOCOL("_TtP6AATKit17AATHaveAdDelegate_")
@protocol AATHaveAdDelegate
/// This method will be called when there is an ad
- (void)aatHaveAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

/// Conform to this protocol to listen to the AATFullscreenPlacement events
SWIFT_PROTOCOL("_TtP6AATKit30AATFullscreenPlacementDelegate_")
@protocol AATFullscreenPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

/// Conform to this protocol to listen to the AATAppOpenPlacement events
SWIFT_PROTOCOL("_TtP6AATKit27AATAppOpenPlacementDelegate_")
@protocol AATAppOpenPlacementDelegate <AATFullscreenPlacementDelegate>
@end

@protocol AATInfeedBannerPlacementDelegate;
@class AATCollapsibleBannerOptions;
@class AATBannerRequest;
@class AATBannerPlacementWrapperView;
@class AATPlacementHistoryInfo;
SWIFT_PROTOCOL("_TtP6AATKit29AATAsyncInfeedBannerPlacement_")
@protocol AATAsyncInfeedBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATInfeedBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Request banner ad from the placement
/// \param request the <code>AATBannerRequest</code> to be used
///
/// \param completionHandler completion block
///
///
/// returns:
/// <code>AATBannerPlacementWrapperView</code>
- (void)requestAdWithRequest:(AATBannerRequest * _Nonnull)request completionHandler:(void (^ _Nonnull)(AATBannerPlacementWrapperView * _Nullable))completionHandler;
/// Manually Count an Ad Space
- (void)countAdSpace;
/// Enables keeping creatives history
/// \param size Maximum number of creatives to keep
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Get saved creatives history
/// \param completion An array of <code>AATPlacementHistoryInfo</code> representing creatives history
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

@protocol AATAsyncNativePlacementDelegate;
@protocol AATNativeAdData;
SWIFT_PROTOCOL("_TtP6AATKit25AATAsyncNativeAdPlacement_")
@protocol AATAsyncNativeAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATAsyncNativePlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Requests placement reload
///
/// returns:
/// AATNativeAdData
- (void)reloadWithCompletionHandler:(void (^ _Nonnull)(id <AATNativeAdData> _Nullable))completionHandler;
/// Returns how many ads are currently loading for given native ad placement.
///
/// returns:
/// Number of ads that are currently loading for given placement.
- (NSInteger)getNumberOfCurrentlyLoadingNativeAds SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Manually Count an Ad Space
- (BOOL)reportAdSpace SWIFT_WARN_UNUSED_RESULT;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to listen to the AATAsyncNativePlacement events
SWIFT_PROTOCOL("_TtP6AATKit31AATAsyncNativePlacementDelegate_")
@protocol AATAsyncNativePlacementDelegate <AATAdDisplayDelegate>
@end

@protocol AATAutoLoadBannerPlacementDelegate;
@class UIView;
@class UIImage;
@class AATBannerAlign;
SWIFT_PROTOCOL("_TtP6AATKit26AATAutoLoadBannerPlacement_")
@protocol AATAutoLoadBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATAutoLoadBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Returns placement view. Works only for banner placements.
///
/// returns:
/// Placement view
- (UIView * _Nullable)getPlacementView SWIFT_WARN_UNUSED_RESULT;
/// Sets placement default image. This image will be shown in placement when no ad is available.
/// \param image The image to set.
///
- (void)setDefaultImageWithImage:(UIImage * _Nonnull)image;
/// Sets gravity for ads that don’t fill entire placement area. Works only for sticky banner placements.
/// \param alignment The alignment to set.
///
- (void)setBannerAlignWithAlignment:(AATBannerAlign * _Nonnull)alignment;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATStaticBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit34AATAutoLoadBannerPlacementDelegate_")
@protocol AATAutoLoadBannerPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

@protocol AATAutoLoadMultiSizeBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit35AATAutoLoadMultiSizeBannerPlacement_")
@protocol AATAutoLoadMultiSizeBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATAutoLoadMultiSizeBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATMultiSizeBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit43AATAutoLoadMultiSizeBannerPlacementDelegate_")
@protocol AATAutoLoadMultiSizeBannerPlacementDelegate <AATAdDisplayDelegate, AATNoAdDelegate>
/// This method will be called when there is an ad
- (void)aatHaveAdWithBannerViewWithPlacement:(id <AATPlacement> _Nonnull)placement bannerView:(AATBannerPlacementWrapperView * _Nonnull)bannerView;
@end

enum VerticalAlign : NSInteger;
enum HorizontalAlign : NSInteger;
/// <code>AATBannerAlign</code> defines the alignment of a banner within its superview.
SWIFT_CLASS("_TtC6AATKit14AATBannerAlign")
@interface AATBannerAlign : NSObject
/// Banner vertical alignment of type <code>VerticalAlign</code>.
@property (nonatomic, readonly) enum VerticalAlign verticalAlign;
/// Banner horizontal alignment of type <code>HorizontalAlign</code>.
@property (nonatomic, readonly) enum HorizontalAlign horizontalAlign;
/// Creates a new instance of <code>AATBannerAlign</code>.
/// \param horizontalAlign The horizontal alignment for the banner.
///
/// \param verticalAlign The vertical alignment for the banner.
///
- (nonnull instancetype)initWithHorizontalAlign:(enum HorizontalAlign)horizontalAlign verticalAlign:(enum VerticalAlign)verticalAlign OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// <code>HorizontalAlign</code> specifies the possible horizontal alignments for a banner.
typedef SWIFT_ENUM(NSInteger, HorizontalAlign, open) {
/// Aligns the banner to the leading (left in LTR, right in RTL) edge of the superview.
  HorizontalAlignLeading = 0,
/// Aligns the banner to the trailing (right in LTR, left in RTL) edge of the superview.
  HorizontalAlignTrailing = 1,
/// Aligns the banner to the center of the superview horizontally.
  HorizontalAlignCenter = 2,
};

/// <code>VerticalAlign</code> specifies the possible vertical alignments for a banner.
typedef SWIFT_ENUM(NSInteger, VerticalAlign, open) {
/// Aligns the banner to the top edge of the superview.
  VerticalAlignTop = 0,
/// Aligns the banner to the bottom edge of the superview.
  VerticalAlignBottom = 1,
/// Aligns the banner to the center of the superview vertically.
  VerticalAlignCenter = 2,
};

@protocol AATBannerCacheStatusDelegate;
/// A cache of automatically preloaded banner ads.
/// The cache will always try to have a defined amount of banners available for immediate handout to the app whenever they are needed. <em>Note:</em> The BannerCache needs to be destroyed when no longer needed.
SWIFT_PROTOCOL("_TtP6AATKit14AATBannerCache_")
@protocol AATBannerCache
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// The delegate that represents the cache status
@property (nonatomic, strong) id <AATBannerCacheStatusDelegate> _Nullable cacheStatusDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Updates the configuration that will be used when requesting new banners.
/// \param requestConfiguration AATBannerRequest instance
///
/// \param shouldRefresh True if the whole cache should be re-loaded with new banner request configuration, false if new configuration should only be used for new requests.
///
- (void)updateRequestConfiguration:(AATBannerRequest * _Nonnull)requestConfiguration shouldRefresh:(BOOL)shouldRefresh;
/// Returns an instance of <code>AATBannerPlacementWrapperView</code> to be used within the app. Also automatically counts an ad space.
/// BannerCache will no longer hold any references to returned banners, and they need to be destroyed manually by the app.
/// \param force true if cache should try to return banner ignoring the frequency capping set by <code>AATBannerCacheConfiguration/minDelay</code>.
///
///
/// returns:
/// Ad View to be displayed.
- (AATBannerPlacementWrapperView * _Nullable)consumeWithForce:(BOOL)force SWIFT_WARN_UNUSED_RESULT;
/// Returns an instance of <code>AATBannerPlacementWrapperView</code> to be used within the app. Also automatically counts an ad space. It will respect the frequency capping set by <code>AATBannerCacheConfiguration/minDelay</code>.
/// BannerCache will no longer hold any references to returned banners, and they need to be destroyed manually by the app.
///
/// returns:
/// Ad View to be displayed.
- (AATBannerPlacementWrapperView * _Nullable)consume SWIFT_WARN_UNUSED_RESULT;
/// Destroys the BannerCache, clearing all preloaded banner ads and canceling pending reload requests.
/// <ul>
///   <li>
///     For proper memory management, it needs to be called when the BannerCache is no longer needed.
///   </li>
///   <li>
///     Destroyed BannerCache can no longer be used
///   </li>
/// </ul>
- (void)destroy;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

@protocol AATBannerCacheDelegate;
@protocol AATBannerRequestDelegate;
/// A configuration object to be used when creating AATBannerCache
SWIFT_CLASS("_TtC6AATKit27AATBannerCacheConfiguration")
@interface AATBannerCacheConfiguration : NSObject
/// The banner cache delegate that would be notified with the first loaded banner
@property (nonatomic, weak) id <AATBannerCacheDelegate> _Nullable delegate;
/// An instance of <code>AATBannerRequestDelegate</code> that should provide the targeting information
@property (nonatomic, weak) id <AATBannerRequestDelegate> _Nullable bannerRequestDelegate;
/// A Bool that defines if the cache should load an additional ad at the beginning. False by default
@property (nonatomic) BOOL shouldCacheAdditionalAdAtStart;
/// An instance of AATBannerRequest that will be used in requesting banner ads from the AATInfeedBannerPlacement.
@property (nonatomic, strong) AATBannerRequest * _Nonnull requestConfiguration;
/// Represents the minimum delay between two banner consumptions in seconds
@property (nonatomic) NSTimeInterval minDelay;
/// Represents the failure retry interval in seconds.
@property (nonatomic) NSTimeInterval retryInterval;
/// Init the <code>AATBannerCacheConfiguration</code> object
/// \param placementName the placement name
///
/// \param size the desired cache size
///
- (nonnull instancetype)initWithPlacementName:(NSString * _Nonnull)placementName size:(NSInteger)size OBJC_DESIGNATED_INITIALIZER;
/// Init the <code>AATBannerCacheConfiguration</code> object
/// \param placementName the placement name
///
- (nonnull instancetype)initWithPlacementName:(NSString * _Nonnull)placementName OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATBannerCacheConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

SWIFT_PROTOCOL("_TtP6AATKit22AATBannerCacheDelegate_")
@protocol AATBannerCacheDelegate
/// Will be called when the cache loads the first banner successfully
- (void)firstBannerLoaded;
@end

/// The delegate that represents the cache status
SWIFT_PROTOCOL("_TtP6AATKit28AATBannerCacheStatusDelegate_")
@protocol AATBannerCacheStatusDelegate
/// Will be called when the cache was empty and has been filled with at least one ad
- (void)cacheIsNoLongerEmpty;
/// Will be called when the cache was filled and has been consumed and became empty
- (void)cacheIsEmpty;
@end

/// Configuration class for banners, allowing customization of their behavior.
SWIFT_CLASS("_TtC6AATKit22AATBannerConfiguration")
@interface AATBannerConfiguration : NSObject
/// A boolean indicating whether ad space counting is handled manually.
/// If <code>true</code>, the developer is responsible for managing ad space counting; otherwise, it’s handled automatically.
@property (nonatomic) BOOL isManualAdSpaceCounting;
/// Options for configuring a collapsible banner.
/// If <code>nil</code>, the banner will not be collapsible.
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Initializes a new, default <code>AATBannerConfiguration</code> instance.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Sets the number of workers to be used.
/// \param numberOfWorkers The desired number of workers. Must be greater than 0.
/// If a non-positive value is provided, the setting will be ignored and an error will be logged.
///
- (void)setNumberOfWorkers:(NSInteger)numberOfWorkers;
/// A string representation of the <code>AATBannerConfiguration</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@interface AATBannerConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

/// Defines standard banner ad placement sizes supported by AATKit.
/// Each case corresponds to a specific banner dimension (width x height in points).
typedef SWIFT_ENUM(NSInteger, AATBannerPlacementSize, open) {
/// Banner size 320x53 points.
  AATBannerPlacementSizeBanner320x53 = 0,
/// Banner size 320x50 points.
  AATBannerPlacementSizeBanner320x50 = 1,
/// Banner size 375x50 points.
  AATBannerPlacementSizeBanner375x50 = 2,
/// Banner size 390x50 points.
  AATBannerPlacementSizeBanner390x50 = 3,
/// Banner size 414x50 points.
  AATBannerPlacementSizeBanner414x50 = 4,
/// Banner size 428x50 points.
  AATBannerPlacementSizeBanner428x50 = 5,
/// Banner size 768x90 points.
  AATBannerPlacementSizeBanner768x90 = 6,
/// Banner size 300x250 points (medium rectangle).
  AATBannerPlacementSizeBanner300x250 = 7,
/// Banner size 468x60 points (full banner).
  AATBannerPlacementSizeBanner468x60 = 8,
/// Banner size 320x75 points.
  AATBannerPlacementSizeBanner320x75 = 9,
/// Banner size 320x100 points.
  AATBannerPlacementSizeBanner320x100 = 10,
/// Banner size 320x150 points.
  AATBannerPlacementSizeBanner320x150 = 11,
/// Banner size 320x160 points.
  AATBannerPlacementSizeBanner320x160 = 12,
/// Banner size 300x50 points.
  AATBannerPlacementSizeBanner300x50 = 13,
/// Banner size 320x480 points.
  AATBannerPlacementSizeBanner320x480 = 14,
};

@class NSCoder;
/// Loaded banner wrapper view
SWIFT_CLASS("_TtC6AATKit29AATBannerPlacementWrapperView")
@interface AATBannerPlacementWrapperView : UIView
/// Loaded ad information
@property (nonatomic, strong) AATAdInfo * _Nullable adInfo;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (void)didMoveToSuperview;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

/// The banner request that will be used by the infeed banner placement.
SWIFT_CLASS("_TtC6AATKit16AATBannerRequest")
@interface AATBannerRequest : NSObject
/// The targeting information for this request, typically used to
/// narrow down the audience for ad delivery.
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInformation;
/// The content targeting URL for this request, used for contextual ad targeting.
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// An array of content targeting URLs for this request, allowing for multiple content contexts.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// A dictionary of network key replacements for this request.
/// This allows for replacing macros defined in ad keys with actual values at runtime.
/// Please contact your Account Manager before using this feature to ensure proper implementation.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable networkKeyReplacements;
/// The delegate for this banner request, conforming to <code>AATBannerRequestDelegate</code>.
/// This delegate receives callbacks related to the banner request lifecycle.
@property (nonatomic, weak) id <AATBannerRequestDelegate> _Nullable delegate;
/// GPID value to be passed to networks.
@property (nonatomic, copy) NSString * _Nullable gpidExtension;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Constructs a new banner request with a specified delegate.
/// \param delegate An instance conforming to <code>AATBannerRequestDelegate</code> that will
/// receive callbacks for this banner request.
///
- (nonnull instancetype)initWithDelegate:(id <AATBannerRequestDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Updates the banner sizes allowed for this request using an Objective-C compatible method.
/// This method converts a set of raw integer values to <code>AATBannerSize</code> enums.
/// \param sizes A set of <code>Int</code> values, where each integer corresponds to an <code>AATBannerSize</code> raw value.
/// Invalid or out-of-range integer values will be ignored.
///
- (void)setRequestBannerSizes:(NSSet<NSNumber *> * _Nonnull)sizes;
/// A string representation of the <code>AATBannerRequest</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// A protocol that defines methods for delegates of <code>AATBannerRequest</code> objects.
/// The methods of this protocol allow you to control certain behaviors of the
/// banner request, such as whether targeting information should be used for a specific ad network.
SWIFT_PROTOCOL("_TtP6AATKit24AATBannerRequestDelegate_")
@protocol AATBannerRequestDelegate
/// Asks the delegate whether the targeting information in the request should be used for a given ad network.
/// Implement this method if you need to dynamically control whether ad targeting
/// should be applied based on the specific ad network.
/// \param request The <code>AATBannerRequest</code> instance associated with the delegate.
///
/// \param network The <code>AATAdNetwork</code> for which the targeting decision is being made.
///
///
/// returns:
/// <code>true</code> if the targeting information should be used for the specified network; otherwise, <code>false</code>.
- (BOOL)shouldUseTargetingFor:(AATBannerRequest * _Nonnull)request network:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
@end

/// Banner request error class
SWIFT_CLASS("_TtC6AATKit21AATBannerRequestError")
@interface AATBannerRequestError : NSObject
/// String representation of the error
@property (nonatomic, readonly, copy) NSString * _Nullable errorDescription;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents the various banner ad sizes supported by AATKit.
/// Each case corresponds to a specific banner dimension or a grouping of multiple sizes.
typedef SWIFT_ENUM(NSInteger, AATBannerSize, open) {
/// Banner size 300x50 points.
  AATBannerSizeBanner300x50 = 0,
/// Banner size 320x53 points.
  AATBannerSizeBanner320x53 = 1,
/// Banner size 768x90 points.
  AATBannerSizeBanner768x90 = 2,
/// Banner size 300x250 points (medium rectangle).
  AATBannerSizeBanner300x250 = 3,
/// Banner size 468x60 points (full banner).
  AATBannerSizeBanner468x60 = 4,
/// Represents multiple banner sizes.
  AATBannerSizeMultipleSizes = 5,
/// Banner size 320x75 points.
  AATBannerSizeBanner320x75 = 6,
/// Banner size 320x100 points.
  AATBannerSizeBanner320x100 = 7,
/// Banner size 320x150 points.
  AATBannerSizeBanner320x150 = 8,
/// Banner size 320x160 points.
  AATBannerSizeBanner320x160 = 9,
/// Banner size 320x480 points.
  AATBannerSizeBanner320x480 = 10,
/// Banner size 728x90 points (leaderboard).
  AATBannerSizeBanner728x90 = 11,
/// Banner size 320x50 points.
  AATBannerSizeBanner320x50 = 12,
/// Banner size 375x50 points.
  AATBannerSizeBanner375x50 = 13,
/// Banner size 390x50 points.
  AATBannerSizeBanner390x50 = 14,
/// Banner size 414x50 points.
  AATBannerSizeBanner414x50 = 15,
/// Banner size 428x50 points.
  AATBannerSizeBanner428x50 = 16,
};

enum AATManagedConsentState : NSInteger;
SWIFT_PROTOCOL("_TtP6AATKit14AATCMPDelegate_")
@protocol AATCMPDelegate
- (void)consentDidUpdate:(enum AATManagedConsentState)state;
- (void)CMPFailedToShowWith:(NSString * _Nonnull)error;
- (void)CMPFailedToLoadWith:(NSString * _Nonnull)error;
- (void)CMPNeedsUI;
- (void)didShowCMP;
@end

@class UIViewController;
SWIFT_PROTOCOL("_TtP6AATKit14AATCMPProtocol_")
@protocol AATCMPProtocol
- (BOOL)isSuccessfullyInitialized:(NSString * _Nonnull)source SWIFT_WARN_UNUSED_RESULT;
- (void)start:(NSString * _Nonnull)source;
- (void)setDelegate:(NSString * _Nonnull)source :(id <AATCMPDelegate> _Nonnull)delegate;
- (void)reload:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
- (void)showIfNeeded:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
- (void)editConsent:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
@end

enum AATCollapsibleBannerPosition : NSInteger;
/// Options for configuring the behavior and appearance of a collapsible banner.
SWIFT_CLASS("_TtC6AATKit27AATCollapsibleBannerOptions")
@interface AATCollapsibleBannerOptions : NSObject
/// Initializes a new <code>AATCollapsibleBannerOptions</code> instance.
/// \param position The position of the banner. Defaults to <code>.top</code>.
///
/// \param minDelay The minimum delay in seconds before the banner can be collapsed. Defaults to <code>0</code>.
///
- (nonnull instancetype)initWithPosition:(enum AATCollapsibleBannerPosition)position minDelay:(NSInteger)minDelay OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Defines the possible positions for a collapsible banner.
typedef SWIFT_ENUM(NSInteger, AATCollapsibleBannerPosition, open) {
/// The banner is positioned at the top of the screen.
  AATCollapsibleBannerPositionTop = 0,
/// The banner is positioned at the bottom of the screen.
  AATCollapsibleBannerPositionBottom = 1,
};

@class AATConsentImplementation;
/// AATKit Runtime Configurations.
/// This class encapsulates runtime configuration settings for the AATKit SDK.
/// Use this when you need to reconfigure AATKit behavior such as consent, geo-location usage, or ad verification.
/// Configuration is preserved across instances using <code>oldConfiguration</code>.
SWIFT_CLASS("_TtC6AATKit23AATRuntimeConfiguration")
@interface AATRuntimeConfiguration : NSObject
/// Indicates whether user consent is required before requesting ads.
/// Defaults to <code>true</code>.
/// For more information, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling">AATKit Consent Handling</a>.
@property (nonatomic) BOOL consentRequired;
/// The consent implementation used by the SDK.
/// Can be set to one of the following: <code>AATManagedConsent</code>, <code>AATSimpleConsent</code>, or <code>AATVendorConsent</code>.
/// Defaults to <code>AATDefaultConsent</code>.
/// For more information, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling">AATKit Consent Handling</a>.
@property (nonatomic, strong) AATConsentImplementation * _Nonnull consent;
/// The ad quality manager responsible for verifying ad quality.
/// This is an optional implementation of <code>AATAdQualityManagerProtocol</code>.
@property (nonatomic, strong) id <AATAdQualityManagerProtocol> _Nullable adQualityManager;
/// Indicates whether geo-location usage is enabled.
/// Defaults to <code>false</code>.
@property (nonatomic) BOOL isUseGeoLocation;
/// Initializes a new runtime configuration.
/// If a previously used configuration exists, it is used to initialize the new one.
/// This allows persistent configuration across multiple SDK reinitializations.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the current configuration.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@protocol AATDelegate;
/// AATKit Configurations
/// This class provides options to configure the behavior of AATKit.
SWIFT_CLASS("_TtC6AATKit16AATConfiguration")
@interface AATConfiguration : AATRuntimeConfiguration
/// Set this parameter to listen to <code>AATDelegate</code> callbacks.
@property (nonatomic, weak) id <AATDelegate> _Nullable delegate;
/// Optional string containing ad rules to use before new rules are downloaded.
/// This is useful for ensuring ads start showing immediately on app launch.
@property (nonatomic, copy) NSString * _Nullable initialRules SWIFT_DEPRECATED_MSG("initialRules is deprecated and will be removed in a future version.");
/// Indicates whether the SDK should cache downloaded ad rules.
/// Defaults to <code>true</code>. Cached rules will be reused when the server is not reachable.
@property (nonatomic) BOOL shouldCacheRules;
/// Indicates whether to skip ad networks that have no valid consent.
/// Defaults to <code>false</code>. For more details, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling#rule-skipping">Rules Skipping</a>.
@property (nonatomic) BOOL shouldSkipRules SWIFT_DEPRECATED_MSG("TCF-based rule skipping feature is deprecated and will be removed in the future.");
/// A test app bundle ID. <em>Don’t forget to remove it before going live</em>.
/// <em>Important</em>: Remove this before releasing your app.
@property (nonatomic, copy) NSString * _Nullable alternativeBundleId;
/// Whether to report events using the <code>alternativeBundleId</code>.
/// Defaults to <code>true</code>.
@property (nonatomic) BOOL shouldReportUsingAlternativeBundleId;
/// A test account ID used to enable AATKit test mode.
/// <em>Important</em>: Remove this before releasing your app.
/// See <a href="https://addapptr.gitbook.io/ios-integration/start/initialization#test-mode">AATKit Test Mode</a>.
@property (nonatomic, strong) NSNumber * _Nullable testModeAccountId;
/// Enables or disables the shake gesture debug screen.
/// Defaults to <code>true</code>. See <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Debug Shake</a>.
@property (nonatomic) BOOL useDebugShake;
/// A Bool that enables/disables the use of  automatic generated userId. False by default.
@property (nonatomic) BOOL useAutomaticPPID;
/// Contains advanced configuration for specific ad networks.
@property (nonatomic, strong) AATAdNetworksOptions * _Nullable adNetworksOptions;
/// A textual representation of the configuration instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATConfiguration (SWIFT_EXTENSION(AATKit))
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

/// Handles consent-related configurations.
SWIFT_CLASS("_TtC6AATKit24AATConsentImplementation")
@interface AATConsentImplementation : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Sets the set of ad networks that should stop if no user consent is given (Objective-C compatible version).
/// This method maps integer values to corresponding <code>AATAdNetwork</code> enum cases. If an integer is out of bounds,
/// a warning is logged and that value is ignored.
/// \param stopSet A set of integer values representing the raw values of <code>AATAdNetwork</code> enums.
///
- (void)setNoConsentNetworkStopSet:(NSSet<NSNumber *> * _Nonnull)stopSet;
@end

/// Represents the currency used for pricing.
/// Used in <code>AATPriceInfo</code> to specify the currency of the impression price.
typedef SWIFT_ENUM(NSInteger, AATCurrency, open) {
/// United States Dollar (USD).
  AATCurrencyUSD = 0,
/// Euro (EUR).
  AATCurrencyEUR = 1,
/// Unknown or unspecified currency.
  AATCurrencyUnknown = 2,
};

SWIFT_CLASS("_TtC6AATKit18AATDFPBiddingValue")
@interface AATDFPBiddingValue : NSObject
@property (nonatomic, readonly) double lowerValue;
@property (nonatomic, readonly, copy) NSString * _Nonnull mappedValue;
@property (nonatomic, copy) NSString * _Nonnull targetingKey;
- (nonnull instancetype)initWithLowerValue:(double)lowerValue mappedValue:(NSString * _Nonnull)mappedValue OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Configuration options for DFP (Google AdManager) ads.
SWIFT_CLASS("_TtC6AATKit13AATDFPOptions")
@interface AATDFPOptions : NSObject
/// Initializes a new instance of <code>AATDFPOptions</code>.
/// \param inlineBannerMaxHeight The maximum height for DFP inline adaptive banners.
///
- (nonnull instancetype)initWithInlineBannerMaxHeight:(NSInteger)inlineBannerMaxHeight OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PlacementDebugInfo;
SWIFT_CLASS("_TtC6AATKit12AATDebugInfo")
@interface AATDebugInfo : NSObject
/// Optional test bundle identifier used by the app.
@property (nonatomic, copy) NSString * _Nullable testBundleId;
/// Optional test identifier used by the app.
@property (nonatomic, copy) NSString * _Nullable testId;
/// String representing current consent information.
@property (nonatomic, copy) NSString * _Nullable consentInfo;
/// List of placement debug information objects.
@property (nonatomic, copy) NSArray<PlacementDebugInfo *> * _Nonnull placementDebugInfo;
/// Extra SDKs available.
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull extraSDK;
/// Device type information (e.g., “iPhone13,4”).
@property (nonatomic, copy) NSString * _Nonnull deviceType;
/// The device’s Identifier for Advertisers string, if available.
@property (nonatomic, copy) NSString * _Nullable idfaString;
/// Returns a list of raw string values for available ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull availableAdNetworks;
/// Returns a list of raw string values for disabled ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull disabledAdNetworks;
/// Returns a list of raw string values for removed ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull removedAdNetworks;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATDebugInfo (SWIFT_EXTENSION(AATKit))
@end

@class FrequencyCappingDebugInfo;
/// A debug information object for a specific ad placement
SWIFT_CLASS("_TtCC6AATKit12AATDebugInfo18PlacementDebugInfo")
@interface PlacementDebugInfo : NSObject
/// The name of the placement
@property (nonatomic, copy) NSString * _Nonnull placementName;
/// The type of the placement
@property (nonatomic, copy) NSString * _Nonnull placementType;
/// The active frequency capping rule applied to the placement (if any)
@property (nonatomic, strong) FrequencyCappingDebugInfo * _Nullable activeFrequencyCapping;
/// The interval in seconds for auto-reloading banner ads
@property (nonatomic) NSInteger bannerAutoReloadInterval;
/// The initial delay in seconds before loading the ad
@property (nonatomic) NSInteger initialDelay;
/// The remaining time in seconds before the next ad can be loaded
@property (nonatomic) NSInteger remainingTime;
/// An array of loaded ad debug information objects for the placement
@property (nonatomic, copy) NSArray<AATAdDebugInfo *> * _Nonnull loadedAds;
/// Indicates whether a new ad is currently being loaded
@property (nonatomic) BOOL isLoadingNewAd;
/// The last shown ad
@property (nonatomic, strong) AATAdDebugInfo * _Nullable lastShownAd;
/// Indicates whether Ad Quality is currently active for this placement
@property (nonatomic) BOOL isAdQualityActive;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Configure the shake debug screen
SWIFT_CLASS("_TtC6AATKit27AATDebugScreenConfiguration")
@interface AATDebugScreenConfiguration : NSObject
/// App Logo
@property (nonatomic, strong) UIImage * _Nullable appLogo;
/// Shake debug screen title
@property (nonatomic, copy) NSString * _Nullable title;
/// Show bundle identifier
@property (nonatomic) BOOL showBundleId;
/// Show app version
@property (nonatomic) BOOL showAppVersion;
/// Show test mode data
@property (nonatomic) BOOL showTestMode;
/// Show loaded/loading ads
@property (nonatomic) BOOL showLoadedAndLoadingAds;
/// Show disabled ad networks
@property (nonatomic) BOOL showDisabledNetworks;
/// Show removed ad networks
@property (nonatomic) BOOL showRemovedNetworkSDKs;
/// Show extra SDKs
@property (nonatomic) BOOL showExtraSDKs;
/// Show extra SDKs
@property (nonatomic) BOOL showConsent;
/// Show IDFA
@property (nonatomic) BOOL showIDFA;
/// Show device type
@property (nonatomic) BOOL showDeviceType;
@property (nonatomic, copy) NSString * _Nullable shareEmail;
/// Show debug logs toggle, default value is true.
@property (nonatomic) BOOL showDebugLogsToggle;
/// Show device filtered rules toggle, default value is true.
@property (nonatomic) BOOL showDeviceFilteredRulesToggle;
/// Show close button , default value is false.
@property (nonatomic) BOOL showCloseButton;
/// Create an <code>AATDebugScreenConfiguration</code> instance
/// \param appLogo application logo
///
/// \param title title
///
/// \param showBundleId true to show bundle id
///
/// \param showTestMode true to show test mode data
///
/// \param showLoadedAndLoadingAds true to show loaded and loading ads
///
/// \param showDisabledNetworks true to show disabled ad networks
///
/// \param showRemovedNetworkSDKs true to show removed ad networks
///
/// \param showDeviceType true to show device type
///
/// \param showConsent true to show consent
///
/// \param showExtraSDKs true to show extra SDKs
///
/// \param showIDFA true to show IDFA
///
/// \param showDebugLogsToggle true to show debug logs toggle
///
/// \param showDeviceFilteredRulesToggle true to show device filtered rules toggle
///
/// \param showCloseButton true to show close button
///
- (nonnull instancetype)initWithAppLogo:(UIImage * _Nullable)appLogo title:(NSString * _Nullable)title showBundleId:(BOOL)showBundleId showAppVersion:(BOOL)showAppVersion showTestMode:(BOOL)showTestMode showLoadedAndLoadingAds:(BOOL)showLoadedAndLoadingAds showDisabledNetworks:(BOOL)showDisabledNetworks showRemovedNetworkSDKs:(BOOL)showRemovedNetworkSDKs showDeviceType:(BOOL)showDeviceType showExtraSDKs:(BOOL)showExtraSDKs showConsent:(BOOL)showConsent showIDFA:(BOOL)showIDFA showDebugLogsToggle:(BOOL)showDebugLogsToggle showDeviceFilteredRulesToggle:(BOOL)showDeviceFilteredRulesToggle showCloseButton:(BOOL)showCloseButton OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Notifies about AATKit events.
SWIFT_PROTOCOL("_TtP6AATKit11AATDelegate_")
@protocol AATDelegate
@optional
/// Notifies that the AATKit has obtained ad rules.
/// This method is called when AATKit successfully fetches ad rules.
/// \param fromTheServer A Boolean indicating the source of the rules:
/// <ul>
///   <li>
///     <code>true</code>: The rules were fetched from the Gravite server.
///   </li>
///   <li>
///     <code>false</code>: The rules are either the cached rules or the ones set with <code>AATSDK.setInitialRules(rules:)</code>.
///   </li>
/// </ul>
///
- (void)AATKitObtainedAdRulesFromTheServer:(BOOL)fromTheServer;
/// Notifies that the application’s bundle ID was not recognized by the Gravite server.
/// This typically occurs when the app is not correctly registered in the Gravite dashboard.
- (void)AATKitUnknownBundleId;
@end

/// Configuration options for DisplayIO ad network.
SWIFT_CLASS("_TtC6AATKit19AATDisplayIOOptions")
@interface AATDisplayIOOptions : NSObject
/// Initializes a new <code>AATDisplayIOOptions</code> instance.
/// \param showSoundControl Whether to show the sound control.
///
/// \param interscrollerHeight The height of the interscroller ad.
///
/// \param interscrollerTopOffset The top offset of the interscroller ad.
///
- (nonnull instancetype)initWithShowSoundControl:(BOOL)showSoundControl interscrollerHeight:(NSInteger)interscrollerHeight interscrollerTopOffset:(NSInteger)interscrollerTopOffset OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIColor;
/// Configuration options for Feed Ads.
SWIFT_CLASS("_TtC6AATKit16AATFeedAdOptions")
@interface AATFeedAdOptions : NSObject
/// Initializes a new instance of <code>AATFeedAdOptions</code>.
/// \param shutterColor The desired shutter color. Defaults to <code>nil</code>.
///
/// \param disableSpinner A Boolean indicating if the spinner should be disabled. Defaults to <code>false</code>.
///
- (nonnull instancetype)initWithShutterColor:(UIColor * _Nullable)shutterColor disableSpinner:(BOOL)disableSpinner OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_PROTOCOL("_TtP6AATKit22AATFullscreenPlacement_")
@protocol AATFullscreenPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATFullscreenPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the Ad Quality delegate that will be notified with ad verifications events.
@property (nonatomic, strong) id <AATAdQualityDelegate> _Nullable adQualityDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Last ad information
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Represents the gender of the user for targeting purposes.
/// Used in <code>AATUserTargeting</code> to help personalize ad delivery. Defaults to <code>AATGender/unknown</code> if not set or invalid.
typedef SWIFT_ENUM(NSInteger, AATGender, open) {
/// A male user.
  AATGenderMale = 0,
/// A female user.
  AATGenderFemale = 1,
/// A user who identifies as other.
  AATGenderOther = 2,
/// An unknown or unspecified gender.
/// This value will be ignored in targeting requests.
  AATGenderUnknown = 3,
};

/// Represents configuration options for the Gravite RTB integration.
SWIFT_CLASS("_TtC6AATKit20AATGraviteRTBOptions")
@interface AATGraviteRTBOptions : NSObject
/// Initializes a new <code>AATGraviteRTBOptions</code> instance.
/// \param forceCloseButtonForMraid A Boolean flag to force showing the SDK’s native close button even when the MRAID creative includes one.
/// If set to <code>true</code>, both the SDK button and the creative’s button will be shown.
///
- (nonnull instancetype)initWithForceCloseButtonForMraid:(BOOL)forceCloseButtonForMraid OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents impression-level information for an ad.
/// Contains details such as banner size, ad network, network key, direct deal status, and price info.
SWIFT_CLASS("_TtC6AATKit13AATImpression")
@interface AATImpression : NSObject
/// The banner size for this impression, e.g. “320x50”. Can be <code>nil</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable bannerSize;
/// The ad network responsible for this impression.
@property (nonatomic, readonly) enum AATAdNetwork adNetwork;
/// The key identifying the ad network instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull networkKey;
/// Indicates if this impression was generated by a direct deal.
@property (nonatomic, readonly) BOOL isDirectDeal;
/// Optional price information related to this impression.
@property (nonatomic, readonly, strong) AATPriceInfo * _Nullable priceInfo;
/// A string representation of the impression, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Retrieves the name of the ad network for this impression.
///
/// returns:
/// A string representing the ad network name.
- (NSString * _Nonnull)getAdNetworkName SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Delegate called when the impression is counted.
SWIFT_PROTOCOL("_TtP6AATKit21AATImpressionDelegate_")
@protocol AATImpressionDelegate
/// Notifies that AATKit has counted an impression.
/// \param placement the placement that counted the impression
///
/// \param impression the AATImpression object
///
- (void)didCountImpressionWithPlacement:(id <AATPlacement> _Nullable)placement :(AATImpression * _Nonnull)impression;
@end

SWIFT_PROTOCOL("_TtP6AATKit24AATInfeedBannerPlacement_")
@protocol AATInfeedBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATInfeedBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Request banner ad from the placement
/// \param request the <code>AATBannerRequest</code> to be used
///
/// \param completion Completion result with <code>AATBannerPlacementWrapperView</code> or <code>AATBannerRequestError</code>
///
- (void)requestAdWithRequest:(AATBannerRequest * _Nonnull)request completion:(void (^ _Nonnull)(AATBannerPlacementWrapperView * _Nullable, AATBannerRequestError * _Nullable))completion;
/// Cancel a specific <code>AATBannerRequest</code>
/// \param request The request to be canceled
///
- (void)cancelWithRequest:(AATBannerRequest * _Nonnull)request;
/// Manually Count an Ad Space
- (void)countAdSpace;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATInfeedBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit32AATInfeedBannerPlacementDelegate_")
@protocol AATInfeedBannerPlacementDelegate <AATAdDisplayDelegate>
@end

SWIFT_CLASS("_TtC6AATKit16AATLocationUtils")
@interface AATLocationUtils : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class CLLocationManager;
@class CLLocation;
@interface AATLocationUtils (SWIFT_EXTENSION(AATKit)) <CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager * _Nonnull)manager didUpdateLocations:(NSArray<CLLocation *> * _Nonnull)locations;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nonnull)error;
@end

/// Desired log level
typedef SWIFT_ENUM(NSInteger, AATLogLevel, open) {
/// Verbose-level messages are intended to capture verbose, debug, info, warning and error messages. It’s convenient in an intensive development environment.
  AATLogLevelVerbose = 1,
/// Debug-level messages are intended to capture debug, info, warning and error messages. It’s convenient in a normal development environment.
  AATLogLevelDebug = 2,
/// Info-level messages are intended to capture info, warning and error messages. Info-level may be helpful but isn’t enough for troubleshooting.
  AATLogLevelInfo = 3,
/// Warn-level messages are intended to capture warning and error messages only.
  AATLogLevelWarn = 4,
/// Error-level messages are intended to capture error messages only.
  AATLogLevelError = 5,
};

SWIFT_CLASS("_TtC6AATKit9AATLogger")
@interface AATLogger : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol AATManagedConsentDelegate;
enum AATShowIfNeededSetting : NSInteger;
/// The managed consent (should be initialized with <code>AATCMPProtocol</code>). Will fire the different events of the user consent interactions.
/// See <code>AATManagedConsentDelegate</code>.
/// For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/managed-consent">Managed Consent</a>.
SWIFT_CLASS("_TtC6AATKit17AATManagedConsent")
@interface AATManagedConsent : AATConsentImplementation
/// Create an instance of <code>AATManagedConsent</code>.
/// \param cmp An instance of <code>AATCMPProtocol</code> (e.g., AATCMPGoogle, AATCMPSourcePoint).
///
/// \param delegate Delegate notified of CMP events.
///
/// \param showIfNeededSetting The setting controlling if and when the consent showing options.
///
- (nullable instancetype)initWithCmp:(id <AATCMPProtocol> _Nullable)cmp delegate:(id <AATManagedConsentDelegate> _Nonnull)delegate showIfNeededSetting:(enum AATShowIfNeededSetting)showIfNeededSetting OBJC_DESIGNATED_INITIALIZER;
/// Presents the consent screen if required.
/// Recommended to call when the app’s initial view controller is presented.
/// \param viewController View controller used to present the CMP.
///
- (void)showIfNeeded:(UIViewController * _Nonnull)viewController;
/// Re-show the CMP if it is needed or if the user has rejected the consent.
/// \param daysAgo Minimum number of days before showing the CMP again.
///
/// \param viewController View controller used to present the CMP.
///
- (void)showIfNeededOrRejectedWithDaysAgo:(NSInteger)daysAgo viewController:(UIViewController * _Nonnull)viewController;
/// Presents the CMP for editing the consent settings.
/// \param viewController View controller used to present the CMP.
///
- (void)editConsent:(UIViewController * _Nonnull)viewController;
/// Reloads the CMP in case it failed previously.
/// Should be used after a failed attempt such as <code>CMPFailedToLoad(with:)</code>.
/// \param viewController View controller used to present the CMP.
///
- (void)reload:(UIViewController * _Nonnull)viewController;
@end

@interface AATManagedConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@interface AATManagedConsent (SWIFT_EXTENSION(AATKit)) <AATCMPDelegate>
- (void)didShowCMP;
- (void)consentDidUpdate:(enum AATManagedConsentState)state;
- (void)CMPFailedToShowWith:(NSString * _Nonnull)error;
- (void)CMPFailedToLoadWith:(NSString * _Nonnull)error;
- (void)CMPNeedsUI;
@end

/// The delegate for receiving events from <code>AATManagedConsent</code> regarding CMP lifecycle.
SWIFT_PROTOCOL("_TtP6AATKit25AATManagedConsentDelegate_")
@protocol AATManagedConsentDelegate
/// CMP is ready and needs to be shown
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
- (void)managedConsentNeedsUserInterface:(AATManagedConsent * _Nonnull)managedConsent;
/// The user finished his consent choice
/// \param state an instance of the <code>AATManagedConsentState</code> enum.
///
- (void)managedConsentCMPFinishedWith:(enum AATManagedConsentState)state;
/// The managed consent failed to load the CMP
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
/// \param error a String represents the loading error.
///
- (void)managedConsentCMPFailedToLoad:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error;
/// The managed consent failed to show the CMP
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
/// \param error a String represents the showing error.
///
- (void)managedConsentCMPFailedToShow:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error;
@end

/// Describes the current state of managed user consent in the SDK.
typedef SWIFT_ENUM(NSInteger, AATManagedConsentState, open) {
/// No information about consent state.
  AATManagedConsentStateUnknown = 0,
/// Consent has been declined by the user.
  AATManagedConsentStateWithheld = 1,
/// Partial consent has been granted by the user -
/// at least some purposes and some vendors were given consent.
  AATManagedConsentStateCustom = 2,
/// Full consent has been granted by the user.
  AATManagedConsentStateObtained = 3,
};

/// Represents the mediation type used by AATKit for ad rules.
typedef SWIFT_ENUM(NSInteger, AATMediationType, closed) {
/// Waterfall mediation type.
  AATMediationTypeWATERFALL = 1,
/// Auction mediation type.
  AATMediationTypeAUCTION = 2,
/// Mayo mediation type.
  AATMediationTypeMAYO = 3,
};

/// Configuration options for Meta Bidding integrations.
/// Provides required identifiers for initializing Meta Bidding capabilities.
SWIFT_CLASS("_TtC6AATKit21AATMetaBiddingOptions")
@interface AATMetaBiddingOptions : NSObject
/// Initializes a new instance of <code>AATMetaBiddingOptions</code> with the required platform and security identifiers.
/// \param platformId The Meta platform identifier.
///
- (nonnull instancetype)initWithPlatformId:(NSString * _Nonnull)platformId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATMultiSizeBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit27AATMultiSizeBannerPlacement_") SWIFT_DEPRECATED_MSG("Please use AATAutoLoadMultiSizeBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/multi-size-auto-load-banner")
@protocol AATMultiSizeBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATMultiSizeBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Start the automatic reloading of the placement using specific time interval
- (void)startAutoReloadWithSeconds:(NSTimeInterval)seconds;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Set the placement auto reload interval
/// \param seconds auto reload interval
///
- (void)setAutoreloadIntervalWithSeconds:(NSTimeInterval)seconds;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
/// \param forceLoad True if you want to be able to reload and show new banner before set banner reload interval (default: 30s) between reloads, false otherwise.
///
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad SWIFT_WARN_UNUSED_RESULT;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reload SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Enables keeping creatives history
/// \param size Maximum number of creatives to keep
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Get saved creatives history
/// \param completion An array of <code>AATPlacementHistoryInfo</code> representing creatives history
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATMultiSizeBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit35AATMultiSizeBannerPlacementDelegate_")
@protocol AATMultiSizeBannerPlacementDelegate <AATAdDisplayDelegate, AATNoAdDelegate>
/// This method will be called when there is an ad
- (void)aatHaveAdWithBannerViewWithPlacement:(id <AATPlacement> _Nonnull)placement bannerView:(AATBannerPlacementWrapperView * _Nonnull)bannerView;
@end

@class AATNativeAdRating;
/// A protocol that defines the data and interactions for a native ad.
/// This protocol provides a standardized interface for accessing various assets
/// and managing the lifecycle of a native ad, regardless of the underlying ad network.
SWIFT_PROTOCOL("_TtP6AATKit15AATNativeAdData_")
@protocol AATNativeAdData <NSObject>
/// A string representing the <em>title</em> of the ad.
/// Returns <code>nil</code> if the title is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable title;
/// A string representing the <em>description</em> or body text of the ad.
/// Returns <code>nil</code> if the description is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable adDescription;
/// A string representing the <em>call-to-action</em> (e.g., “Learn More”, “Install Now”).
/// Returns <code>nil</code> if the call-to-action is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable callToAction;
/// A string representing the <em>URL of the main image asset</em> for the ad.
/// Returns <code>nil</code> if the image URL is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable imageUrl;
/// A string representing the <em>URL of the icon asset</em> for the ad.
/// Returns <code>nil</code> if the icon URL is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable iconUrl;
/// An <code>AATNativeAdRating</code> instance containing both the value and scale of the ad’s rating.
/// Returns <code>nil</code> if rating information is not available.
@property (nonatomic, readonly, strong) AATNativeAdRating * _Nullable rating;
/// A <code>UIView</code> representing the <em>branding logo or ad information</em> provided by the ad network.
/// Some networks, such as Facebook Audience Network or Flurry, require this specific view
/// to be visible when their native ads are displayed.
@property (nonatomic, readonly, strong) UIView * _Nullable brandingLogo;
/// A string representing the <em>advertiser’s name</em> or attribution.
/// Returns <code>nil</code> if the advertiser information is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable advertiser;
/// An <code>AATAdNetwork</code> enum value indicating the <em>ad network</em> that provided this native ad.
@property (nonatomic, readonly) enum AATAdNetwork network;
/// Additional information about the ad, represented by an <code>AATAdInfo</code> object.
/// Returns <code>nil</code> if no additional information is available.
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Binds this native ad instance with the provided <code>UIView</code> hierarchy.
/// This method is crucial for handling user interactions (like clicks) and for ad tracking.
/// It should be called once the native ad’s content has been rendered into your app’s UI.
/// \param view The main <code>UIView</code> that encompasses the entire native ad layout.
///
/// \param mainImageView (Optional) The <code>UIView</code> specifically used to display the main image of the ad.
///
/// \param iconView (Optional) The <code>UIView</code> specifically used to display the icon of the native ad.
///
/// \param ctaView (Optional) The <code>UIView</code> specifically used to display the call-to-action button or label.
///
- (void)attachToView:(UIView * _Nonnull)view mainImageView:(UIView * _Nullable)mainImageView iconView:(UIView * _Nullable)iconView ctaView:(UIView * _Nullable)ctaView;
/// Removes the binding between the native ad and its superview.
/// This method should be called when the native ad is no longer visible or
/// is about to be removed from the view hierarchy. It helps in releasing
/// resources and stopping any ongoing tracking.
- (void)detachFromLayout;
/// Checks if the native ad has <em>expired</em> and should no longer be used or displayed.
///
/// returns:
/// <code>true</code> if the ad has expired; otherwise, <code>false</code>.
- (BOOL)isExpired SWIFT_WARN_UNUSED_RESULT;
/// Checks if the native ad is <em>ready to be displayed</em>.
/// This typically means all necessary assets have been loaded and the ad is in a valid state.
///
/// returns:
/// <code>true</code> if the ad is ready for display; otherwise, <code>false</code>.
- (BOOL)isReady SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATNativePlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit20AATNativeAdPlacement_")
@protocol AATNativeAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATNativePlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Requests placement reload.
- (BOOL)reload;
/// Returns how many ads are currently loading for given native ad placement.
///
/// returns:
/// Number of ads that are currently loading for given placement.
- (NSInteger)getNumberOfCurrentlyLoadingNativeAds SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Manually Count an Ad Space
- (BOOL)reportAdSpace SWIFT_WARN_UNUSED_RESULT;
/// Returns the instance of native ad for given native ad placement.
///
/// returns:
/// Native ad instance if it is loaded for given placement, null otherwise.
- (id <AATNativeAdData> _Nullable)getNativeAd SWIFT_WARN_UNUSED_RESULT;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Native ad rating
SWIFT_CLASS("_TtC6AATKit17AATNativeAdRating")
@interface AATNativeAdRating : NSObject
/// Creates an instance of <code>AATNativeAdRating</code>
/// \param value The rating value
///
/// \param scale The rating scale
///
- (nonnull instancetype)initWithValue:(double)value scale:(double)scale OBJC_DESIGNATED_INITIALIZER;
/// The rating value
@property (nonatomic, readonly) double value;
/// The rating scale
@property (nonatomic, readonly) double scale;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, AATNativeAdType, open) {
  AATNativeAdTypeAppInstall = 0,
  AATNativeAdTypeContent = 1,
  AATNativeAdTypeVideo = 2,
  AATNativeAdTypeUnified = 3,
  AATNativeAdTypeOther = 4,
  AATNativeAdTypeUnknown = 5,
};

/// Conform to this protocol to listen to the AATNativePlacement events
SWIFT_PROTOCOL("_TtP6AATKit26AATNativePlacementDelegate_")
@protocol AATNativePlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

/// Placement history data
SWIFT_CLASS("_TtC6AATKit23AATPlacementHistoryInfo")
@interface AATPlacementHistoryInfo : NSObject
/// The name of the ad network that served the ad.
@property (nonatomic, copy) NSString * _Nonnull networkName;
/// A unique key identifying the ad network placement.
@property (nonatomic, copy) NSString * _Nonnull networkKey;
/// A timestamp representing when the ad was served.
@property (nonatomic) NSTimeInterval timestamp;
/// A snapshot of the ad, if available.
@property (nonatomic, strong) UIImage * _Nullable snapshot;
/// An optional identifier for the creative that was displayed.
@property (nonatomic, copy) NSString * _Nullable creativeID;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, AATPluginName, open) {
  AATPluginNameAdobe = 1,
  AATPluginNameCorona = 2,
  AATPluginNameMarmalade = 3,
  AATPluginNameUnity = 4,
  AATPluginNameXamarin = 5,
  AATPluginNameReactNative = 6,
  AATPluginNameCordova = 7,
  AATPluginNameCapacitor = 8,
  AATPluginNameFlutter = 9,
};

SWIFT_CLASS("_TtC6AATKit23AATPluginVersioningTool")
@interface AATPluginVersioningTool : NSObject
+ (void)appendPluginInformation:(enum AATPluginName)pluginName patchLevel:(NSString * _Nonnull)patchLevel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum AATPricePrecisionType : NSInteger;
/// Contains pricing information for an ad impression.
/// Includes the CPM price, the precision of the price, and the currency used.
SWIFT_CLASS("_TtC6AATKit12AATPriceInfo")
@interface AATPriceInfo : NSObject
/// The CPM price of the impression.
@property (nonatomic) double price;
/// The precision type of the price.
@property (nonatomic) enum AATPricePrecisionType precision;
/// The currency of the price.
@property (nonatomic) enum AATCurrency currency;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATPriceInfo (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// Represents the precision type of a price.
/// Used to indicate how precise the CPM price value is.
typedef SWIFT_ENUM(NSInteger, AATPricePrecisionType, open) {
/// Unknown precision type.
  AATPricePrecisionTypeUnknown = 0,
/// Estimated precision type.
  AATPricePrecisionTypeEstimated = 1,
/// Floor price precision type.
  AATPricePrecisionTypeFloor = 2,
/// Publisher-provided precision type.
  AATPricePrecisionTypePublisherProvided = 3,
/// Exact or precise price precision type.
  AATPricePrecisionTypeExact = 4,
};

/// Will be notified with reports event
SWIFT_PROTOCOL("_TtP6AATKit18AATReportsDelegate_")
@protocol AATReportsDelegate
/// Notifies you of AATKit reports event.
/// \param report The report content.
///
- (void)onReportSent:(NSString * _Nonnull)report;
@end

/// Represents the incentive reward for a rewarded video.
/// This object contains the reward’s name and value as strings.
SWIFT_CLASS("_TtC6AATKit9AATReward")
@interface AATReward : NSObject
/// The name of the reward (e.g., “Coins”, “Points”).
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The value associated with the reward (e.g., “100”).
@property (nonatomic, readonly, copy) NSString * _Nonnull value;
/// Initializes a new reward object.
/// \param name The reward name.
///
/// \param value The reward value.
///
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name value:(NSString * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the <code>AATReward</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Contains server-side verification data for rewarded video ads.
/// Used to provide user-specific information for verification during rewarded ad impressions.
SWIFT_CLASS("_TtC6AATKit20AATRewardedAdSSVInfo")
@interface AATRewardedAdSSVInfo : NSObject
/// The impression user identifier.
@property (nonatomic, copy) NSString * _Nonnull userId;
/// A custom string to send with the verification data. Optional.
@property (nonatomic, copy) NSString * _Nullable customString;
/// Creates an instance of <code>AATRewardedAdSSVInfo</code>.
/// \param userId The user identifier associated with the impression.
///
/// \param customString An optional custom string to include in the verification data.
///
- (nonnull instancetype)initWithUserId:(NSString * _Nonnull)userId customString:(NSString * _Nullable)customString OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATRewardedVideoPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit25AATRewardedVideoPlacement_")
@protocol AATRewardedVideoPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATRewardedVideoPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the Ad Quality delegate that will be notified with ad verifications events.
@property (nonatomic, strong) id <AATAdQualityDelegate> _Nullable adQualityDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to listen to the AATRewardedVideoPlacement events
SWIFT_PROTOCOL("_TtP6AATKit33AATRewardedVideoPlacementDelegate_")
@protocol AATRewardedVideoPlacementDelegate <AATFullscreenPlacementDelegate>
/// This method will be called when the user gets rewarded
- (void)aatUserEarnedIncentiveWithPlacement:(id <AATPlacement> _Nonnull)placement aatReward:(AATReward * _Nonnull)aatReward;
@end

@interface AATRuntimeConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATStickyBannerPlacement;
@class AATUserTargeting;
/// AATKit main interface providing the core public static API methods.
/// Use this class to initialize and configure AATKit, manage placements,
/// and access global SDK settings and utilities.
SWIFT_CLASS("_TtC6AATKit6AATSDK")
@interface AATSDK : NSObject
/// Returns the current version of AATKit.
///
/// returns:
/// A string representing the SDK version.
+ (NSString * _Nonnull)getVersion SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Initializes the AATKit SDK.
/// Call this once during your app’s startup sequence before using any other AATKit APIs.
/// For more details, visit <a href="https://addapptr.gitbook.io/ios-integration/start/initialization">AATKit Initialization</a>.
/// \param configuration The configuration object. See <code>AATConfiguration</code>.
///
+ (void)initAATKitWith:(AATConfiguration * _Nullable)configuration SWIFT_METHOD_FAMILY(none);
/// Enables the debug screen that appears after shaking the device.
/// Enabled by default.
/// For more details, see <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Shake Debug Screen</a>.
+ (void)enableDebugScreen;
/// Disables the debug screen triggered by shaking the device.
/// Enabled by default.
/// For more details, see <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Shake Debug Screen</a>.
+ (void)disableDebugScreen;
/// Returns a string containing debug information.
/// Equivalent to what is shown in the shake-to-debug screen.
///
/// returns:
/// Debug information as a string.
+ (NSString * _Nonnull)getDebugInfo SWIFT_WARN_UNUSED_RESULT;
/// Configures the appearance and behavior of the shake-to-debug screen.
/// If not called, the default values of <code>AATDebugScreenConfiguration</code> will be used
/// \param configuration An instance of <code>AATDebugScreenConfiguration</code>.
///
+ (void)configureDebugScreenWithConfiguration:(AATDebugScreenConfiguration * _Nonnull)configuration;
/// Returns a structured debug info object.
///
/// returns:
/// An instance of <code>AATDebugInfo</code>, or <code>nil</code> if unavailable.
+ (AATDebugInfo * _Nullable)getDebugInfoObject SWIFT_WARN_UNUSED_RESULT;
/// Returns the current SDK logging level.
///
/// returns:
/// The current log level. See <code>AATLogLevel</code>.
+ (enum AATLogLevel)getLogLevel SWIFT_WARN_UNUSED_RESULT;
/// Reconfigures runtime options such as GDPR consent.
/// Use this when consent or other runtime-configurable parameters change.
/// See <a href="https://addapptr.gitbook.io/ios-integration/start/initialization#reconfigure-aatkit">Reconfigure AATKit</a>.
/// \param configuration The new runtime configuration.
///
+ (void)reconfigureWithConfiguration:(AATRuntimeConfiguration * _Nonnull)configuration;
/// Checks whether the current device is recognized as a tablet.
///
/// returns:
/// <code>true</code> if the device is a tablet, <code>false</code> otherwise.
+ (BOOL)isTablet SWIFT_WARN_UNUSED_RESULT;
/// Returns the banner size that best fits the device in portrait orientation.
///
/// returns:
/// A suitable <code>AATBannerPlacementSize</code>.
+ (enum AATBannerPlacementSize)maximumBannerSizePortrait SWIFT_WARN_UNUSED_RESULT;
/// Returns the banner size that best fits the device in landscape orientation.
///
/// returns:
/// A suitable <code>AATBannerPlacementSize</code>.
+ (enum AATBannerPlacementSize)maximumBannerSizeLandscape SWIFT_WARN_UNUSED_RESULT;
/// Returns a set of banner sizes that fit the device in landscape orientation.
/// The Objective-C compatible version of <code>fittingBannerSizesPortrait()</code>.
///
/// returns:
/// A set of compatible <code>AATBannerSize</code> values.
+ (NSSet<NSString *> * _Nonnull)fittingBannerSizesPortrait SWIFT_WARN_UNUSED_RESULT;
/// Returns a set of banner sizes that fit the device in landscape orientation.
/// The Objective-C compatible version of <code>fittingBannerSizesLandscape()</code>.
///
/// returns:
/// A set of compatible <code>AATBannerSize</code> values.
+ (NSSet<NSString *> * _Nonnull)fittingBannerSizesLandscape SWIFT_WARN_UNUSED_RESULT;
/// Notifies AATKit that a view controller has appeared.
/// Call this from <code>viewDidAppear</code> for every view controller using AATKit.
/// For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/formats/general#handling-multiple-view-controllers">Handling View Controllers</a>.
/// \param controller The visible view controller.
///
+ (void)controllerViewDidAppearWithController:(UIViewController * _Nonnull)controller;
/// Notifies AATKit that the current view controller is about to disappear.
/// Call this from <code>viewWillDisappear</code> for any view controller using AATKit.
+ (void)controllerViewWillDisappear;
/// Creates or retrieves a sticky banner placement.
/// \param name Unique name for the placement (used in AddApptr dashboard).
///
/// \param size The desired banner size. See <code>AATBannerPlacementSize</code>.
///
///
/// returns:
/// An instance of <code>AATStickyBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATStickyBannerPlacement> _Nullable)createStickyBannerPlacementWithName:(NSString * _Nonnull)name size:(enum AATBannerPlacementSize)size SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Please use createAutoLoadBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/auto-load-banner");
/// Creates or retrieves a multi-size banner placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An instance of <code>AATMultiSizeBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATMultiSizeBannerPlacement> _Nullable)createMultiSizeBannerPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Please use createAutoLoadMultiSizeBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/multi-size-auto-load-banner");
/// Creates or retrieves an auto-loading banner placement.
/// \param name Unique name for the placement.
///
/// \param size The banner size.
///
///
/// returns:
/// An instance of <code>AATAutoLoadBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAutoLoadBannerPlacement> _Nullable)createAutoLoadBannerPlacementWithName:(NSString * _Nonnull)name size:(enum AATBannerPlacementSize)size SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an auto-loading multi-size banner placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An instance of <code>AATAutoLoadMultiSizeBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAutoLoadMultiSizeBannerPlacement> _Nullable)createAutoLoadMultiSizeBannerPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an infeed banner placement.
/// A copy of the configuration is made. Subsequent changes to the config have no effect.
/// \param name Unique name for the placement.
///
/// \param configuration The banner configuration.
///
///
/// returns:
/// An <code>AATInfeedBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATInfeedBannerPlacement> _Nullable)createInfeedBannerPlacementWithName:(NSString * _Nonnull)name configuration:(AATBannerConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a fullscreen ad placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An <code>AATFullscreenPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATFullscreenPlacement> _Nullable)createFullscreenPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a rewarded video placement.
/// Only one rewarded video placement is supported per app.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An <code>AATRewardedVideoPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATRewardedVideoPlacement> _Nullable)createRewardedVideoPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an App Open ad placement.
/// \param placementName Unique name for the placement.
///
///
/// returns:
/// An <code>AATAppOpenAdPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAppOpenAdPlacement> _Nullable)createAppOpenAdPlacementWithPlacementName:(NSString * _Nonnull)placementName SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a native ad placement.
/// \param name Unique name for the placement.
///
/// \param supportsMainImage Indicates whether returned ads should include a main image.
///
///
/// returns:
/// An <code>AATNativeAdPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATNativeAdPlacement> _Nullable)createNativeAdPlacementWithName:(NSString * _Nonnull)name supportsMainImage:(BOOL)supportsMainImage SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a banner cache.
/// \param configuration Banner cache configurations
///
///
/// returns:
/// An <code>AATBannerCache</code>, or <code>nil</code> if creation fails.
+ (id <AATBannerCache> _Nullable)createBannerCacheWithConfiguration:(AATBannerCacheConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Sets the position for the native ad icon (AdChoices).
/// \param position Desired icon position. See <code>AATAdChoicesIconPosition</code>.
///
+ (void)setAdChoicesIconPositionWithPosition:(enum AATAdChoicesIconPosition)position;
/// Enables or disables a specific ad network.
/// \param network The ad network.
///
/// \param enabled <code>true</code> to enable, <code>false</code> to disable.
///
+ (void)setNetworkEnabledWithNetwork:(enum AATAdNetwork)network enabled:(BOOL)enabled;
/// Checks whether a given ad network is enabled.
/// \param network The ad network.
///
///
/// returns:
/// <code>true</code> if enabled, <code>false</code> otherwise.
+ (BOOL)isNetworkEnabledWithNetwork:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
/// Retrieves the value of a given SDK option.
/// Options can be configured via the SDK or fetched from the server.
/// \param optionName The name of the option.
///
///
/// returns:
/// The value of the option, or <code>nil</code> if not set.
+ (NSString * _Nullable)getOptionWithOptionName:(NSString * _Nonnull)optionName SWIFT_WARN_UNUSED_RESULT;
/// Checks whether a given option is enabled.
/// An option is considered enabled if its value is “Yes”.
/// \param optionName The name of the option.
///
///
/// returns:
/// <code>true</code> if the option is enabled, <code>false</code> otherwise.
+ (BOOL)isOptionEnabledWithOptionName:(NSString * _Nonnull)optionName SWIFT_WARN_UNUSED_RESULT;
/// Sets the value for a custom SDK option.
/// \param optionName The name of the option.
///
/// \param optionValue The value to assign to the option.
///
+ (void)setOptionWithOptionName:(NSString * _Nonnull)optionName optionValue:(NSString * _Nonnull)optionValue;
/// Sets global targeting information for the app.
/// This will be used only if no placement-specific targeting is set.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting
/// \param info A dictionary of targeting categories and values.
///
+ (void)setTargetingInfoWithInfo:(NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull)info;
/// Sets structured user targeting information.
/// \param userTargeting An instance of <code>AATUserTargeting</code>.
///
+ (void)setUserTargetingWithUserTargeting:(AATUserTargeting * _Nonnull)userTargeting;
/// Sets a content-level targeting URL.
/// This is used globally unless overridden per placement.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#set-global-targeting-keywords
/// \param targetingUrl The targeting URL string.
///
+ (void)setContentTargetingUrlWithTargetingUrl:(NSString * _Nonnull)targetingUrl;
/// Adds a specific ad network to receive keyword targeting.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#limit-ad-network-specific-keywords
/// \param network The target ad network.
///
+ (void)addAdNetworkForKeywordTargetingWithNetwork:(enum AATAdNetwork)network;
/// Removes an ad network from receiving keyword targeting.
/// If no network is explicitly added, all compatible networks will receive keywords.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#limit-ad-network-specific-keywords
/// \param network The ad network to remove.
///
+ (void)removeAdNetworkForKeywordTargetingWithNetwork:(enum AATAdNetwork)network;
/// Sets the log level for SDK output.
/// \param logLevel Desired log level from the <code>AATLogLevel</code> enum.
///
+ (void)setLogLevelWithLogLevel:(enum AATLogLevel)logLevel;
/// Mutes video ads for supported networks.
/// \param isMuted <code>true</code> to mute, <code>false</code> to allow sound.
///
+ (void)setVideoAdsMuted:(BOOL)isMuted;
/// Indicates whether the app is directed at children.
/// \param isChildDirected <code>true</code> if the app targets children.
///
+ (void)setIsChildDirected:(BOOL)isChildDirected;
/// Assigns the reports delegate to receive SDK reporting callbacks.
/// \param delegate Object conforming to <code>AATReportsDelegate</code>.
///
+ (void)setReportsDelegate:(id <AATReportsDelegate> _Nonnull)delegate;
/// Checks if consent mode is opt-in.
///
/// returns:
/// <code>true</code> if opt-in is required.
+ (BOOL)isConsentOptIn SWIFT_WARN_UNUSED_RESULT;
/// Sets server-side verification info for rewarded ads.
/// \param info An <code>AATRewardedAdSSVInfo</code> object.
///
+ (void)setRewardedAdSSVInfoWithInfo:(AATRewardedAdSSVInfo * _Nonnull)info;
/// Pass DFP bidding targeting key
/// \param key DFP bidding targeting key
///
+ (void)setDFPBidddingTargetingKey:(NSString * _Nonnull)key;
/// Pass DFP bidding prices info
/// \param values array of <code>AATDFPBiddingValue</code>
///
+ (void)setDFPBidddingValues:(NSArray<AATDFPBiddingValue *> * _Nonnull)values;
@end

/// An enum to specify when to show the consent dialog.
typedef SWIFT_ENUM(NSInteger, AATShowIfNeededSetting, open) {
/// Always show the consent dialog.
  AATShowIfNeededSettingAlways = 0,
/// Never show the consent dialog.
  AATShowIfNeededSettingNever = 1,
/// Show the consent dialog depending on server (rules).
  AATShowIfNeededSettingServerSideControl = 2,
};

enum NonIABConsent : NSInteger;
/// Allows to set the status of Non-IAB consent. Will also read the IAB consent string and CCPA string from SharedPreferences if available.
/// see <code>init(nonIABConsent:)</code>
SWIFT_CLASS("_TtC6AATKit16AATSimpleConsent")
@interface AATSimpleConsent : AATConsentImplementation
/// Initialize a simple consent instance. For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/simple-consent">Simple Consent</a>.
/// \param nonIABConsent a <code>NonIABConsent</code> value
///
- (nonnull instancetype)initWithNonIABConsent:(enum NonIABConsent)nonIABConsent OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATSimpleConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// A delegate to receive statistics events
SWIFT_PROTOCOL("_TtP6AATKit21AATStatisticsDelegate_")
@protocol AATStatisticsDelegate
/// Notifies that an ad space has been counted.
/// \param placement the placement that counted the ad space
///
- (void)AATKitCountedAdSpaceWithPlacement:(id <AATPlacement> _Nullable)placement;
/// Notifies that a request has been counted for a given network.
/// \param placement the placement that counted the request
///
/// \param network Network for which the request has been counted.
///
- (void)AATKitCountedRequestWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a response has been counted for a given network.
/// \param placement the placement that counted the response
///
/// \param network Network for which the response has been counted.
///
- (void)AATKitCountedResponseWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that an impression has been counted for a given network.
/// \param placement the placement that counted the impression
///
/// \param network Network for which the impression has been counted.
///
- (void)AATKitCountedImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a <em>network</em> impression has been counted for a given network.
/// \param placement the placement that counted network impression
///
/// \param network Network for which the <em>network</em> impression has been counted.
///
- (void)AATKitCountedNetworkImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a viewable impression has been counted for a given network.
/// \param placement the placement that counted the viewable impression
///
/// \param network Network for which the viewable impression has been counted.
///
- (void)AATKitCountedVImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a click has been counted for a given network.
/// \param placement the placement that counted the click
///
/// \param network Network for which the click has been counted.
///
- (void)AATKitCountedClickWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a direct deal impression has been counted for a given network.
/// \param placement the placement that counted the direct deal impression
///
/// \param network Network for which the direct deal impression has been counted.
///
- (void)AATKitCountedDirectDealImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a mediation cycle has been counted.
/// \param placement the placement that counted the mediation cycle
///
- (void)AATKitCountedMediationCycleWithPlacement:(id <AATPlacement> _Nullable)placement;
@end

@protocol AATStickyBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit24AATStickyBannerPlacement_") SWIFT_DEPRECATED_MSG("Please use AATAutoLoadBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/auto-load-banner")
@protocol AATStickyBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATStickyBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Start the automatic reloading of the placement using specific time interval
- (void)startAutoReloadWithSeconds:(NSTimeInterval)seconds;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Set the placement auto reload interval
/// \param seconds auto reload interval
///
- (void)setAutoreloadIntervalWithSeconds:(NSTimeInterval)seconds;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
/// \param forceLoad True if you want to be able to reload and show new banner before set banner reload interval (default: 30s) between reloads, false otherwise.
///
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad SWIFT_WARN_UNUSED_RESULT;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reload SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Returns placement view. Works only for banner placements.
///
/// returns:
/// Placement view
- (UIView * _Nullable)getPlacementView SWIFT_WARN_UNUSED_RESULT;
/// Sets placement default image. This image will be shown in placement when no ad is available.
/// \param image The image to set.
///
- (void)setDefaultImageWithImage:(UIImage * _Nonnull)image;
/// Sets gravity for ads that don’t fill entire placement area. Works only for sticky banner placements.
/// \param alignment The alignment to set.
///
- (void)setBannerAlignWithAlignment:(AATBannerAlign * _Nonnull)alignment;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATStaticBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit32AATStickyBannerPlacementDelegate_")
@protocol AATStickyBannerPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

@class BannerOptions;
@class InterstitialAdOptions;
@class RewardedVideoOptions;
/// Configuration options for SuperAwesome ad network integrations.
SWIFT_CLASS("_TtC6AATKit22AATSuperAwesomeOptions")
@interface AATSuperAwesomeOptions : NSObject
/// Initializes a new <code>AATSuperAwesomeOptions</code> instance.
/// \param bannerOptions Banner ad options.
///
/// \param interstitialAdOptions Interstitial ad options.
///
/// \param rewardedVideoOptionsOptions Rewarded video ad options.
///
- (nonnull instancetype)initWithBannerOptions:(BannerOptions * _Nullable)bannerOptions interstitialAdOptions:(InterstitialAdOptions * _Nullable)interstitialAdOptions rewardedVideoOptionsOptions:(RewardedVideoOptions * _Nullable)rewardedVideoOptionsOptions OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Orientation options for ads.
typedef SWIFT_ENUM(NSInteger, Orientation, closed) {
/// Any orientation.
  OrientationAny = 0,
/// Portrait only.
  OrientationPortrait = 1,
/// Landscape only.
  OrientationLandscape = 2,
};

/// Close button display behavior.
typedef SWIFT_ENUM(NSInteger, CloseButtonState, closed) {
/// Close button enabled with default delay.
  CloseButtonStateEnabled = 0,
/// Close button enabled with no delay.
  CloseButtonStateEnabledNoDelay = 1,
};

/// Base network options for SuperAwesome ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions14NetworkOptions")
@interface NetworkOptions : NSObject
/// Initializes a new <code>NetworkOptions</code> instance.
/// \param parentalGateEnabled Enable or disable the Parental Gate.
///
/// \param bumperPageEnabled Enable or disable the Bumper page.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo for the Bumper page.
///
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Banner ad options specific to SuperAwesome.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions13BannerOptions")
@interface BannerOptions : NetworkOptions
/// Initializes a new <code>BannerOptions</code> instance.
/// \param parentalGateEnabled Enables or disables the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enables or disables the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name to display on the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
/// \param isBackgroundTransparent Enables or disables transparent background. Default is <code>true</code>.
///
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo isBackgroundTransparent:(BOOL)isBackgroundTransparent OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Configuration options for SuperAwesome interstitial ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions21InterstitialAdOptions")
@interface InterstitialAdOptions : NetworkOptions
/// Initializes a new <code>InterstitialAdOptions</code> instance.
/// \param orientation The orientation to display the ad. Default is <code>.any</code>.
///
/// \param closeButtonState The state of the close button, of type <code>AATSuperAwesomeOptions/CloseButtonState</code>. Default is <code>.enabled</code>.
///
/// \param parentalGateEnabled Enable or disable the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enable or disable the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
- (nonnull instancetype)initWithOrientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Configuration options for SuperAwesome rewarded video ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions20RewardedVideoOptions")
@interface RewardedVideoOptions : InterstitialAdOptions
/// Initializes a new <code>RewardedVideoOptions</code> instance.
/// \param closeButtonAtEnd Enables or disables auto-closing at the end. Default is <code>false</code>.
///
/// \param smallClickEnabled Enables or disables the small click button. Default is <code>false</code>.
///
/// \param closeButtonWarningEnabled Enables or disables the close button warning. Default is <code>false</code>.
///
/// \param orientation The ad orientation. Default is <code>.any</code>.
///
/// \param closeButtonState The state of the close button of type <code>AATSuperAwesomeOptions/CloseButtonState</code>. Default is <code>.enabled</code>.
///
/// \param parentalGateEnabled Enables or disables the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enables or disables the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
- (nonnull instancetype)initWithCloseButtonAtEnd:(BOOL)closeButtonAtEnd smallClickEnabled:(BOOL)smallClickEnabled closeButtonWarningEnabled:(BOOL)closeButtonWarningEnabled orientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithOrientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

SWIFT_CLASS("_TtC6AATKit18AATSupplyChainData")
@interface AATSupplyChainData : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents user-specific targeting information used by AATKit.
SWIFT_CLASS("_TtC6AATKit16AATUserTargeting")
@interface AATUserTargeting : NSObject
/// Initializes a new instance of <code>AATUserTargeting</code> with optional user-specific targeting values.
/// \param userId A unique identifier for the user.
///
/// \param gender The user’s gender. Default is <code>AATGender/unknown</code>.
///
/// \param yearOfBirth The user’s year of birth. Must be a 4-digit number; otherwise it will be ignored.
///
/// \param keywords Targeting keywords associated with the user.
///
- (nonnull instancetype)initWithUserId:(NSString * _Nullable)userId gender:(enum AATGender)gender yearOfBirth:(NSNumber * _Nullable)yearOfBirth keywords:(NSArray<NSString *> * _Nullable)keywords OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the <code>AATUserTargeting</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATVendorConsentDelegate;
/// AATKit vendor consent. Should be initialised with <code>AATVendorConsentDelegate</code>
/// see <code>init(delegate:)</code>
SWIFT_CLASS("_TtC6AATKit16AATVendorConsent")
@interface AATVendorConsent : AATConsentImplementation
/// Initialize a vendor consent instance. For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/vendor-consent">Vendor Consent</a>.
/// Will read the IAB consent string and CCPA string from UserDefaults if available.
/// \param delegate an instance of <code>AATVendorConsentDelegate</code>
///
- (nonnull instancetype)initWithDelegate:(id <AATVendorConsentDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATVendorConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// The delegate for receiving events from <code>AATVendorConsent</code>.
SWIFT_PROTOCOL("_TtP6AATKit24AATVendorConsentDelegate_")
@protocol AATVendorConsentDelegate
/// Gets the consent for an ad network.
/// \param network an <code>AATAdNetwork</code> to get the consent for.
///
///
/// returns:
/// A <code>NonIABConsent</code> state for the passed ad network.
- (enum NonIABConsent)getConsentForNetwork:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
/// Gets the consent for AddApptr GmbH as the legal entity holding the Gravite brand.
///
/// returns:
/// A <code>NonIABConsent</code> state for AddApptr GmbH.
- (enum NonIABConsent)getConsentForAddapptr SWIFT_WARN_UNUSED_RESULT;
@end

/// NonIABConsent.
typedef SWIFT_ENUM(NSInteger, NonIABConsent, open) {
/// <ul>
///   <li>
///     Unknown - if the user has never set a consent state.
///   </li>
/// </ul>
  NonIABConsentUnknown = 0,
/// <ul>
///   <li>
///     Consent has been granted by the user.
///   </li>
/// </ul>
  NonIABConsentObtained = 1,
/// <ul>
///   <li>
///     Consent has been declined by the user.
///   </li>
/// </ul>
  NonIABConsentWithheld = 2,
};

@interface PlacementDebugInfo (SWIFT_EXTENSION(AATKit))
@end

/// Placement frequency capping information
SWIFT_CLASS("_TtCCC6AATKit12AATDebugInfo18PlacementDebugInfo25FrequencyCappingDebugInfo")
@interface FrequencyCappingDebugInfo : NSObject
/// Maximum number of impressions allowed during a single session
@property (nonatomic) NSInteger maxImpressionsPerSession;
/// Maximum number of impressions allowed within one hour
@property (nonatomic) NSInteger maxImpressionsPerHour;
/// Maximum number of impressions allowed in a 24-hour period
@property (nonatomic) NSInteger maxImpressionsPerDay;
/// Maximum number of impressions allowed in a 7-day period
@property (nonatomic) NSInteger maxImpressionsPerWeek;
/// Maximum number of impressions allowed in a calendar month
@property (nonatomic) NSInteger maxImpressionsPerMonth;
/// Minimum required time (in seconds) between two impressions
@property (nonatomic) NSTimeInterval minTimeBetweenImpressions;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

#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.3 effective-5.10 (swiftlang-6.2.3.3.21 clang-1700.6.3.2)
#ifndef AATKIT_SWIFT_H
#define AATKIT_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 CoreFoundation;
@import CoreLocation;
@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="AATKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

SWIFT_CLASS("_TtC6AATKit19AATAbstractAdConfig")
@interface AATAbstractAdConfig : NSObject <NSCopying>
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents possible positions for the AdChoices icon on a native ad.
typedef SWIFT_ENUM(NSInteger, AATAdChoicesIconPosition, closed) {
/// Position the AdChoices icon at the top-left corner.
  AATAdChoicesIconPositionTopLeft = 0,
/// Position the AdChoices icon at the top-right corner.
  AATAdChoicesIconPositionTopRight = 1,
/// Position the AdChoices icon at the bottom-left corner.
  AATAdChoicesIconPositionBottomLeft = 2,
/// Position the AdChoices icon at the bottom-right corner.
  AATAdChoicesIconPositionBottomRight = 3,
};

SWIFT_CLASS("_TtC6AATKit11AATAdConfig")
@interface AATAdConfig : AATAbstractAdConfig
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@interface AATAdConfig (SWIFT_EXTENSION(AATKit))
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

@class NSString;
@interface AATAdConfig (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly) NSUInteger hash;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

SWIFT_CLASS("_TtC6AATKit14AATAdDebugInfo")
@interface AATAdDebugInfo : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATPlacement;
/// Conform to this protocol to be notified about the ads display events
SWIFT_PROTOCOL("_TtP6AATKit20AATAdDisplayDelegate_")
@protocol AATAdDisplayDelegate
/// This method will be called when the app is paused for an ad.
/// <em>NOTE:</em> This callback is unreliable due to inconsistent use of callbacks in different ad network SDKs.
- (void)aatPauseForAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
/// This method will be called when the app resumes after displaying an ad
/// <em>NOTE:</em> This callback is unreliable due to inconsistent use of callbacks in different ad network SDKs.
- (void)aatResumeAfterAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

@class AATPriceInfo;
/// Contains information about an ad, including its pricing details.
SWIFT_CLASS("_TtC6AATKit9AATAdInfo")
@interface AATAdInfo : NSObject
/// The price information associated with the ad.
@property (nonatomic, readonly, strong) AATPriceInfo * _Nullable priceInfo;
/// A string representation of the <code>AATAdInfo</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATAdMobCustomEventsDelegate;
SWIFT_PROTOCOL("_TtP6AATKit20AATAdMobCustomEvents_")
@protocol AATAdMobCustomEvents
- (void)setCustomEventDelegate:(id <AATAdMobCustomEventsDelegate> _Nonnull)delegate;
@end

@class AATReward;
SWIFT_PROTOCOL("_TtP6AATKit28AATAdMobCustomEventsDelegate_")
@protocol AATAdMobCustomEventsDelegate
- (void)customEventLoaderDidFailAd;
- (void)customEventLoaderDidReceiveAd;
- (void)customEventReportImpression;
- (void)customEventWillPresentModal;
- (void)customEventWillDismissModal;
- (void)customEventDidDismissModal;
- (void)customEventWasClicked;
- (void)didRewardUserWithReward:(AATReward * _Nonnull)reward;
@end

/// Configuration options for AdMob ads.
SWIFT_CLASS("_TtC6AATKit15AATAdMobOptions")
@interface AATAdMobOptions : NSObject
/// Initializes a new instance of <code>AATAdMobOptions</code>.
/// \param inlineBannerMaxHeight The maximum height for AdMob inline adaptive banners.
///
- (nonnull instancetype)initWithInlineBannerMaxHeight:(NSInteger)inlineBannerMaxHeight OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents supported ad networks used by AATKit.
/// This enum lists all the ad networks integrated with the SDK.
typedef SWIFT_ENUM(NSInteger, AATAdNetwork, open) {
/// InMobi ad network.
  AATAdNetworkINMOBI = 0,
/// Mintegral ad network.
  AATAdNetworkMINTEGRAL = 1,
/// Google AdMob ad network.
  AATAdNetworkADMOB = 2,
/// Represents no ad network.
  AATAdNetworkEMPTY = 3,
/// AppLovin ad network.
  AATAdNetworkAPPLOVIN = 4,
/// SmartAd ad network.
  AATAdNetworkSMARTAD = 5,
/// SmartAd Server Direct integration.
  AATAdNetworkSMARTADSERVERDIRECT = 6,
/// RTB2 ad network.
  AATAdNetworkRTB2 = 7,
/// Google AdManager (DFP).
  AATAdNetworkDFP = 8,
/// Facebook Audience Network.
  AATAdNetworkFACEBOOK = 9,
/// FeedAd network.
  AATAdNetworkFEEDAD = 10,
/// Unity Ads network.
  AATAdNetworkUNITY = 11,
/// AppNexus (Xandr) ad network.
  AATAdNetworkAPPNEXUS = 12,
/// Ogury ad network.
  AATAdNetworkOGURY = 13,
/// Amazon Header Bidding.
  AATAdNetworkAMAZONHB = 14,
/// PubNative (HyBid) ad network.
  AATAdNetworkPUBNATIVE = 15,
/// Teads ad network.
  AATAdNetworkTEADS = 16,
/// Tappx ad network.
  AATAdNetworkTAPPX = 17,
/// YOC ad network.
  AATAdNetworkYOC = 18,
/// Vungle ad network.
  AATAdNetworkVUNGLE2 = 19,
/// DFP Direct integration.
  AATAdNetworkDFPDIRECT = 20,
/// IronSource  ad network.
  AATAdNetworkIRONSOURCENEW = 21,
/// Gravite RTBSDK ad network.
  AATAdNetworkGRAVITERTB = 22,
/// SuperAwesome ad network.
  AATAdNetworkSUPERAWESOME = 23,
/// Kidoz ad network.
  AATAdNetworkKIDOZ = 24,
/// Display IO ad network.
  AATAdNetworkDISPLAYIO = 25,
/// AdMob bidding network, used internally.
  AATAdNetworkADMOBBIDDING = 26,
/// Meta bidding network, used internally.
  AATAdNetworkMETABIDDING = 27,
  AATAdNetworkMOLOCOBIDDING = 28,
/// Vungle bidding network, used internally.
  AATAdNetworkVUNGLEBIDDING = 29,
};

SWIFT_PROTOCOL("_TtP6AATKit16AATInitializable_")
@protocol AATInitializable
- (nonnull instancetype)init;
@end

SWIFT_PROTOCOL("_TtP6AATKit33AATAdNetworkDriverVersionProtocol_")
@protocol AATAdNetworkDriverVersionProtocol <AATInitializable>
- (NSString * _Nonnull)getVersion SWIFT_WARN_UNUSED_RESULT;
@end

@class AATAppNexusOptions;
@class AATFeedAdOptions;
@class AATDFPOptions;
@class AATSuperAwesomeOptions;
@class AATGraviteRTBOptions;
@class AATDisplayIOOptions;
@class AATMetaBiddingOptions;
/// Configuration container for multiple ad network options.
/// This class aggregates the configuration options for various supported ad networks,
/// allowing easy setup of network-specific settings in one place.
SWIFT_CLASS("_TtC6AATKit20AATAdNetworksOptions")
@interface AATAdNetworksOptions : NSObject
/// Initializes a new instance of <code>AATAdNetworksOptions</code> with optional parameters.
/// \param appNexusOptions Configuration for AppNexus. Defaults to <code>nil</code>.
///
/// \param feedAdOptions Configuration for feed ads. Defaults to <code>nil</code>.
///
/// \param adMobOptions Configuration for AdMob. Defaults to <code>nil</code>.
///
/// \param dfpOptions Configuration for DFP. Defaults to <code>nil</code>.
///
/// \param superAwesomeOptions Configuration for SuperAwesome. Defaults to <code>nil</code>.
///
/// \param graviteRTBOptions Configuration for Gravite RTB SDK. Defaults to <code>nil</code>.
///
/// \param displayIOOptions Configuration for Display IO. Defaults to <code>nil</code>.
///
/// \param metaBiddingOptions Configuration for Meta bidding. Defaults to <code>nil</code>.
///
- (nonnull instancetype)initWithAppNexusOptions:(AATAppNexusOptions * _Nullable)appNexusOptions feedAdOptions:(AATFeedAdOptions * _Nullable)feedAdOptions adMobOptions:(AATAdMobOptions * _Nullable)adMobOptions dfpOptions:(AATDFPOptions * _Nullable)dfpOptions superAwesomeOptions:(AATSuperAwesomeOptions * _Nullable)superAwesomeOptions graviteRTBOptions:(AATGraviteRTBOptions * _Nullable)graviteRTBOptions displayIOOptions:(AATDisplayIOOptions * _Nullable)displayIOOptions metaBiddingOptions:(AATMetaBiddingOptions * _Nullable)metaBiddingOptions OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_PROTOCOL("_TtP6AATKit20AATAdQualityDelegate_")
@protocol AATAdQualityDelegate
/// /// Called when the ad should be blocked or reported
/// \param placement placement instance
///
/// \param blockReasons Blocked reason string array
///
/// \param reportReasons Reported reason string array
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdIncidentWithPlacement:(id <AATPlacement> _Nonnull)placement blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when the ad should be blocked or reported after display
/// \param placement placement instance
///
/// \param blockReasons Blocked reason string array
///
/// \param reportReasons Reported reason string array
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdIncidentOnDisplayWithPlacement:(id <AATPlacement> _Nonnull)placement blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when an ad is successfully verified
/// \param placement placement instance
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdVerifiedWithPlacement:(id <AATPlacement> _Nonnull)placement adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
/// Called when the ad is not verified within the specified time or for unsupported adNetworkSdk
/// \param placement placement instance
///
/// \param error The error describing the ad not verified state
///
/// \param adNetworkSdk The mediated ad network sdk
///
- (void)didAdNotVerifiedWithPlacement:(id <AATPlacement> _Nonnull)placement error:(NSError * _Nonnull)error adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
@end

enum AATAdType : NSInteger;
SWIFT_PROTOCOL("_TtP6AATKit26AATAdQualityDriverDelegate_")
@protocol AATAdQualityDriverDelegate
- (void)didAdVerifiedWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdNotVerifiedWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat error:(NSError * _Nonnull)error adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdIncidentWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
- (void)didAdIncidentOnDisplayWithAd:(NSObject * _Nonnull)ad adFormat:(enum AATAdType)adFormat blockReasons:(NSArray<NSString *> * _Nonnull)blockReasons reportReasons:(NSArray<NSString *> * _Nonnull)reportReasons adNetworkSdk:(enum AATAdNetwork)adNetworkSdk;
@end

SWIFT_PROTOCOL("_TtP6AATKit26AATAdQualityDriverProtocol_")
@protocol AATAdQualityDriverProtocol
@property (nonatomic, strong) id <AATAdQualityDriverDelegate> _Nullable delegate;
- (void)verifyAdWithAd:(NSObject * _Nonnull)ad adNetwork:(enum AATAdNetwork)adNetwork format:(enum AATAdType)format adUnitId:(NSString * _Nullable)adUnitId;
- (void)willDisplayAdWithAd:(NSObject * _Nonnull)ad adNetwork:(enum AATAdNetwork)adNetwork format:(enum AATAdType)format adUnitId:(NSString * _Nullable)adUnitId;
- (void)didClickAdWithAd:(NSObject * _Nonnull)ad;
- (void)removeAdWithAd:(NSObject * _Nonnull)ad;
@end

SWIFT_PROTOCOL("_TtP6AATKit27AATAdQualityManagerProtocol_")
@protocol AATAdQualityManagerProtocol
- (id <AATAdQualityDriverProtocol> _Nonnull)initDriver SWIFT_METHOD_FAMILY(none) SWIFT_WARN_UNUSED_RESULT;
@end

/// Represents the ad formats supported by AATKit.
typedef SWIFT_ENUM(NSInteger, AATAdType, open) {
/// Fullscreen ads, covering the entire screen.
  AATAdTypeFullscreen = 0,
/// Banner ads.
  AATAdTypeBanner = 1,
/// Native ads, integrated within app content.
  AATAdTypeNative = 2,
/// Rewarded ads that offer incentives to users.
  AATAdTypeRewarded = 3,
/// App open ads.
  AATAdTypeAppOpen = 4,
};

@class NSNumber;
enum ClickThroughAction : NSInteger;
/// Configuration options for AppNexus ads.
SWIFT_CLASS("_TtC6AATKit18AATAppNexusOptions")
@interface AATAppNexusOptions : NSObject
/// Initializes a new instance of <code>AATAppNexusOptions</code>.
/// \param autoCloseTime Optional delay in seconds after which a full-screen ad will be dismissed. Default is <code>nil</code>.
///
/// \param supportNativeBanner Boolean indicating if banner ads can serve native ads. Default is <code>false</code>.
///
/// \param clickThroughAction Specifies what happens when a user clicks on an ad.
///
- (nonnull instancetype)initWithAutoCloseTime:(NSNumber * _Nullable)autoCloseTime supportNativeBanner:(BOOL)supportNativeBanner clickThroughAction:(enum ClickThroughAction)clickThroughAction OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Defines how an ad click is handled when the user taps on it.
typedef SWIFT_ENUM(NSInteger, ClickThroughAction, open) {
/// Uses the SDK’s default click-through behavior.
  ClickThroughActionDefault = 0,
/// Opens ad in the system browser.
  ClickThroughActionOpenDeviceBrowser = 1,
/// Opens the ad in an in-app browser.
  ClickThroughActionOpenSDKBrowser = 2,
};

SWIFT_PROTOCOL("_TtP6AATKit12AATPlacement_")
@protocol AATPlacement
/// Get placement name.
///
/// returns:
/// The placement name.
- (NSString * _Nonnull)getName SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATAppOpenPlacementDelegate;
@protocol AATStatisticsDelegate;
@protocol AATImpressionDelegate;
SWIFT_PROTOCOL("_TtP6AATKit21AATAppOpenAdPlacement_")
@protocol AATAppOpenAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATAppOpenPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to be notified when there is no ad available
SWIFT_PROTOCOL("_TtP6AATKit15AATNoAdDelegate_")
@protocol AATNoAdDelegate
/// This method will be called when there is no ad available
- (void)aatNoAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

/// Conform to this protocol to be notified when there is an ad
SWIFT_PROTOCOL("_TtP6AATKit17AATHaveAdDelegate_")
@protocol AATHaveAdDelegate
/// This method will be called when there is an ad
- (void)aatHaveAdWithPlacement:(id <AATPlacement> _Nonnull)placement;
@end

/// Conform to this protocol to listen to the AATFullscreenPlacement events
SWIFT_PROTOCOL("_TtP6AATKit30AATFullscreenPlacementDelegate_")
@protocol AATFullscreenPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

/// Conform to this protocol to listen to the AATAppOpenPlacement events
SWIFT_PROTOCOL("_TtP6AATKit27AATAppOpenPlacementDelegate_")
@protocol AATAppOpenPlacementDelegate <AATFullscreenPlacementDelegate>
@end

@protocol AATInfeedBannerPlacementDelegate;
@class AATCollapsibleBannerOptions;
@class AATBannerRequest;
@class AATBannerPlacementWrapperView;
@class AATPlacementHistoryInfo;
SWIFT_PROTOCOL("_TtP6AATKit29AATAsyncInfeedBannerPlacement_")
@protocol AATAsyncInfeedBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATInfeedBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Request banner ad from the placement
/// \param request the <code>AATBannerRequest</code> to be used
///
/// \param completionHandler completion block
///
///
/// returns:
/// <code>AATBannerPlacementWrapperView</code>
- (void)requestAdWithRequest:(AATBannerRequest * _Nonnull)request completionHandler:(void (^ _Nonnull)(AATBannerPlacementWrapperView * _Nullable))completionHandler;
/// Manually Count an Ad Space
- (void)countAdSpace;
/// Enables keeping creatives history
/// \param size Maximum number of creatives to keep
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Get saved creatives history
/// \param completion An array of <code>AATPlacementHistoryInfo</code> representing creatives history
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

@protocol AATAsyncNativePlacementDelegate;
@protocol AATNativeAdData;
SWIFT_PROTOCOL("_TtP6AATKit25AATAsyncNativeAdPlacement_")
@protocol AATAsyncNativeAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATAsyncNativePlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Requests placement reload
///
/// returns:
/// AATNativeAdData
- (void)reloadWithCompletionHandler:(void (^ _Nonnull)(id <AATNativeAdData> _Nullable))completionHandler;
/// Returns how many ads are currently loading for given native ad placement.
///
/// returns:
/// Number of ads that are currently loading for given placement.
- (NSInteger)getNumberOfCurrentlyLoadingNativeAds SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Manually Count an Ad Space
- (BOOL)reportAdSpace SWIFT_WARN_UNUSED_RESULT;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to listen to the AATAsyncNativePlacement events
SWIFT_PROTOCOL("_TtP6AATKit31AATAsyncNativePlacementDelegate_")
@protocol AATAsyncNativePlacementDelegate <AATAdDisplayDelegate>
@end

@protocol AATAutoLoadBannerPlacementDelegate;
@class UIView;
@class UIImage;
@class AATBannerAlign;
SWIFT_PROTOCOL("_TtP6AATKit26AATAutoLoadBannerPlacement_")
@protocol AATAutoLoadBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATAutoLoadBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Returns placement view. Works only for banner placements.
///
/// returns:
/// Placement view
- (UIView * _Nullable)getPlacementView SWIFT_WARN_UNUSED_RESULT;
/// Sets placement default image. This image will be shown in placement when no ad is available.
/// \param image The image to set.
///
- (void)setDefaultImageWithImage:(UIImage * _Nonnull)image;
/// Sets gravity for ads that don’t fill entire placement area. Works only for sticky banner placements.
/// \param alignment The alignment to set.
///
- (void)setBannerAlignWithAlignment:(AATBannerAlign * _Nonnull)alignment;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATStaticBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit34AATAutoLoadBannerPlacementDelegate_")
@protocol AATAutoLoadBannerPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

@protocol AATAutoLoadMultiSizeBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit35AATAutoLoadMultiSizeBannerPlacement_")
@protocol AATAutoLoadMultiSizeBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATAutoLoadMultiSizeBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATMultiSizeBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit43AATAutoLoadMultiSizeBannerPlacementDelegate_")
@protocol AATAutoLoadMultiSizeBannerPlacementDelegate <AATAdDisplayDelegate, AATNoAdDelegate>
/// This method will be called when there is an ad
- (void)aatHaveAdWithBannerViewWithPlacement:(id <AATPlacement> _Nonnull)placement bannerView:(AATBannerPlacementWrapperView * _Nonnull)bannerView;
@end

enum VerticalAlign : NSInteger;
enum HorizontalAlign : NSInteger;
/// <code>AATBannerAlign</code> defines the alignment of a banner within its superview.
SWIFT_CLASS("_TtC6AATKit14AATBannerAlign")
@interface AATBannerAlign : NSObject
/// Banner vertical alignment of type <code>VerticalAlign</code>.
@property (nonatomic, readonly) enum VerticalAlign verticalAlign;
/// Banner horizontal alignment of type <code>HorizontalAlign</code>.
@property (nonatomic, readonly) enum HorizontalAlign horizontalAlign;
/// Creates a new instance of <code>AATBannerAlign</code>.
/// \param horizontalAlign The horizontal alignment for the banner.
///
/// \param verticalAlign The vertical alignment for the banner.
///
- (nonnull instancetype)initWithHorizontalAlign:(enum HorizontalAlign)horizontalAlign verticalAlign:(enum VerticalAlign)verticalAlign OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// <code>HorizontalAlign</code> specifies the possible horizontal alignments for a banner.
typedef SWIFT_ENUM(NSInteger, HorizontalAlign, open) {
/// Aligns the banner to the leading (left in LTR, right in RTL) edge of the superview.
  HorizontalAlignLeading = 0,
/// Aligns the banner to the trailing (right in LTR, left in RTL) edge of the superview.
  HorizontalAlignTrailing = 1,
/// Aligns the banner to the center of the superview horizontally.
  HorizontalAlignCenter = 2,
};

/// <code>VerticalAlign</code> specifies the possible vertical alignments for a banner.
typedef SWIFT_ENUM(NSInteger, VerticalAlign, open) {
/// Aligns the banner to the top edge of the superview.
  VerticalAlignTop = 0,
/// Aligns the banner to the bottom edge of the superview.
  VerticalAlignBottom = 1,
/// Aligns the banner to the center of the superview vertically.
  VerticalAlignCenter = 2,
};

@protocol AATBannerCacheStatusDelegate;
/// A cache of automatically preloaded banner ads.
/// The cache will always try to have a defined amount of banners available for immediate handout to the app whenever they are needed. <em>Note:</em> The BannerCache needs to be destroyed when no longer needed.
SWIFT_PROTOCOL("_TtP6AATKit14AATBannerCache_")
@protocol AATBannerCache
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// The delegate that represents the cache status
@property (nonatomic, strong) id <AATBannerCacheStatusDelegate> _Nullable cacheStatusDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Updates the configuration that will be used when requesting new banners.
/// \param requestConfiguration AATBannerRequest instance
///
/// \param shouldRefresh True if the whole cache should be re-loaded with new banner request configuration, false if new configuration should only be used for new requests.
///
- (void)updateRequestConfiguration:(AATBannerRequest * _Nonnull)requestConfiguration shouldRefresh:(BOOL)shouldRefresh;
/// Returns an instance of <code>AATBannerPlacementWrapperView</code> to be used within the app. Also automatically counts an ad space.
/// BannerCache will no longer hold any references to returned banners, and they need to be destroyed manually by the app.
/// \param force true if cache should try to return banner ignoring the frequency capping set by <code>AATBannerCacheConfiguration/minDelay</code>.
///
///
/// returns:
/// Ad View to be displayed.
- (AATBannerPlacementWrapperView * _Nullable)consumeWithForce:(BOOL)force SWIFT_WARN_UNUSED_RESULT;
/// Returns an instance of <code>AATBannerPlacementWrapperView</code> to be used within the app. Also automatically counts an ad space. It will respect the frequency capping set by <code>AATBannerCacheConfiguration/minDelay</code>.
/// BannerCache will no longer hold any references to returned banners, and they need to be destroyed manually by the app.
///
/// returns:
/// Ad View to be displayed.
- (AATBannerPlacementWrapperView * _Nullable)consume SWIFT_WARN_UNUSED_RESULT;
/// Destroys the BannerCache, clearing all preloaded banner ads and canceling pending reload requests.
/// <ul>
///   <li>
///     For proper memory management, it needs to be called when the BannerCache is no longer needed.
///   </li>
///   <li>
///     Destroyed BannerCache can no longer be used
///   </li>
/// </ul>
- (void)destroy;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

@protocol AATBannerCacheDelegate;
@protocol AATBannerRequestDelegate;
/// A configuration object to be used when creating AATBannerCache
SWIFT_CLASS("_TtC6AATKit27AATBannerCacheConfiguration")
@interface AATBannerCacheConfiguration : NSObject
/// The banner cache delegate that would be notified with the first loaded banner
@property (nonatomic, weak) id <AATBannerCacheDelegate> _Nullable delegate;
/// An instance of <code>AATBannerRequestDelegate</code> that should provide the targeting information
@property (nonatomic, weak) id <AATBannerRequestDelegate> _Nullable bannerRequestDelegate;
/// A Bool that defines if the cache should load an additional ad at the beginning. False by default
@property (nonatomic) BOOL shouldCacheAdditionalAdAtStart;
/// An instance of AATBannerRequest that will be used in requesting banner ads from the AATInfeedBannerPlacement.
@property (nonatomic, strong) AATBannerRequest * _Nonnull requestConfiguration;
/// Represents the minimum delay between two banner consumptions in seconds
@property (nonatomic) NSTimeInterval minDelay;
/// Represents the failure retry interval in seconds.
@property (nonatomic) NSTimeInterval retryInterval;
/// Init the <code>AATBannerCacheConfiguration</code> object
/// \param placementName the placement name
///
/// \param size the desired cache size
///
- (nonnull instancetype)initWithPlacementName:(NSString * _Nonnull)placementName size:(NSInteger)size OBJC_DESIGNATED_INITIALIZER;
/// Init the <code>AATBannerCacheConfiguration</code> object
/// \param placementName the placement name
///
- (nonnull instancetype)initWithPlacementName:(NSString * _Nonnull)placementName OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATBannerCacheConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

SWIFT_PROTOCOL("_TtP6AATKit22AATBannerCacheDelegate_")
@protocol AATBannerCacheDelegate
/// Will be called when the cache loads the first banner successfully
- (void)firstBannerLoaded;
@end

/// The delegate that represents the cache status
SWIFT_PROTOCOL("_TtP6AATKit28AATBannerCacheStatusDelegate_")
@protocol AATBannerCacheStatusDelegate
/// Will be called when the cache was empty and has been filled with at least one ad
- (void)cacheIsNoLongerEmpty;
/// Will be called when the cache was filled and has been consumed and became empty
- (void)cacheIsEmpty;
@end

/// Configuration class for banners, allowing customization of their behavior.
SWIFT_CLASS("_TtC6AATKit22AATBannerConfiguration")
@interface AATBannerConfiguration : NSObject
/// A boolean indicating whether ad space counting is handled manually.
/// If <code>true</code>, the developer is responsible for managing ad space counting; otherwise, it’s handled automatically.
@property (nonatomic) BOOL isManualAdSpaceCounting;
/// Options for configuring a collapsible banner.
/// If <code>nil</code>, the banner will not be collapsible.
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Initializes a new, default <code>AATBannerConfiguration</code> instance.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Sets the number of workers to be used.
/// \param numberOfWorkers The desired number of workers. Must be greater than 0.
/// If a non-positive value is provided, the setting will be ignored and an error will be logged.
///
- (void)setNumberOfWorkers:(NSInteger)numberOfWorkers;
/// A string representation of the <code>AATBannerConfiguration</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@interface AATBannerConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

/// Defines standard banner ad placement sizes supported by AATKit.
/// Each case corresponds to a specific banner dimension (width x height in points).
typedef SWIFT_ENUM(NSInteger, AATBannerPlacementSize, open) {
/// Banner size 320x53 points.
  AATBannerPlacementSizeBanner320x53 = 0,
/// Banner size 320x50 points.
  AATBannerPlacementSizeBanner320x50 = 1,
/// Banner size 375x50 points.
  AATBannerPlacementSizeBanner375x50 = 2,
/// Banner size 390x50 points.
  AATBannerPlacementSizeBanner390x50 = 3,
/// Banner size 414x50 points.
  AATBannerPlacementSizeBanner414x50 = 4,
/// Banner size 428x50 points.
  AATBannerPlacementSizeBanner428x50 = 5,
/// Banner size 768x90 points.
  AATBannerPlacementSizeBanner768x90 = 6,
/// Banner size 300x250 points (medium rectangle).
  AATBannerPlacementSizeBanner300x250 = 7,
/// Banner size 468x60 points (full banner).
  AATBannerPlacementSizeBanner468x60 = 8,
/// Banner size 320x75 points.
  AATBannerPlacementSizeBanner320x75 = 9,
/// Banner size 320x100 points.
  AATBannerPlacementSizeBanner320x100 = 10,
/// Banner size 320x150 points.
  AATBannerPlacementSizeBanner320x150 = 11,
/// Banner size 320x160 points.
  AATBannerPlacementSizeBanner320x160 = 12,
/// Banner size 300x50 points.
  AATBannerPlacementSizeBanner300x50 = 13,
/// Banner size 320x480 points.
  AATBannerPlacementSizeBanner320x480 = 14,
};

@class NSCoder;
/// Loaded banner wrapper view
SWIFT_CLASS("_TtC6AATKit29AATBannerPlacementWrapperView")
@interface AATBannerPlacementWrapperView : UIView
/// Loaded ad information
@property (nonatomic, strong) AATAdInfo * _Nullable adInfo;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (void)didMoveToSuperview;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

/// The banner request that will be used by the infeed banner placement.
SWIFT_CLASS("_TtC6AATKit16AATBannerRequest")
@interface AATBannerRequest : NSObject
/// The targeting information for this request, typically used to
/// narrow down the audience for ad delivery.
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInformation;
/// The content targeting URL for this request, used for contextual ad targeting.
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// An array of content targeting URLs for this request, allowing for multiple content contexts.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// A dictionary of network key replacements for this request.
/// This allows for replacing macros defined in ad keys with actual values at runtime.
/// Please contact your Account Manager before using this feature to ensure proper implementation.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable networkKeyReplacements;
/// The delegate for this banner request, conforming to <code>AATBannerRequestDelegate</code>.
/// This delegate receives callbacks related to the banner request lifecycle.
@property (nonatomic, weak) id <AATBannerRequestDelegate> _Nullable delegate;
/// GPID value to be passed to networks.
@property (nonatomic, copy) NSString * _Nullable gpidExtension;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Constructs a new banner request with a specified delegate.
/// \param delegate An instance conforming to <code>AATBannerRequestDelegate</code> that will
/// receive callbacks for this banner request.
///
- (nonnull instancetype)initWithDelegate:(id <AATBannerRequestDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Updates the banner sizes allowed for this request using an Objective-C compatible method.
/// This method converts a set of raw integer values to <code>AATBannerSize</code> enums.
/// \param sizes A set of <code>Int</code> values, where each integer corresponds to an <code>AATBannerSize</code> raw value.
/// Invalid or out-of-range integer values will be ignored.
///
- (void)setRequestBannerSizes:(NSSet<NSNumber *> * _Nonnull)sizes;
/// A string representation of the <code>AATBannerRequest</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// A protocol that defines methods for delegates of <code>AATBannerRequest</code> objects.
/// The methods of this protocol allow you to control certain behaviors of the
/// banner request, such as whether targeting information should be used for a specific ad network.
SWIFT_PROTOCOL("_TtP6AATKit24AATBannerRequestDelegate_")
@protocol AATBannerRequestDelegate
/// Asks the delegate whether the targeting information in the request should be used for a given ad network.
/// Implement this method if you need to dynamically control whether ad targeting
/// should be applied based on the specific ad network.
/// \param request The <code>AATBannerRequest</code> instance associated with the delegate.
///
/// \param network The <code>AATAdNetwork</code> for which the targeting decision is being made.
///
///
/// returns:
/// <code>true</code> if the targeting information should be used for the specified network; otherwise, <code>false</code>.
- (BOOL)shouldUseTargetingFor:(AATBannerRequest * _Nonnull)request network:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
@end

/// Banner request error class
SWIFT_CLASS("_TtC6AATKit21AATBannerRequestError")
@interface AATBannerRequestError : NSObject
/// String representation of the error
@property (nonatomic, readonly, copy) NSString * _Nullable errorDescription;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents the various banner ad sizes supported by AATKit.
/// Each case corresponds to a specific banner dimension or a grouping of multiple sizes.
typedef SWIFT_ENUM(NSInteger, AATBannerSize, open) {
/// Banner size 300x50 points.
  AATBannerSizeBanner300x50 = 0,
/// Banner size 320x53 points.
  AATBannerSizeBanner320x53 = 1,
/// Banner size 768x90 points.
  AATBannerSizeBanner768x90 = 2,
/// Banner size 300x250 points (medium rectangle).
  AATBannerSizeBanner300x250 = 3,
/// Banner size 468x60 points (full banner).
  AATBannerSizeBanner468x60 = 4,
/// Represents multiple banner sizes.
  AATBannerSizeMultipleSizes = 5,
/// Banner size 320x75 points.
  AATBannerSizeBanner320x75 = 6,
/// Banner size 320x100 points.
  AATBannerSizeBanner320x100 = 7,
/// Banner size 320x150 points.
  AATBannerSizeBanner320x150 = 8,
/// Banner size 320x160 points.
  AATBannerSizeBanner320x160 = 9,
/// Banner size 320x480 points.
  AATBannerSizeBanner320x480 = 10,
/// Banner size 728x90 points (leaderboard).
  AATBannerSizeBanner728x90 = 11,
/// Banner size 320x50 points.
  AATBannerSizeBanner320x50 = 12,
/// Banner size 375x50 points.
  AATBannerSizeBanner375x50 = 13,
/// Banner size 390x50 points.
  AATBannerSizeBanner390x50 = 14,
/// Banner size 414x50 points.
  AATBannerSizeBanner414x50 = 15,
/// Banner size 428x50 points.
  AATBannerSizeBanner428x50 = 16,
};

enum AATManagedConsentState : NSInteger;
SWIFT_PROTOCOL("_TtP6AATKit14AATCMPDelegate_")
@protocol AATCMPDelegate
- (void)consentDidUpdate:(enum AATManagedConsentState)state;
- (void)CMPFailedToShowWith:(NSString * _Nonnull)error;
- (void)CMPFailedToLoadWith:(NSString * _Nonnull)error;
- (void)CMPNeedsUI;
- (void)didShowCMP;
@end

@class UIViewController;
SWIFT_PROTOCOL("_TtP6AATKit14AATCMPProtocol_")
@protocol AATCMPProtocol
- (BOOL)isSuccessfullyInitialized:(NSString * _Nonnull)source SWIFT_WARN_UNUSED_RESULT;
- (void)start:(NSString * _Nonnull)source;
- (void)setDelegate:(NSString * _Nonnull)source :(id <AATCMPDelegate> _Nonnull)delegate;
- (void)reload:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
- (void)showIfNeeded:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
- (void)editConsent:(NSString * _Nonnull)source :(UIViewController * _Nonnull)viewController;
@end

enum AATCollapsibleBannerPosition : NSInteger;
/// Options for configuring the behavior and appearance of a collapsible banner.
SWIFT_CLASS("_TtC6AATKit27AATCollapsibleBannerOptions")
@interface AATCollapsibleBannerOptions : NSObject
/// Initializes a new <code>AATCollapsibleBannerOptions</code> instance.
/// \param position The position of the banner. Defaults to <code>.top</code>.
///
/// \param minDelay The minimum delay in seconds before the banner can be collapsed. Defaults to <code>0</code>.
///
- (nonnull instancetype)initWithPosition:(enum AATCollapsibleBannerPosition)position minDelay:(NSInteger)minDelay OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Defines the possible positions for a collapsible banner.
typedef SWIFT_ENUM(NSInteger, AATCollapsibleBannerPosition, open) {
/// The banner is positioned at the top of the screen.
  AATCollapsibleBannerPositionTop = 0,
/// The banner is positioned at the bottom of the screen.
  AATCollapsibleBannerPositionBottom = 1,
};

@class AATConsentImplementation;
/// AATKit Runtime Configurations.
/// This class encapsulates runtime configuration settings for the AATKit SDK.
/// Use this when you need to reconfigure AATKit behavior such as consent, geo-location usage, or ad verification.
/// Configuration is preserved across instances using <code>oldConfiguration</code>.
SWIFT_CLASS("_TtC6AATKit23AATRuntimeConfiguration")
@interface AATRuntimeConfiguration : NSObject
/// Indicates whether user consent is required before requesting ads.
/// Defaults to <code>true</code>.
/// For more information, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling">AATKit Consent Handling</a>.
@property (nonatomic) BOOL consentRequired;
/// The consent implementation used by the SDK.
/// Can be set to one of the following: <code>AATManagedConsent</code>, <code>AATSimpleConsent</code>, or <code>AATVendorConsent</code>.
/// Defaults to <code>AATDefaultConsent</code>.
/// For more information, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling">AATKit Consent Handling</a>.
@property (nonatomic, strong) AATConsentImplementation * _Nonnull consent;
/// The ad quality manager responsible for verifying ad quality.
/// This is an optional implementation of <code>AATAdQualityManagerProtocol</code>.
@property (nonatomic, strong) id <AATAdQualityManagerProtocol> _Nullable adQualityManager;
/// Indicates whether geo-location usage is enabled.
/// Defaults to <code>false</code>.
@property (nonatomic) BOOL isUseGeoLocation;
/// Initializes a new runtime configuration.
/// If a previously used configuration exists, it is used to initialize the new one.
/// This allows persistent configuration across multiple SDK reinitializations.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the current configuration.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@protocol AATDelegate;
/// AATKit Configurations
/// This class provides options to configure the behavior of AATKit.
SWIFT_CLASS("_TtC6AATKit16AATConfiguration")
@interface AATConfiguration : AATRuntimeConfiguration
/// Set this parameter to listen to <code>AATDelegate</code> callbacks.
@property (nonatomic, weak) id <AATDelegate> _Nullable delegate;
/// Optional string containing ad rules to use before new rules are downloaded.
/// This is useful for ensuring ads start showing immediately on app launch.
@property (nonatomic, copy) NSString * _Nullable initialRules SWIFT_DEPRECATED_MSG("initialRules is deprecated and will be removed in a future version.");
/// Indicates whether the SDK should cache downloaded ad rules.
/// Defaults to <code>true</code>. Cached rules will be reused when the server is not reachable.
@property (nonatomic) BOOL shouldCacheRules;
/// Indicates whether to skip ad networks that have no valid consent.
/// Defaults to <code>false</code>. For more details, see <a href="https://addapptr.gitbook.io/ios-integration/start/consent/general-handling#rule-skipping">Rules Skipping</a>.
@property (nonatomic) BOOL shouldSkipRules SWIFT_DEPRECATED_MSG("TCF-based rule skipping feature is deprecated and will be removed in the future.");
/// A test app bundle ID. <em>Don’t forget to remove it before going live</em>.
/// <em>Important</em>: Remove this before releasing your app.
@property (nonatomic, copy) NSString * _Nullable alternativeBundleId;
/// Whether to report events using the <code>alternativeBundleId</code>.
/// Defaults to <code>true</code>.
@property (nonatomic) BOOL shouldReportUsingAlternativeBundleId;
/// A test account ID used to enable AATKit test mode.
/// <em>Important</em>: Remove this before releasing your app.
/// See <a href="https://addapptr.gitbook.io/ios-integration/start/initialization#test-mode">AATKit Test Mode</a>.
@property (nonatomic, strong) NSNumber * _Nullable testModeAccountId;
/// Enables or disables the shake gesture debug screen.
/// Defaults to <code>true</code>. See <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Debug Shake</a>.
@property (nonatomic) BOOL useDebugShake;
/// A Bool that enables/disables the use of  automatic generated userId. False by default.
@property (nonatomic) BOOL useAutomaticPPID;
/// Contains advanced configuration for specific ad networks.
@property (nonatomic, strong) AATAdNetworksOptions * _Nullable adNetworksOptions;
/// A textual representation of the configuration instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATConfiguration (SWIFT_EXTENSION(AATKit))
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

/// Handles consent-related configurations.
SWIFT_CLASS("_TtC6AATKit24AATConsentImplementation")
@interface AATConsentImplementation : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Sets the set of ad networks that should stop if no user consent is given (Objective-C compatible version).
/// This method maps integer values to corresponding <code>AATAdNetwork</code> enum cases. If an integer is out of bounds,
/// a warning is logged and that value is ignored.
/// \param stopSet A set of integer values representing the raw values of <code>AATAdNetwork</code> enums.
///
- (void)setNoConsentNetworkStopSet:(NSSet<NSNumber *> * _Nonnull)stopSet;
@end

/// Represents the currency used for pricing.
/// Used in <code>AATPriceInfo</code> to specify the currency of the impression price.
typedef SWIFT_ENUM(NSInteger, AATCurrency, open) {
/// United States Dollar (USD).
  AATCurrencyUSD = 0,
/// Euro (EUR).
  AATCurrencyEUR = 1,
/// Unknown or unspecified currency.
  AATCurrencyUnknown = 2,
};

SWIFT_CLASS("_TtC6AATKit18AATDFPBiddingValue")
@interface AATDFPBiddingValue : NSObject
@property (nonatomic, readonly) double lowerValue;
@property (nonatomic, readonly, copy) NSString * _Nonnull mappedValue;
@property (nonatomic, copy) NSString * _Nonnull targetingKey;
- (nonnull instancetype)initWithLowerValue:(double)lowerValue mappedValue:(NSString * _Nonnull)mappedValue OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Configuration options for DFP (Google AdManager) ads.
SWIFT_CLASS("_TtC6AATKit13AATDFPOptions")
@interface AATDFPOptions : NSObject
/// Initializes a new instance of <code>AATDFPOptions</code>.
/// \param inlineBannerMaxHeight The maximum height for DFP inline adaptive banners.
///
- (nonnull instancetype)initWithInlineBannerMaxHeight:(NSInteger)inlineBannerMaxHeight OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PlacementDebugInfo;
SWIFT_CLASS("_TtC6AATKit12AATDebugInfo")
@interface AATDebugInfo : NSObject
/// Optional test bundle identifier used by the app.
@property (nonatomic, copy) NSString * _Nullable testBundleId;
/// Optional test identifier used by the app.
@property (nonatomic, copy) NSString * _Nullable testId;
/// String representing current consent information.
@property (nonatomic, copy) NSString * _Nullable consentInfo;
/// List of placement debug information objects.
@property (nonatomic, copy) NSArray<PlacementDebugInfo *> * _Nonnull placementDebugInfo;
/// Extra SDKs available.
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull extraSDK;
/// Device type information (e.g., “iPhone13,4”).
@property (nonatomic, copy) NSString * _Nonnull deviceType;
/// The device’s Identifier for Advertisers string, if available.
@property (nonatomic, copy) NSString * _Nullable idfaString;
/// Returns a list of raw string values for available ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull availableAdNetworks;
/// Returns a list of raw string values for disabled ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull disabledAdNetworks;
/// Returns a list of raw string values for removed ad networks.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull removedAdNetworks;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATDebugInfo (SWIFT_EXTENSION(AATKit))
@end

@class FrequencyCappingDebugInfo;
/// A debug information object for a specific ad placement
SWIFT_CLASS("_TtCC6AATKit12AATDebugInfo18PlacementDebugInfo")
@interface PlacementDebugInfo : NSObject
/// The name of the placement
@property (nonatomic, copy) NSString * _Nonnull placementName;
/// The type of the placement
@property (nonatomic, copy) NSString * _Nonnull placementType;
/// The active frequency capping rule applied to the placement (if any)
@property (nonatomic, strong) FrequencyCappingDebugInfo * _Nullable activeFrequencyCapping;
/// The interval in seconds for auto-reloading banner ads
@property (nonatomic) NSInteger bannerAutoReloadInterval;
/// The initial delay in seconds before loading the ad
@property (nonatomic) NSInteger initialDelay;
/// The remaining time in seconds before the next ad can be loaded
@property (nonatomic) NSInteger remainingTime;
/// An array of loaded ad debug information objects for the placement
@property (nonatomic, copy) NSArray<AATAdDebugInfo *> * _Nonnull loadedAds;
/// Indicates whether a new ad is currently being loaded
@property (nonatomic) BOOL isLoadingNewAd;
/// The last shown ad
@property (nonatomic, strong) AATAdDebugInfo * _Nullable lastShownAd;
/// Indicates whether Ad Quality is currently active for this placement
@property (nonatomic) BOOL isAdQualityActive;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Configure the shake debug screen
SWIFT_CLASS("_TtC6AATKit27AATDebugScreenConfiguration")
@interface AATDebugScreenConfiguration : NSObject
/// App Logo
@property (nonatomic, strong) UIImage * _Nullable appLogo;
/// Shake debug screen title
@property (nonatomic, copy) NSString * _Nullable title;
/// Show bundle identifier
@property (nonatomic) BOOL showBundleId;
/// Show app version
@property (nonatomic) BOOL showAppVersion;
/// Show test mode data
@property (nonatomic) BOOL showTestMode;
/// Show loaded/loading ads
@property (nonatomic) BOOL showLoadedAndLoadingAds;
/// Show disabled ad networks
@property (nonatomic) BOOL showDisabledNetworks;
/// Show removed ad networks
@property (nonatomic) BOOL showRemovedNetworkSDKs;
/// Show extra SDKs
@property (nonatomic) BOOL showExtraSDKs;
/// Show extra SDKs
@property (nonatomic) BOOL showConsent;
/// Show IDFA
@property (nonatomic) BOOL showIDFA;
/// Show device type
@property (nonatomic) BOOL showDeviceType;
@property (nonatomic, copy) NSString * _Nullable shareEmail;
/// Show debug logs toggle, default value is true.
@property (nonatomic) BOOL showDebugLogsToggle;
/// Show device filtered rules toggle, default value is true.
@property (nonatomic) BOOL showDeviceFilteredRulesToggle;
/// Show close button , default value is false.
@property (nonatomic) BOOL showCloseButton;
/// Create an <code>AATDebugScreenConfiguration</code> instance
/// \param appLogo application logo
///
/// \param title title
///
/// \param showBundleId true to show bundle id
///
/// \param showTestMode true to show test mode data
///
/// \param showLoadedAndLoadingAds true to show loaded and loading ads
///
/// \param showDisabledNetworks true to show disabled ad networks
///
/// \param showRemovedNetworkSDKs true to show removed ad networks
///
/// \param showDeviceType true to show device type
///
/// \param showConsent true to show consent
///
/// \param showExtraSDKs true to show extra SDKs
///
/// \param showIDFA true to show IDFA
///
/// \param showDebugLogsToggle true to show debug logs toggle
///
/// \param showDeviceFilteredRulesToggle true to show device filtered rules toggle
///
/// \param showCloseButton true to show close button
///
- (nonnull instancetype)initWithAppLogo:(UIImage * _Nullable)appLogo title:(NSString * _Nullable)title showBundleId:(BOOL)showBundleId showAppVersion:(BOOL)showAppVersion showTestMode:(BOOL)showTestMode showLoadedAndLoadingAds:(BOOL)showLoadedAndLoadingAds showDisabledNetworks:(BOOL)showDisabledNetworks showRemovedNetworkSDKs:(BOOL)showRemovedNetworkSDKs showDeviceType:(BOOL)showDeviceType showExtraSDKs:(BOOL)showExtraSDKs showConsent:(BOOL)showConsent showIDFA:(BOOL)showIDFA showDebugLogsToggle:(BOOL)showDebugLogsToggle showDeviceFilteredRulesToggle:(BOOL)showDeviceFilteredRulesToggle showCloseButton:(BOOL)showCloseButton OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Notifies about AATKit events.
SWIFT_PROTOCOL("_TtP6AATKit11AATDelegate_")
@protocol AATDelegate
@optional
/// Notifies that the AATKit has obtained ad rules.
/// This method is called when AATKit successfully fetches ad rules.
/// \param fromTheServer A Boolean indicating the source of the rules:
/// <ul>
///   <li>
///     <code>true</code>: The rules were fetched from the Gravite server.
///   </li>
///   <li>
///     <code>false</code>: The rules are either the cached rules or the ones set with <code>AATSDK.setInitialRules(rules:)</code>.
///   </li>
/// </ul>
///
- (void)AATKitObtainedAdRulesFromTheServer:(BOOL)fromTheServer;
/// Notifies that the application’s bundle ID was not recognized by the Gravite server.
/// This typically occurs when the app is not correctly registered in the Gravite dashboard.
- (void)AATKitUnknownBundleId;
@end

/// Configuration options for DisplayIO ad network.
SWIFT_CLASS("_TtC6AATKit19AATDisplayIOOptions")
@interface AATDisplayIOOptions : NSObject
/// Initializes a new <code>AATDisplayIOOptions</code> instance.
/// \param showSoundControl Whether to show the sound control.
///
/// \param interscrollerHeight The height of the interscroller ad.
///
/// \param interscrollerTopOffset The top offset of the interscroller ad.
///
- (nonnull instancetype)initWithShowSoundControl:(BOOL)showSoundControl interscrollerHeight:(NSInteger)interscrollerHeight interscrollerTopOffset:(NSInteger)interscrollerTopOffset OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIColor;
/// Configuration options for Feed Ads.
SWIFT_CLASS("_TtC6AATKit16AATFeedAdOptions")
@interface AATFeedAdOptions : NSObject
/// Initializes a new instance of <code>AATFeedAdOptions</code>.
/// \param shutterColor The desired shutter color. Defaults to <code>nil</code>.
///
/// \param disableSpinner A Boolean indicating if the spinner should be disabled. Defaults to <code>false</code>.
///
- (nonnull instancetype)initWithShutterColor:(UIColor * _Nullable)shutterColor disableSpinner:(BOOL)disableSpinner OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_PROTOCOL("_TtP6AATKit22AATFullscreenPlacement_")
@protocol AATFullscreenPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATFullscreenPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the Ad Quality delegate that will be notified with ad verifications events.
@property (nonatomic, strong) id <AATAdQualityDelegate> _Nullable adQualityDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Last ad information
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Represents the gender of the user for targeting purposes.
/// Used in <code>AATUserTargeting</code> to help personalize ad delivery. Defaults to <code>AATGender/unknown</code> if not set or invalid.
typedef SWIFT_ENUM(NSInteger, AATGender, open) {
/// A male user.
  AATGenderMale = 0,
/// A female user.
  AATGenderFemale = 1,
/// A user who identifies as other.
  AATGenderOther = 2,
/// An unknown or unspecified gender.
/// This value will be ignored in targeting requests.
  AATGenderUnknown = 3,
};

/// Represents configuration options for the Gravite RTB integration.
SWIFT_CLASS("_TtC6AATKit20AATGraviteRTBOptions")
@interface AATGraviteRTBOptions : NSObject
/// Initializes a new <code>AATGraviteRTBOptions</code> instance.
/// \param forceCloseButtonForMraid A Boolean flag to force showing the SDK’s native close button even when the MRAID creative includes one.
/// If set to <code>true</code>, both the SDK button and the creative’s button will be shown.
///
- (nonnull instancetype)initWithForceCloseButtonForMraid:(BOOL)forceCloseButtonForMraid OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents impression-level information for an ad.
/// Contains details such as banner size, ad network, network key, direct deal status, and price info.
SWIFT_CLASS("_TtC6AATKit13AATImpression")
@interface AATImpression : NSObject
/// The banner size for this impression, e.g. “320x50”. Can be <code>nil</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable bannerSize;
/// The ad network responsible for this impression.
@property (nonatomic, readonly) enum AATAdNetwork adNetwork;
/// The key identifying the ad network instance.
@property (nonatomic, readonly, copy) NSString * _Nonnull networkKey;
/// Indicates if this impression was generated by a direct deal.
@property (nonatomic, readonly) BOOL isDirectDeal;
/// Optional price information related to this impression.
@property (nonatomic, readonly, strong) AATPriceInfo * _Nullable priceInfo;
/// A string representation of the impression, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Retrieves the name of the ad network for this impression.
///
/// returns:
/// A string representing the ad network name.
- (NSString * _Nonnull)getAdNetworkName SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Delegate called when the impression is counted.
SWIFT_PROTOCOL("_TtP6AATKit21AATImpressionDelegate_")
@protocol AATImpressionDelegate
/// Notifies that AATKit has counted an impression.
/// \param placement the placement that counted the impression
///
/// \param impression the AATImpression object
///
- (void)didCountImpressionWithPlacement:(id <AATPlacement> _Nullable)placement :(AATImpression * _Nonnull)impression;
@end

SWIFT_PROTOCOL("_TtP6AATKit24AATInfeedBannerPlacement_")
@protocol AATInfeedBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATInfeedBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Request banner ad from the placement
/// \param request the <code>AATBannerRequest</code> to be used
///
/// \param completion Completion result with <code>AATBannerPlacementWrapperView</code> or <code>AATBannerRequestError</code>
///
- (void)requestAdWithRequest:(AATBannerRequest * _Nonnull)request completion:(void (^ _Nonnull)(AATBannerPlacementWrapperView * _Nullable, AATBannerRequestError * _Nullable))completion;
/// Cancel a specific <code>AATBannerRequest</code>
/// \param request The request to be canceled
///
- (void)cancelWithRequest:(AATBannerRequest * _Nonnull)request;
/// Manually Count an Ad Space
- (void)countAdSpace;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATInfeedBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit32AATInfeedBannerPlacementDelegate_")
@protocol AATInfeedBannerPlacementDelegate <AATAdDisplayDelegate>
@end

SWIFT_CLASS("_TtC6AATKit16AATLocationUtils")
@interface AATLocationUtils : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class CLLocationManager;
@class CLLocation;
@interface AATLocationUtils (SWIFT_EXTENSION(AATKit)) <CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager * _Nonnull)manager didUpdateLocations:(NSArray<CLLocation *> * _Nonnull)locations;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nonnull)error;
@end

/// Desired log level
typedef SWIFT_ENUM(NSInteger, AATLogLevel, open) {
/// Verbose-level messages are intended to capture verbose, debug, info, warning and error messages. It’s convenient in an intensive development environment.
  AATLogLevelVerbose = 1,
/// Debug-level messages are intended to capture debug, info, warning and error messages. It’s convenient in a normal development environment.
  AATLogLevelDebug = 2,
/// Info-level messages are intended to capture info, warning and error messages. Info-level may be helpful but isn’t enough for troubleshooting.
  AATLogLevelInfo = 3,
/// Warn-level messages are intended to capture warning and error messages only.
  AATLogLevelWarn = 4,
/// Error-level messages are intended to capture error messages only.
  AATLogLevelError = 5,
};

SWIFT_CLASS("_TtC6AATKit9AATLogger")
@interface AATLogger : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol AATManagedConsentDelegate;
enum AATShowIfNeededSetting : NSInteger;
/// The managed consent (should be initialized with <code>AATCMPProtocol</code>). Will fire the different events of the user consent interactions.
/// See <code>AATManagedConsentDelegate</code>.
/// For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/managed-consent">Managed Consent</a>.
SWIFT_CLASS("_TtC6AATKit17AATManagedConsent")
@interface AATManagedConsent : AATConsentImplementation
/// Create an instance of <code>AATManagedConsent</code>.
/// \param cmp An instance of <code>AATCMPProtocol</code> (e.g., AATCMPGoogle, AATCMPSourcePoint).
///
/// \param delegate Delegate notified of CMP events.
///
/// \param showIfNeededSetting The setting controlling if and when the consent showing options.
///
- (nullable instancetype)initWithCmp:(id <AATCMPProtocol> _Nullable)cmp delegate:(id <AATManagedConsentDelegate> _Nonnull)delegate showIfNeededSetting:(enum AATShowIfNeededSetting)showIfNeededSetting OBJC_DESIGNATED_INITIALIZER;
/// Presents the consent screen if required.
/// Recommended to call when the app’s initial view controller is presented.
/// \param viewController View controller used to present the CMP.
///
- (void)showIfNeeded:(UIViewController * _Nonnull)viewController;
/// Re-show the CMP if it is needed or if the user has rejected the consent.
/// \param daysAgo Minimum number of days before showing the CMP again.
///
/// \param viewController View controller used to present the CMP.
///
- (void)showIfNeededOrRejectedWithDaysAgo:(NSInteger)daysAgo viewController:(UIViewController * _Nonnull)viewController;
/// Presents the CMP for editing the consent settings.
/// \param viewController View controller used to present the CMP.
///
- (void)editConsent:(UIViewController * _Nonnull)viewController;
/// Reloads the CMP in case it failed previously.
/// Should be used after a failed attempt such as <code>CMPFailedToLoad(with:)</code>.
/// \param viewController View controller used to present the CMP.
///
- (void)reload:(UIViewController * _Nonnull)viewController;
@end

@interface AATManagedConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

@interface AATManagedConsent (SWIFT_EXTENSION(AATKit)) <AATCMPDelegate>
- (void)didShowCMP;
- (void)consentDidUpdate:(enum AATManagedConsentState)state;
- (void)CMPFailedToShowWith:(NSString * _Nonnull)error;
- (void)CMPFailedToLoadWith:(NSString * _Nonnull)error;
- (void)CMPNeedsUI;
@end

/// The delegate for receiving events from <code>AATManagedConsent</code> regarding CMP lifecycle.
SWIFT_PROTOCOL("_TtP6AATKit25AATManagedConsentDelegate_")
@protocol AATManagedConsentDelegate
/// CMP is ready and needs to be shown
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
- (void)managedConsentNeedsUserInterface:(AATManagedConsent * _Nonnull)managedConsent;
/// The user finished his consent choice
/// \param state an instance of the <code>AATManagedConsentState</code> enum.
///
- (void)managedConsentCMPFinishedWith:(enum AATManagedConsentState)state;
/// The managed consent failed to load the CMP
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
/// \param error a String represents the loading error.
///
- (void)managedConsentCMPFailedToLoad:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error;
/// The managed consent failed to show the CMP
/// \param managedConsent an instance of <code>AATManagedConsent</code>.
///
/// \param error a String represents the showing error.
///
- (void)managedConsentCMPFailedToShow:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error;
@end

/// Describes the current state of managed user consent in the SDK.
typedef SWIFT_ENUM(NSInteger, AATManagedConsentState, open) {
/// No information about consent state.
  AATManagedConsentStateUnknown = 0,
/// Consent has been declined by the user.
  AATManagedConsentStateWithheld = 1,
/// Partial consent has been granted by the user -
/// at least some purposes and some vendors were given consent.
  AATManagedConsentStateCustom = 2,
/// Full consent has been granted by the user.
  AATManagedConsentStateObtained = 3,
};

/// Represents the mediation type used by AATKit for ad rules.
typedef SWIFT_ENUM(NSInteger, AATMediationType, closed) {
/// Waterfall mediation type.
  AATMediationTypeWATERFALL = 1,
/// Auction mediation type.
  AATMediationTypeAUCTION = 2,
/// Mayo mediation type.
  AATMediationTypeMAYO = 3,
};

/// Configuration options for Meta Bidding integrations.
/// Provides required identifiers for initializing Meta Bidding capabilities.
SWIFT_CLASS("_TtC6AATKit21AATMetaBiddingOptions")
@interface AATMetaBiddingOptions : NSObject
/// Initializes a new instance of <code>AATMetaBiddingOptions</code> with the required platform and security identifiers.
/// \param platformId The Meta platform identifier.
///
- (nonnull instancetype)initWithPlatformId:(NSString * _Nonnull)platformId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATMultiSizeBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit27AATMultiSizeBannerPlacement_") SWIFT_DEPRECATED_MSG("Please use AATAutoLoadMultiSizeBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/multi-size-auto-load-banner")
@protocol AATMultiSizeBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATMultiSizeBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Start the automatic reloading of the placement using specific time interval
- (void)startAutoReloadWithSeconds:(NSTimeInterval)seconds;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Set the placement auto reload interval
/// \param seconds auto reload interval
///
- (void)setAutoreloadIntervalWithSeconds:(NSTimeInterval)seconds;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
/// \param forceLoad True if you want to be able to reload and show new banner before set banner reload interval (default: 30s) between reloads, false otherwise.
///
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad SWIFT_WARN_UNUSED_RESULT;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reload SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Enables keeping creatives history
/// \param size Maximum number of creatives to keep
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Get saved creatives history
/// \param completion An array of <code>AATPlacementHistoryInfo</code> representing creatives history
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATMultiSizeBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit35AATMultiSizeBannerPlacementDelegate_")
@protocol AATMultiSizeBannerPlacementDelegate <AATAdDisplayDelegate, AATNoAdDelegate>
/// This method will be called when there is an ad
- (void)aatHaveAdWithBannerViewWithPlacement:(id <AATPlacement> _Nonnull)placement bannerView:(AATBannerPlacementWrapperView * _Nonnull)bannerView;
@end

@class AATNativeAdRating;
/// A protocol that defines the data and interactions for a native ad.
/// This protocol provides a standardized interface for accessing various assets
/// and managing the lifecycle of a native ad, regardless of the underlying ad network.
SWIFT_PROTOCOL("_TtP6AATKit15AATNativeAdData_")
@protocol AATNativeAdData <NSObject>
/// A string representing the <em>title</em> of the ad.
/// Returns <code>nil</code> if the title is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable title;
/// A string representing the <em>description</em> or body text of the ad.
/// Returns <code>nil</code> if the description is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable adDescription;
/// A string representing the <em>call-to-action</em> (e.g., “Learn More”, “Install Now”).
/// Returns <code>nil</code> if the call-to-action is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable callToAction;
/// A string representing the <em>URL of the main image asset</em> for the ad.
/// Returns <code>nil</code> if the image URL is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable imageUrl;
/// A string representing the <em>URL of the icon asset</em> for the ad.
/// Returns <code>nil</code> if the icon URL is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable iconUrl;
/// An <code>AATNativeAdRating</code> instance containing both the value and scale of the ad’s rating.
/// Returns <code>nil</code> if rating information is not available.
@property (nonatomic, readonly, strong) AATNativeAdRating * _Nullable rating;
/// A <code>UIView</code> representing the <em>branding logo or ad information</em> provided by the ad network.
/// Some networks, such as Facebook Audience Network or Flurry, require this specific view
/// to be visible when their native ads are displayed.
@property (nonatomic, readonly, strong) UIView * _Nullable brandingLogo;
/// A string representing the <em>advertiser’s name</em> or attribution.
/// Returns <code>nil</code> if the advertiser information is not available.
@property (nonatomic, readonly, copy) NSString * _Nullable advertiser;
/// An <code>AATAdNetwork</code> enum value indicating the <em>ad network</em> that provided this native ad.
@property (nonatomic, readonly) enum AATAdNetwork network;
/// Additional information about the ad, represented by an <code>AATAdInfo</code> object.
/// Returns <code>nil</code> if no additional information is available.
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Binds this native ad instance with the provided <code>UIView</code> hierarchy.
/// This method is crucial for handling user interactions (like clicks) and for ad tracking.
/// It should be called once the native ad’s content has been rendered into your app’s UI.
/// \param view The main <code>UIView</code> that encompasses the entire native ad layout.
///
/// \param mainImageView (Optional) The <code>UIView</code> specifically used to display the main image of the ad.
///
/// \param iconView (Optional) The <code>UIView</code> specifically used to display the icon of the native ad.
///
/// \param ctaView (Optional) The <code>UIView</code> specifically used to display the call-to-action button or label.
///
- (void)attachToView:(UIView * _Nonnull)view mainImageView:(UIView * _Nullable)mainImageView iconView:(UIView * _Nullable)iconView ctaView:(UIView * _Nullable)ctaView;
/// Removes the binding between the native ad and its superview.
/// This method should be called when the native ad is no longer visible or
/// is about to be removed from the view hierarchy. It helps in releasing
/// resources and stopping any ongoing tracking.
- (void)detachFromLayout;
/// Checks if the native ad has <em>expired</em> and should no longer be used or displayed.
///
/// returns:
/// <code>true</code> if the ad has expired; otherwise, <code>false</code>.
- (BOOL)isExpired SWIFT_WARN_UNUSED_RESULT;
/// Checks if the native ad is <em>ready to be displayed</em>.
/// This typically means all necessary assets have been loaded and the ad is in a valid state.
///
/// returns:
/// <code>true</code> if the ad is ready for display; otherwise, <code>false</code>.
- (BOOL)isReady SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATNativePlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit20AATNativeAdPlacement_")
@protocol AATNativeAdPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events.
@property (nonatomic, strong) id <AATNativePlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Requests placement reload.
- (BOOL)reload;
/// Returns how many ads are currently loading for given native ad placement.
///
/// returns:
/// Number of ads that are currently loading for given placement.
- (NSInteger)getNumberOfCurrentlyLoadingNativeAds SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Manually Count an Ad Space
- (BOOL)reportAdSpace SWIFT_WARN_UNUSED_RESULT;
/// Returns the instance of native ad for given native ad placement.
///
/// returns:
/// Native ad instance if it is loaded for given placement, null otherwise.
- (id <AATNativeAdData> _Nullable)getNativeAd SWIFT_WARN_UNUSED_RESULT;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Native ad rating
SWIFT_CLASS("_TtC6AATKit17AATNativeAdRating")
@interface AATNativeAdRating : NSObject
/// Creates an instance of <code>AATNativeAdRating</code>
/// \param value The rating value
///
/// \param scale The rating scale
///
- (nonnull instancetype)initWithValue:(double)value scale:(double)scale OBJC_DESIGNATED_INITIALIZER;
/// The rating value
@property (nonatomic, readonly) double value;
/// The rating scale
@property (nonatomic, readonly) double scale;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, AATNativeAdType, open) {
  AATNativeAdTypeAppInstall = 0,
  AATNativeAdTypeContent = 1,
  AATNativeAdTypeVideo = 2,
  AATNativeAdTypeUnified = 3,
  AATNativeAdTypeOther = 4,
  AATNativeAdTypeUnknown = 5,
};

/// Conform to this protocol to listen to the AATNativePlacement events
SWIFT_PROTOCOL("_TtP6AATKit26AATNativePlacementDelegate_")
@protocol AATNativePlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

/// Placement history data
SWIFT_CLASS("_TtC6AATKit23AATPlacementHistoryInfo")
@interface AATPlacementHistoryInfo : NSObject
/// The name of the ad network that served the ad.
@property (nonatomic, copy) NSString * _Nonnull networkName;
/// A unique key identifying the ad network placement.
@property (nonatomic, copy) NSString * _Nonnull networkKey;
/// A timestamp representing when the ad was served.
@property (nonatomic) NSTimeInterval timestamp;
/// A snapshot of the ad, if available.
@property (nonatomic, strong) UIImage * _Nullable snapshot;
/// An optional identifier for the creative that was displayed.
@property (nonatomic, copy) NSString * _Nullable creativeID;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, AATPluginName, open) {
  AATPluginNameAdobe = 1,
  AATPluginNameCorona = 2,
  AATPluginNameMarmalade = 3,
  AATPluginNameUnity = 4,
  AATPluginNameXamarin = 5,
  AATPluginNameReactNative = 6,
  AATPluginNameCordova = 7,
  AATPluginNameCapacitor = 8,
  AATPluginNameFlutter = 9,
};

SWIFT_CLASS("_TtC6AATKit23AATPluginVersioningTool")
@interface AATPluginVersioningTool : NSObject
+ (void)appendPluginInformation:(enum AATPluginName)pluginName patchLevel:(NSString * _Nonnull)patchLevel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum AATPricePrecisionType : NSInteger;
/// Contains pricing information for an ad impression.
/// Includes the CPM price, the precision of the price, and the currency used.
SWIFT_CLASS("_TtC6AATKit12AATPriceInfo")
@interface AATPriceInfo : NSObject
/// The CPM price of the impression.
@property (nonatomic) double price;
/// The precision type of the price.
@property (nonatomic) enum AATPricePrecisionType precision;
/// The currency of the price.
@property (nonatomic) enum AATCurrency currency;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATPriceInfo (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// Represents the precision type of a price.
/// Used to indicate how precise the CPM price value is.
typedef SWIFT_ENUM(NSInteger, AATPricePrecisionType, open) {
/// Unknown precision type.
  AATPricePrecisionTypeUnknown = 0,
/// Estimated precision type.
  AATPricePrecisionTypeEstimated = 1,
/// Floor price precision type.
  AATPricePrecisionTypeFloor = 2,
/// Publisher-provided precision type.
  AATPricePrecisionTypePublisherProvided = 3,
/// Exact or precise price precision type.
  AATPricePrecisionTypeExact = 4,
};

/// Will be notified with reports event
SWIFT_PROTOCOL("_TtP6AATKit18AATReportsDelegate_")
@protocol AATReportsDelegate
/// Notifies you of AATKit reports event.
/// \param report The report content.
///
- (void)onReportSent:(NSString * _Nonnull)report;
@end

/// Represents the incentive reward for a rewarded video.
/// This object contains the reward’s name and value as strings.
SWIFT_CLASS("_TtC6AATKit9AATReward")
@interface AATReward : NSObject
/// The name of the reward (e.g., “Coins”, “Points”).
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The value associated with the reward (e.g., “100”).
@property (nonatomic, readonly, copy) NSString * _Nonnull value;
/// Initializes a new reward object.
/// \param name The reward name.
///
/// \param value The reward value.
///
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name value:(NSString * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the <code>AATReward</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Contains server-side verification data for rewarded video ads.
/// Used to provide user-specific information for verification during rewarded ad impressions.
SWIFT_CLASS("_TtC6AATKit20AATRewardedAdSSVInfo")
@interface AATRewardedAdSSVInfo : NSObject
/// The impression user identifier.
@property (nonatomic, copy) NSString * _Nonnull userId;
/// A custom string to send with the verification data. Optional.
@property (nonatomic, copy) NSString * _Nullable customString;
/// Creates an instance of <code>AATRewardedAdSSVInfo</code>.
/// \param userId The user identifier associated with the impression.
///
/// \param customString An optional custom string to include in the verification data.
///
- (nonnull instancetype)initWithUserId:(NSString * _Nonnull)userId customString:(NSString * _Nullable)customString OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATRewardedVideoPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit25AATRewardedVideoPlacement_")
@protocol AATRewardedVideoPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATRewardedVideoPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
/// Sets the Ad Quality delegate that will be notified with ad verifications events.
@property (nonatomic, strong) id <AATAdQualityDelegate> _Nullable adQualityDelegate;
/// Start the automatic reloading of the placement.
/// When using this method, the placement will automatically once the current loaded ad has been shown.
- (void)startAutoReload;
/// Stop the automatic reloading of the placement.
- (void)stopAutoReload;
/// Requests placement reload.
/// Works only if automatic reloading is disabled. In this case, the placement will not request a new ad after showing the current loaded one.
- (BOOL)reload;
/// load a single ad
/// \param forceLoad True if you want to be clear the previously loaded ad before loading a new ad
///
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad;
/// Returns true if there is an ad loaded.
///
/// returns:
/// True if there is an ad loaded.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Shows the fullscreen ad if ad is ready.
///
/// returns:
/// True if showing fullscreen was successful, false otherwise.
- (BOOL)show;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
@property (nonatomic, readonly, strong) AATAdInfo * _Nullable adInfo;
/// Checks if the frequency cap has been reached.
///
/// returns:
/// true if the frequency cap has been reached.
- (BOOL)isFrequencyCapReached SWIFT_WARN_UNUSED_RESULT;
@end

/// Conform to this protocol to listen to the AATRewardedVideoPlacement events
SWIFT_PROTOCOL("_TtP6AATKit33AATRewardedVideoPlacementDelegate_")
@protocol AATRewardedVideoPlacementDelegate <AATFullscreenPlacementDelegate>
/// This method will be called when the user gets rewarded
- (void)aatUserEarnedIncentiveWithPlacement:(id <AATPlacement> _Nonnull)placement aatReward:(AATReward * _Nonnull)aatReward;
@end

@interface AATRuntimeConfiguration (SWIFT_EXTENSION(AATKit)) <NSCopying>
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@protocol AATStickyBannerPlacement;
@class AATUserTargeting;
/// AATKit main interface providing the core public static API methods.
/// Use this class to initialize and configure AATKit, manage placements,
/// and access global SDK settings and utilities.
SWIFT_CLASS("_TtC6AATKit6AATSDK")
@interface AATSDK : NSObject
/// Returns the current version of AATKit.
///
/// returns:
/// A string representing the SDK version.
+ (NSString * _Nonnull)getVersion SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Initializes the AATKit SDK.
/// Call this once during your app’s startup sequence before using any other AATKit APIs.
/// For more details, visit <a href="https://addapptr.gitbook.io/ios-integration/start/initialization">AATKit Initialization</a>.
/// \param configuration The configuration object. See <code>AATConfiguration</code>.
///
+ (void)initAATKitWith:(AATConfiguration * _Nullable)configuration SWIFT_METHOD_FAMILY(none);
/// Enables the debug screen that appears after shaking the device.
/// Enabled by default.
/// For more details, see <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Shake Debug Screen</a>.
+ (void)enableDebugScreen;
/// Disables the debug screen triggered by shaking the device.
/// Enabled by default.
/// For more details, see <a href="https://addapptr.gitbook.io/ios-integration/advanced/shake-debug">AATKit Shake Debug Screen</a>.
+ (void)disableDebugScreen;
/// Returns a string containing debug information.
/// Equivalent to what is shown in the shake-to-debug screen.
///
/// returns:
/// Debug information as a string.
+ (NSString * _Nonnull)getDebugInfo SWIFT_WARN_UNUSED_RESULT;
/// Configures the appearance and behavior of the shake-to-debug screen.
/// If not called, the default values of <code>AATDebugScreenConfiguration</code> will be used
/// \param configuration An instance of <code>AATDebugScreenConfiguration</code>.
///
+ (void)configureDebugScreenWithConfiguration:(AATDebugScreenConfiguration * _Nonnull)configuration;
/// Returns a structured debug info object.
///
/// returns:
/// An instance of <code>AATDebugInfo</code>, or <code>nil</code> if unavailable.
+ (AATDebugInfo * _Nullable)getDebugInfoObject SWIFT_WARN_UNUSED_RESULT;
/// Returns the current SDK logging level.
///
/// returns:
/// The current log level. See <code>AATLogLevel</code>.
+ (enum AATLogLevel)getLogLevel SWIFT_WARN_UNUSED_RESULT;
/// Reconfigures runtime options such as GDPR consent.
/// Use this when consent or other runtime-configurable parameters change.
/// See <a href="https://addapptr.gitbook.io/ios-integration/start/initialization#reconfigure-aatkit">Reconfigure AATKit</a>.
/// \param configuration The new runtime configuration.
///
+ (void)reconfigureWithConfiguration:(AATRuntimeConfiguration * _Nonnull)configuration;
/// Checks whether the current device is recognized as a tablet.
///
/// returns:
/// <code>true</code> if the device is a tablet, <code>false</code> otherwise.
+ (BOOL)isTablet SWIFT_WARN_UNUSED_RESULT;
/// Returns the banner size that best fits the device in portrait orientation.
///
/// returns:
/// A suitable <code>AATBannerPlacementSize</code>.
+ (enum AATBannerPlacementSize)maximumBannerSizePortrait SWIFT_WARN_UNUSED_RESULT;
/// Returns the banner size that best fits the device in landscape orientation.
///
/// returns:
/// A suitable <code>AATBannerPlacementSize</code>.
+ (enum AATBannerPlacementSize)maximumBannerSizeLandscape SWIFT_WARN_UNUSED_RESULT;
/// Returns a set of banner sizes that fit the device in landscape orientation.
/// The Objective-C compatible version of <code>fittingBannerSizesPortrait()</code>.
///
/// returns:
/// A set of compatible <code>AATBannerSize</code> values.
+ (NSSet<NSString *> * _Nonnull)fittingBannerSizesPortrait SWIFT_WARN_UNUSED_RESULT;
/// Returns a set of banner sizes that fit the device in landscape orientation.
/// The Objective-C compatible version of <code>fittingBannerSizesLandscape()</code>.
///
/// returns:
/// A set of compatible <code>AATBannerSize</code> values.
+ (NSSet<NSString *> * _Nonnull)fittingBannerSizesLandscape SWIFT_WARN_UNUSED_RESULT;
/// Notifies AATKit that a view controller has appeared.
/// Call this from <code>viewDidAppear</code> for every view controller using AATKit.
/// For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/formats/general#handling-multiple-view-controllers">Handling View Controllers</a>.
/// \param controller The visible view controller.
///
+ (void)controllerViewDidAppearWithController:(UIViewController * _Nonnull)controller;
/// Notifies AATKit that the current view controller is about to disappear.
/// Call this from <code>viewWillDisappear</code> for any view controller using AATKit.
+ (void)controllerViewWillDisappear;
/// Creates or retrieves a sticky banner placement.
/// \param name Unique name for the placement (used in AddApptr dashboard).
///
/// \param size The desired banner size. See <code>AATBannerPlacementSize</code>.
///
///
/// returns:
/// An instance of <code>AATStickyBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATStickyBannerPlacement> _Nullable)createStickyBannerPlacementWithName:(NSString * _Nonnull)name size:(enum AATBannerPlacementSize)size SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Please use createAutoLoadBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/auto-load-banner");
/// Creates or retrieves a multi-size banner placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An instance of <code>AATMultiSizeBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATMultiSizeBannerPlacement> _Nullable)createMultiSizeBannerPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Please use createAutoLoadMultiSizeBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/multi-size-auto-load-banner");
/// Creates or retrieves an auto-loading banner placement.
/// \param name Unique name for the placement.
///
/// \param size The banner size.
///
///
/// returns:
/// An instance of <code>AATAutoLoadBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAutoLoadBannerPlacement> _Nullable)createAutoLoadBannerPlacementWithName:(NSString * _Nonnull)name size:(enum AATBannerPlacementSize)size SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an auto-loading multi-size banner placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An instance of <code>AATAutoLoadMultiSizeBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAutoLoadMultiSizeBannerPlacement> _Nullable)createAutoLoadMultiSizeBannerPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an infeed banner placement.
/// A copy of the configuration is made. Subsequent changes to the config have no effect.
/// \param name Unique name for the placement.
///
/// \param configuration The banner configuration.
///
///
/// returns:
/// An <code>AATInfeedBannerPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATInfeedBannerPlacement> _Nullable)createInfeedBannerPlacementWithName:(NSString * _Nonnull)name configuration:(AATBannerConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a fullscreen ad placement.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An <code>AATFullscreenPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATFullscreenPlacement> _Nullable)createFullscreenPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a rewarded video placement.
/// Only one rewarded video placement is supported per app.
/// \param name Unique name for the placement.
///
///
/// returns:
/// An <code>AATRewardedVideoPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATRewardedVideoPlacement> _Nullable)createRewardedVideoPlacementWithName:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves an App Open ad placement.
/// \param placementName Unique name for the placement.
///
///
/// returns:
/// An <code>AATAppOpenAdPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATAppOpenAdPlacement> _Nullable)createAppOpenAdPlacementWithPlacementName:(NSString * _Nonnull)placementName SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a native ad placement.
/// \param name Unique name for the placement.
///
/// \param supportsMainImage Indicates whether returned ads should include a main image.
///
///
/// returns:
/// An <code>AATNativeAdPlacement</code>, or <code>nil</code> if creation fails.
+ (id <AATNativeAdPlacement> _Nullable)createNativeAdPlacementWithName:(NSString * _Nonnull)name supportsMainImage:(BOOL)supportsMainImage SWIFT_WARN_UNUSED_RESULT;
/// Creates or retrieves a banner cache.
/// \param configuration Banner cache configurations
///
///
/// returns:
/// An <code>AATBannerCache</code>, or <code>nil</code> if creation fails.
+ (id <AATBannerCache> _Nullable)createBannerCacheWithConfiguration:(AATBannerCacheConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Sets the position for the native ad icon (AdChoices).
/// \param position Desired icon position. See <code>AATAdChoicesIconPosition</code>.
///
+ (void)setAdChoicesIconPositionWithPosition:(enum AATAdChoicesIconPosition)position;
/// Enables or disables a specific ad network.
/// \param network The ad network.
///
/// \param enabled <code>true</code> to enable, <code>false</code> to disable.
///
+ (void)setNetworkEnabledWithNetwork:(enum AATAdNetwork)network enabled:(BOOL)enabled;
/// Checks whether a given ad network is enabled.
/// \param network The ad network.
///
///
/// returns:
/// <code>true</code> if enabled, <code>false</code> otherwise.
+ (BOOL)isNetworkEnabledWithNetwork:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
/// Retrieves the value of a given SDK option.
/// Options can be configured via the SDK or fetched from the server.
/// \param optionName The name of the option.
///
///
/// returns:
/// The value of the option, or <code>nil</code> if not set.
+ (NSString * _Nullable)getOptionWithOptionName:(NSString * _Nonnull)optionName SWIFT_WARN_UNUSED_RESULT;
/// Checks whether a given option is enabled.
/// An option is considered enabled if its value is “Yes”.
/// \param optionName The name of the option.
///
///
/// returns:
/// <code>true</code> if the option is enabled, <code>false</code> otherwise.
+ (BOOL)isOptionEnabledWithOptionName:(NSString * _Nonnull)optionName SWIFT_WARN_UNUSED_RESULT;
/// Sets the value for a custom SDK option.
/// \param optionName The name of the option.
///
/// \param optionValue The value to assign to the option.
///
+ (void)setOptionWithOptionName:(NSString * _Nonnull)optionName optionValue:(NSString * _Nonnull)optionValue;
/// Sets global targeting information for the app.
/// This will be used only if no placement-specific targeting is set.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting
/// \param info A dictionary of targeting categories and values.
///
+ (void)setTargetingInfoWithInfo:(NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull)info;
/// Sets structured user targeting information.
/// \param userTargeting An instance of <code>AATUserTargeting</code>.
///
+ (void)setUserTargetingWithUserTargeting:(AATUserTargeting * _Nonnull)userTargeting;
/// Sets a content-level targeting URL.
/// This is used globally unless overridden per placement.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#set-global-targeting-keywords
/// \param targetingUrl The targeting URL string.
///
+ (void)setContentTargetingUrlWithTargetingUrl:(NSString * _Nonnull)targetingUrl;
/// Adds a specific ad network to receive keyword targeting.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#limit-ad-network-specific-keywords
/// \param network The target ad network.
///
+ (void)addAdNetworkForKeywordTargetingWithNetwork:(enum AATAdNetwork)network;
/// Removes an ad network from receiving keyword targeting.
/// If no network is explicitly added, all compatible networks will receive keywords.
/// For more info, see: https://addapptr.gitbook.io/ios-integration/advanced/targeting#limit-ad-network-specific-keywords
/// \param network The ad network to remove.
///
+ (void)removeAdNetworkForKeywordTargetingWithNetwork:(enum AATAdNetwork)network;
/// Sets the log level for SDK output.
/// \param logLevel Desired log level from the <code>AATLogLevel</code> enum.
///
+ (void)setLogLevelWithLogLevel:(enum AATLogLevel)logLevel;
/// Mutes video ads for supported networks.
/// \param isMuted <code>true</code> to mute, <code>false</code> to allow sound.
///
+ (void)setVideoAdsMuted:(BOOL)isMuted;
/// Indicates whether the app is directed at children.
/// \param isChildDirected <code>true</code> if the app targets children.
///
+ (void)setIsChildDirected:(BOOL)isChildDirected;
/// Assigns the reports delegate to receive SDK reporting callbacks.
/// \param delegate Object conforming to <code>AATReportsDelegate</code>.
///
+ (void)setReportsDelegate:(id <AATReportsDelegate> _Nonnull)delegate;
/// Checks if consent mode is opt-in.
///
/// returns:
/// <code>true</code> if opt-in is required.
+ (BOOL)isConsentOptIn SWIFT_WARN_UNUSED_RESULT;
/// Sets server-side verification info for rewarded ads.
/// \param info An <code>AATRewardedAdSSVInfo</code> object.
///
+ (void)setRewardedAdSSVInfoWithInfo:(AATRewardedAdSSVInfo * _Nonnull)info;
/// Pass DFP bidding targeting key
/// \param key DFP bidding targeting key
///
+ (void)setDFPBidddingTargetingKey:(NSString * _Nonnull)key;
/// Pass DFP bidding prices info
/// \param values array of <code>AATDFPBiddingValue</code>
///
+ (void)setDFPBidddingValues:(NSArray<AATDFPBiddingValue *> * _Nonnull)values;
@end

/// An enum to specify when to show the consent dialog.
typedef SWIFT_ENUM(NSInteger, AATShowIfNeededSetting, open) {
/// Always show the consent dialog.
  AATShowIfNeededSettingAlways = 0,
/// Never show the consent dialog.
  AATShowIfNeededSettingNever = 1,
/// Show the consent dialog depending on server (rules).
  AATShowIfNeededSettingServerSideControl = 2,
};

enum NonIABConsent : NSInteger;
/// Allows to set the status of Non-IAB consent. Will also read the IAB consent string and CCPA string from SharedPreferences if available.
/// see <code>init(nonIABConsent:)</code>
SWIFT_CLASS("_TtC6AATKit16AATSimpleConsent")
@interface AATSimpleConsent : AATConsentImplementation
/// Initialize a simple consent instance. For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/simple-consent">Simple Consent</a>.
/// \param nonIABConsent a <code>NonIABConsent</code> value
///
- (nonnull instancetype)initWithNonIABConsent:(enum NonIABConsent)nonIABConsent OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATSimpleConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// A delegate to receive statistics events
SWIFT_PROTOCOL("_TtP6AATKit21AATStatisticsDelegate_")
@protocol AATStatisticsDelegate
/// Notifies that an ad space has been counted.
/// \param placement the placement that counted the ad space
///
- (void)AATKitCountedAdSpaceWithPlacement:(id <AATPlacement> _Nullable)placement;
/// Notifies that a request has been counted for a given network.
/// \param placement the placement that counted the request
///
/// \param network Network for which the request has been counted.
///
- (void)AATKitCountedRequestWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a response has been counted for a given network.
/// \param placement the placement that counted the response
///
/// \param network Network for which the response has been counted.
///
- (void)AATKitCountedResponseWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that an impression has been counted for a given network.
/// \param placement the placement that counted the impression
///
/// \param network Network for which the impression has been counted.
///
- (void)AATKitCountedImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a <em>network</em> impression has been counted for a given network.
/// \param placement the placement that counted network impression
///
/// \param network Network for which the <em>network</em> impression has been counted.
///
- (void)AATKitCountedNetworkImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a viewable impression has been counted for a given network.
/// \param placement the placement that counted the viewable impression
///
/// \param network Network for which the viewable impression has been counted.
///
- (void)AATKitCountedVImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a click has been counted for a given network.
/// \param placement the placement that counted the click
///
/// \param network Network for which the click has been counted.
///
- (void)AATKitCountedClickWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a direct deal impression has been counted for a given network.
/// \param placement the placement that counted the direct deal impression
///
/// \param network Network for which the direct deal impression has been counted.
///
- (void)AATKitCountedDirectDealImpressionWithPlacement:(id <AATPlacement> _Nullable)placement for:(enum AATAdNetwork)network;
/// Notifies that a mediation cycle has been counted.
/// \param placement the placement that counted the mediation cycle
///
- (void)AATKitCountedMediationCycleWithPlacement:(id <AATPlacement> _Nullable)placement;
@end

@protocol AATStickyBannerPlacementDelegate;
SWIFT_PROTOCOL("_TtP6AATKit24AATStickyBannerPlacement_") SWIFT_DEPRECATED_MSG("Please use AATAutoLoadBannerPlacement instead. For more information please visit https://aatkit.gitbook.io/ios-integration/formats/banner/auto-load-banner")
@protocol AATStickyBannerPlacement <AATPlacement>
/// Set the placement delegate that will listen to ad loading and display events
@property (nonatomic, strong) id <AATStickyBannerPlacementDelegate> _Nullable delegate;
/// Sets the placement statistics delegate
@property (nonatomic, strong) id <AATStatisticsDelegate> _Nullable statisticsDelegate;
/// Sets the placement impression delegate
@property (nonatomic, strong) id <AATImpressionDelegate> _Nullable impressionDelegate;
@property (nonatomic, strong) AATCollapsibleBannerOptions * _Nullable collapsableBannerOptions;
/// Start the automatic reloading of the placement
- (void)startAutoReload;
/// Start the automatic reloading of the placement using specific time interval
- (void)startAutoReloadWithSeconds:(NSTimeInterval)seconds;
/// Stop the automatic reloading of the placement
- (void)stopAutoReload;
/// Set the placement auto reload interval
/// \param seconds auto reload interval
///
- (void)setAutoreloadIntervalWithSeconds:(NSTimeInterval)seconds;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
/// \param forceLoad True if you want to be able to reload and show new banner before set banner reload interval (default: 30s) between reloads, false otherwise.
///
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reloadWithForceLoad:(BOOL)forceLoad SWIFT_WARN_UNUSED_RESULT;
/// Requests placement reload.
/// Works only if automatic reloading is disabled.
///
/// returns:
/// Bool if reload started and false otherwise.
- (BOOL)reload SWIFT_WARN_UNUSED_RESULT;
/// Returns true if there is an ad loaded for given placement.
///
/// returns:
/// True if there is an ad loaded for given placement.
- (BOOL)hasAd SWIFT_WARN_UNUSED_RESULT;
/// Returns placement view. Works only for banner placements.
///
/// returns:
/// Placement view
- (UIView * _Nullable)getPlacementView SWIFT_WARN_UNUSED_RESULT;
/// Sets placement default image. This image will be shown in placement when no ad is available.
/// \param image The image to set.
///
- (void)setDefaultImageWithImage:(UIImage * _Nonnull)image;
/// Sets gravity for ads that don’t fill entire placement area. Works only for sticky banner placements.
/// \param alignment The alignment to set.
///
- (void)setBannerAlignWithAlignment:(AATBannerAlign * _Nonnull)alignment;
/// Sets the targeting information for the placement
/// Information provided for placement overrides targeting information overrides targeting information for application set by the <code>AATSDK/setTargetingInfo(info:)</code>
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nullable targetingInfo;
/// Sets the content targeting url for the placement.
/// Information provided for placement overrides targeting information for application set by the <code>AATSDK/setContentTargetingUrl(targetingUrl:)</code>
@property (nonatomic, copy) NSString * _Nullable contentTargetingUrl;
/// note: not all ad-networks supports multiple urls
@property (nonatomic, copy) NSArray<NSString *> * _Nullable multiContentTargetingUrls;
/// Enables the creative history tracking with a given maximum size.
/// \param size The maximum number of creative history entries to retain.
///
- (void)enableCreativeHistoryWithSize:(NSInteger)size;
/// Retrieves the current creative history.
/// \param completion A closure called with an array of <code>AATPlacementHistoryInfo</code> objects.
///
- (void)getCreativeHistoryWithCompletion:(void (^ _Nonnull)(NSArray<AATPlacementHistoryInfo *> * _Nonnull))completion;
@end

/// Conform to this protocol to listen to the AATStaticBannerPlacement events
SWIFT_PROTOCOL("_TtP6AATKit32AATStickyBannerPlacementDelegate_")
@protocol AATStickyBannerPlacementDelegate <AATAdDisplayDelegate, AATHaveAdDelegate, AATNoAdDelegate>
@end

@class BannerOptions;
@class InterstitialAdOptions;
@class RewardedVideoOptions;
/// Configuration options for SuperAwesome ad network integrations.
SWIFT_CLASS("_TtC6AATKit22AATSuperAwesomeOptions")
@interface AATSuperAwesomeOptions : NSObject
/// Initializes a new <code>AATSuperAwesomeOptions</code> instance.
/// \param bannerOptions Banner ad options.
///
/// \param interstitialAdOptions Interstitial ad options.
///
/// \param rewardedVideoOptionsOptions Rewarded video ad options.
///
- (nonnull instancetype)initWithBannerOptions:(BannerOptions * _Nullable)bannerOptions interstitialAdOptions:(InterstitialAdOptions * _Nullable)interstitialAdOptions rewardedVideoOptionsOptions:(RewardedVideoOptions * _Nullable)rewardedVideoOptionsOptions OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Orientation options for ads.
typedef SWIFT_ENUM(NSInteger, Orientation, closed) {
/// Any orientation.
  OrientationAny = 0,
/// Portrait only.
  OrientationPortrait = 1,
/// Landscape only.
  OrientationLandscape = 2,
};

/// Close button display behavior.
typedef SWIFT_ENUM(NSInteger, CloseButtonState, closed) {
/// Close button enabled with default delay.
  CloseButtonStateEnabled = 0,
/// Close button enabled with no delay.
  CloseButtonStateEnabledNoDelay = 1,
};

/// Base network options for SuperAwesome ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions14NetworkOptions")
@interface NetworkOptions : NSObject
/// Initializes a new <code>NetworkOptions</code> instance.
/// \param parentalGateEnabled Enable or disable the Parental Gate.
///
/// \param bumperPageEnabled Enable or disable the Bumper page.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo for the Bumper page.
///
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Banner ad options specific to SuperAwesome.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions13BannerOptions")
@interface BannerOptions : NetworkOptions
/// Initializes a new <code>BannerOptions</code> instance.
/// \param parentalGateEnabled Enables or disables the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enables or disables the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name to display on the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
/// \param isBackgroundTransparent Enables or disables transparent background. Default is <code>true</code>.
///
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo isBackgroundTransparent:(BOOL)isBackgroundTransparent OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Configuration options for SuperAwesome interstitial ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions21InterstitialAdOptions")
@interface InterstitialAdOptions : NetworkOptions
/// Initializes a new <code>InterstitialAdOptions</code> instance.
/// \param orientation The orientation to display the ad. Default is <code>.any</code>.
///
/// \param closeButtonState The state of the close button, of type <code>AATSuperAwesomeOptions/CloseButtonState</code>. Default is <code>.enabled</code>.
///
/// \param parentalGateEnabled Enable or disable the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enable or disable the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
- (nonnull instancetype)initWithOrientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithParentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

@interface AATSuperAwesomeOptions (SWIFT_EXTENSION(AATKit))
@end

/// Configuration options for SuperAwesome rewarded video ads.
SWIFT_CLASS("_TtCC6AATKit22AATSuperAwesomeOptions20RewardedVideoOptions")
@interface RewardedVideoOptions : InterstitialAdOptions
/// Initializes a new <code>RewardedVideoOptions</code> instance.
/// \param closeButtonAtEnd Enables or disables auto-closing at the end. Default is <code>false</code>.
///
/// \param smallClickEnabled Enables or disables the small click button. Default is <code>false</code>.
///
/// \param closeButtonWarningEnabled Enables or disables the close button warning. Default is <code>false</code>.
///
/// \param orientation The ad orientation. Default is <code>.any</code>.
///
/// \param closeButtonState The state of the close button of type <code>AATSuperAwesomeOptions/CloseButtonState</code>. Default is <code>.enabled</code>.
///
/// \param parentalGateEnabled Enables or disables the Parental Gate. Default is <code>false</code>.
///
/// \param bumperPageEnabled Enables or disables the Bumper page. Default is <code>false</code>.
///
/// \param bumperPageCustomAppName Custom app name for the Bumper page.
///
/// \param bumperPageLogo Custom logo image for the Bumper page.
///
- (nonnull instancetype)initWithCloseButtonAtEnd:(BOOL)closeButtonAtEnd smallClickEnabled:(BOOL)smallClickEnabled closeButtonWarningEnabled:(BOOL)closeButtonWarningEnabled orientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithOrientation:(enum Orientation)orientation closeButtonState:(enum CloseButtonState)closeButtonState parentalGateEnabled:(BOOL)parentalGateEnabled bumperPageEnabled:(BOOL)bumperPageEnabled bumperPageCustomAppName:(NSString * _Nullable)bumperPageCustomAppName bumperPageLogo:(UIImage * _Nullable)bumperPageLogo SWIFT_UNAVAILABLE;
@end

SWIFT_CLASS("_TtC6AATKit18AATSupplyChainData")
@interface AATSupplyChainData : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents user-specific targeting information used by AATKit.
SWIFT_CLASS("_TtC6AATKit16AATUserTargeting")
@interface AATUserTargeting : NSObject
/// Initializes a new instance of <code>AATUserTargeting</code> with optional user-specific targeting values.
/// \param userId A unique identifier for the user.
///
/// \param gender The user’s gender. Default is <code>AATGender/unknown</code>.
///
/// \param yearOfBirth The user’s year of birth. Must be a 4-digit number; otherwise it will be ignored.
///
/// \param keywords Targeting keywords associated with the user.
///
- (nonnull instancetype)initWithUserId:(NSString * _Nullable)userId gender:(enum AATGender)gender yearOfBirth:(NSNumber * _Nullable)yearOfBirth keywords:(NSArray<NSString *> * _Nullable)keywords OBJC_DESIGNATED_INITIALIZER;
/// A string representation of the <code>AATUserTargeting</code> instance, useful for debugging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol AATVendorConsentDelegate;
/// AATKit vendor consent. Should be initialised with <code>AATVendorConsentDelegate</code>
/// see <code>init(delegate:)</code>
SWIFT_CLASS("_TtC6AATKit16AATVendorConsent")
@interface AATVendorConsent : AATConsentImplementation
/// Initialize a vendor consent instance. For more information, visit <a href="https://addapptr.gitbook.io/ios-integration/start/consent/vendor-consent">Vendor Consent</a>.
/// Will read the IAB consent string and CCPA string from UserDefaults if available.
/// \param delegate an instance of <code>AATVendorConsentDelegate</code>
///
- (nonnull instancetype)initWithDelegate:(id <AATVendorConsentDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
@end

@interface AATVendorConsent (SWIFT_EXTENSION(AATKit))
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end

/// The delegate for receiving events from <code>AATVendorConsent</code>.
SWIFT_PROTOCOL("_TtP6AATKit24AATVendorConsentDelegate_")
@protocol AATVendorConsentDelegate
/// Gets the consent for an ad network.
/// \param network an <code>AATAdNetwork</code> to get the consent for.
///
///
/// returns:
/// A <code>NonIABConsent</code> state for the passed ad network.
- (enum NonIABConsent)getConsentForNetwork:(enum AATAdNetwork)network SWIFT_WARN_UNUSED_RESULT;
/// Gets the consent for AddApptr GmbH as the legal entity holding the Gravite brand.
///
/// returns:
/// A <code>NonIABConsent</code> state for AddApptr GmbH.
- (enum NonIABConsent)getConsentForAddapptr SWIFT_WARN_UNUSED_RESULT;
@end

/// NonIABConsent.
typedef SWIFT_ENUM(NSInteger, NonIABConsent, open) {
/// <ul>
///   <li>
///     Unknown - if the user has never set a consent state.
///   </li>
/// </ul>
  NonIABConsentUnknown = 0,
/// <ul>
///   <li>
///     Consent has been granted by the user.
///   </li>
/// </ul>
  NonIABConsentObtained = 1,
/// <ul>
///   <li>
///     Consent has been declined by the user.
///   </li>
/// </ul>
  NonIABConsentWithheld = 2,
};

@interface PlacementDebugInfo (SWIFT_EXTENSION(AATKit))
@end

/// Placement frequency capping information
SWIFT_CLASS("_TtCCC6AATKit12AATDebugInfo18PlacementDebugInfo25FrequencyCappingDebugInfo")
@interface FrequencyCappingDebugInfo : NSObject
/// Maximum number of impressions allowed during a single session
@property (nonatomic) NSInteger maxImpressionsPerSession;
/// Maximum number of impressions allowed within one hour
@property (nonatomic) NSInteger maxImpressionsPerHour;
/// Maximum number of impressions allowed in a 24-hour period
@property (nonatomic) NSInteger maxImpressionsPerDay;
/// Maximum number of impressions allowed in a 7-day period
@property (nonatomic) NSInteger maxImpressionsPerWeek;
/// Maximum number of impressions allowed in a calendar month
@property (nonatomic) NSInteger maxImpressionsPerMonth;
/// Minimum required time (in seconds) between two impressions
@property (nonatomic) NSTimeInterval minTimeBetweenImpressions;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@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
