#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.1.2 effective-5.10 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)
#ifndef RTBSDK_SWIFT_H
#define RTBSDK_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 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="RTBSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

@class NSString;
/// A delegate protocol for receiving banner ad interaction events.
/// Implement this protocol to handle user interactions and rendering lifecycle events
/// for banner ads provided by the RTB SDK.
SWIFT_PROTOCOL("_TtP6RTBSDK30RTBBannerAdInteractionDelegate_")
@protocol RTBBannerAdInteractionDelegate
/// Called when the banner ad is clicked.
/// Use this to track user engagement or pause in-app activity if needed.
- (void)bannerAdDidRecordClick;
/// Called when the ad causes the app to pause, such as when opening an external browser.
/// Use this to temporarily pause any relevant in-app content or animations.
- (void)bannerAdDidPauseForAd;
/// Called when the app resumes after the ad activity has ended.
/// Use this to resume paused in-app content or UI updates.
- (void)bannerAdDidResumeAfterAd;
/// Called when the banner ad fails to render.
/// \param error A string describing the rendering failure reason.
///
- (void)bannerAdDidFailToRenderWithError:(NSString * _Nonnull)error;
@end

@class RTBBannerBid;
/// A delegate protocol for receiving the result of a banner ad load request.
/// Implement this protocol to be notified when a banner ad either successfully loads
/// or fails to load.
SWIFT_PROTOCOL("_TtP6RTBSDK23RTBBannerAdLoadDelegate_")
@protocol RTBBannerAdLoadDelegate
/// Called when a banner ad is successfully loaded.
/// \param bannerBid An instance of <code>RTBBannerBid</code> containing the bid and ad metadata.
///
- (void)bannerAdDidReceiveAdWithBannerBid:(RTBBannerBid * _Nonnull)bannerBid;
/// Called when the banner ad request fails.
/// \param errorMessage A message describing why the ad failed to load.
///
- (void)bannerAdDidFailToReceiveAdWithErrorMessage:(NSString * _Nonnull)errorMessage;
@end

@class RTBBannerRequestConfiguration;
@class RTBBannerSize;
@class UIView;
/// An object responsible for loading and displaying RTB banner ads.
SWIFT_CLASS("_TtC6RTBSDK19RTBBannerAdProvider")
@interface RTBBannerAdProvider : NSObject
/// Loads a new banner ad with the specified configuration.
/// This method fetches a banner ad using the provided request configuration, banner size, and user agent string.
/// The result of the ad load (success or failure) is reported via the supplied delegate.
/// \param configuration An instance of <code>RTBBannerRequestConfiguration</code> containing all necessary ad request details.
///
/// \param size The desired banner size (see <code>RTBBannerSize</code>).
///
/// \param userAgent The User-Agent string to be used for the ad request.
///
/// \param loadDelegate A delegate conforming to <code>RTBBannerAdLoadDelegate</code> that will be notified of the load result.
///
+ (void)loadWithConfiguration:(RTBBannerRequestConfiguration * _Nonnull)configuration size:(RTBBannerSize * _Nonnull)size userAgent:(NSString * _Nonnull)userAgent loadDelegate:(id <RTBBannerAdLoadDelegate> _Nonnull)loadDelegate;
/// Returns a banner view configured with the provided bid information and interaction delegate.
/// This method must be called on the main thread, as it involves creating and rendering UI elements.
/// \param bannerBid An instance of <code>RTBBannerBid</code> obtained from a successful banner load.
///
/// \param delegate A delegate conforming to <code>RTBBannerAdInteractionDelegate</code> to handle ad interactions such as clicks or pauses.
///
///
/// returns:
/// A <code>UIView</code> that displays the banner ad, or <code>nil</code> if called from a background thread.
+ (UIView * _Nullable)getBannerViewWithBannerBid:(RTBBannerBid * _Nonnull)bannerBid delegate:(id <RTBBannerAdInteractionDelegate> _Nonnull)delegate SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// An object representing metadata about a received bid in an RTB auction.
SWIFT_CLASS("_TtC6RTBSDK10RTBBidInfo")
@interface RTBBidInfo : NSObject
/// The bid price in cost per mille (CPM).
@property (nonatomic) float priceCPM;
/// The name or identifier of the bidder.
@property (nonatomic, copy) NSString * _Nonnull bidder;
/// The creative ID associated with the ad.
@property (nonatomic, copy) NSString * _Nullable creativeId;
/// The campaign ID associated with the bid.
@property (nonatomic, copy) NSString * _Nullable campaignId;
/// A string representation of the bid info, 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

/// Represents a banner ad bid, including its creative response and size.
/// This class extends <code>RTBBidInfo</code> by adding details specific to banner ads.
SWIFT_CLASS("_TtC6RTBSDK12RTBBannerBid")
@interface RTBBannerBid : RTBBidInfo
@end

@class NSNumber;
@class RTBUserTargeting;
/// A configuration object for making ad requests through RTBSDK.
SWIFT_CLASS("_TtC6RTBSDK23RTBRequestConfiguration")
@interface RTBRequestConfiguration : NSObject
/// The minimum bid floor price in USD.
@property (nonatomic, strong) NSNumber * _Nullable bidFloor;
/// The seller ID associated with the ad inventory.
@property (nonatomic, copy) NSString * _Nullable sellerId;
/// An object representing user targeting parameters for this request.
@property (nonatomic, strong) RTBUserTargeting * _Nullable userTargeting;
@property (nonatomic, copy) NSString * _Nullable gpid;
/// \param placementId The placement ID as defined on the TeqBlaze dashboard.
///
/// \param iTunesAppId The App Store app ID from the publisher’s Apple Developer account.
///
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Configuration object for requesting banner ads.
/// Inherits from <code>RTBRequestConfiguration</code> and extends it with banner-specific details.
SWIFT_CLASS("_TtC6RTBSDK29RTBBannerRequestConfiguration")
@interface RTBBannerRequestConfiguration : RTBRequestConfiguration
/// A string representation of the banner request configuration, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
@end

/// Represents the size of a banner ad with width and height dimensions.
SWIFT_CLASS("_TtC6RTBSDK13RTBBannerSize")
@interface RTBBannerSize : NSObject
/// Initializes a new banner size with the specified width and height.
/// \param width The width of the banner.
///
/// \param height The height of the banner.
///
- (nonnull instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface RTBBannerSize (SWIFT_EXTENSION(RTBSDK))
/// Standard banner size: 320x50 points.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RTBBannerSize * _Nonnull banner320x50;)
+ (RTBBannerSize * _Nonnull)banner320x50 SWIFT_WARN_UNUSED_RESULT;
/// Medium rectangle banner size: 300x250 points.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RTBBannerSize * _Nonnull banner300x250;)
+ (RTBBannerSize * _Nonnull)banner300x250 SWIFT_WARN_UNUSED_RESULT;
/// Leaderboard banner size: 728x90 points.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RTBBannerSize * _Nonnull banner728x90;)
+ (RTBBannerSize * _Nonnull)banner728x90 SWIFT_WARN_UNUSED_RESULT;
@end

@protocol RTBBannerViewDelegate;
@class NSCoder;
/// A view that displays banner ads using the RTB SDK.
/// Use this view to load and display banner ads with a specific size and configuration.
SWIFT_CLASS("_TtC6RTBSDK13RTBBannerView")
@interface RTBBannerView : UIView
/// The delegate that receives banner ad lifecycle events.
@property (nonatomic, weak) id <RTBBannerViewDelegate> _Nullable delegate;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
/// Initializes a new banner view with a given banner size.
/// \param size The desired banner ad size.
///
- (nonnull instancetype)initWithSize:(RTBBannerSize * _Nonnull)size OBJC_DESIGNATED_INITIALIZER;
/// Loads a new banner ad using the provided configuration.
/// \param configuration An instance of <code>RTBBannerRequestConfiguration</code>.
///
- (void)loadWithConfiguration:(RTBBannerRequestConfiguration * _Nonnull)configuration;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

@protocol RTBDSPBannerProtocol;
@interface RTBBannerView (SWIFT_EXTENSION(RTBSDK))
- (void)setDSPAdapters:(NSArray<id <RTBDSPBannerProtocol>> * _Nonnull)adapters;
@end

/// Delegate protocol for receiving updates about banner ad lifecycle events.
/// Implement this protocol to be notified when ads are successfully loaded, fail to load,
/// fail to render, are clicked, or when the user interacts with the ad by opening and returning
/// from external content.
SWIFT_PROTOCOL("_TtP6RTBSDK21RTBBannerViewDelegate_")
@protocol RTBBannerViewDelegate
/// Called when the banner view successfully receives an ad.
/// The delegate may want to add the banner view to the view hierarchy if it hasn’t been added yet.
/// \param bannerView The <code>RTBBannerView</code> instance that received the ad.
///
/// \param bidInfo An instance of <code>RTBBidInfo</code> containing bid price and bidder details.
///
/// \param networkName The name of the ad network that provided the ad.
///
- (void)bannerViewDidReceiveAd:(RTBBannerView * _Nonnull)bannerView bidInfo:(RTBBidInfo * _Nonnull)bidInfo networkName:(NSString * _Nonnull)networkName;
/// Called when the banner view fails to receive an ad.
/// \param bannerView The <code>RTBBannerView</code> instance that failed to load the ad.
///
/// \param errorMessage A description of the failure.
///
/// \param networkName The name of the ad network that failed to provide the ad.
///
- (void)bannerView:(RTBBannerView * _Nonnull)bannerView didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Called when the banner view fails to render the received ad.
/// \param bannerView The <code>RTBBannerView</code> instance that failed to render the ad.
///
/// \param errorMessage A description of the render failure.
///
/// \param networkName The name of the ad network involved.
///
- (void)bannerView:(RTBBannerView * _Nonnull)bannerView didFailToRender:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Called when a click has been recorded on the banner ad.
/// \param bannerView The <code>RTBBannerView</code> instance where the click occurred.
///
/// \param networkName The name of the ad network whose ad was clicked.
///
- (void)bannerViewDidRecordClick:(RTBBannerView * _Nonnull)bannerView networkName:(NSString * _Nonnull)networkName;
/// Called when the ad causes the app to open an external browser.
/// \param bannerView The <code>RTBBannerView</code> instance that triggered external navigation.
///
/// \param networkName The name of the ad network responsible for this action.
///
- (void)bannerViewDidPauseForAd:(RTBBannerView * _Nonnull)bannerView networkName:(NSString * _Nonnull)networkName;
/// Called when the user returns to the app after viewing the external ad.
/// \param bannerView The <code>RTBBannerView</code> instance that resumed.
///
/// \param networkName The name of the ad network involved.
///
- (void)bannerViewDidResumeAfterAd:(RTBBannerView * _Nonnull)bannerView networkName:(NSString * _Nonnull)networkName;
@end

SWIFT_CLASS("_TtC6RTBSDK18RTBBidderExtraInfo")
@interface RTBBidderExtraInfo : NSObject
@property (nonatomic, copy) NSString * _Nullable clickURL;
@property (nonatomic, copy) NSString * _Nullable impressionURL;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol RTBDSPDelegate;
SWIFT_PROTOCOL("_TtP6RTBSDK14RTBDSPProtocol_")
@protocol RTBDSPProtocol
@property (nonatomic, readonly, copy) NSString * _Nonnull bidderName;
@property (nonatomic, strong) id <RTBDSPDelegate> _Nullable signalsDelegate;
- (nonnull instancetype)init;
- (void)loadSignals;
- (void)renderCreative:(NSString * _Nonnull)creative extraInfo:(RTBBidderExtraInfo * _Nonnull)extraInfo;
@end

@class UIViewController;
SWIFT_PROTOCOL("_TtP6RTBSDK16RTBDSAdPProtocol_")
@protocol RTBDSAdPProtocol <RTBDSPProtocol>
@property (nonatomic, strong) UIViewController * _Nullable viewController;
- (void)unload;
- (void)pause;
- (void)resumeWithController:(UIViewController * _Nonnull)controller;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK20RTBDSPBannerDelegate_")
@protocol RTBDSPBannerDelegate
/// Tells the delegate that an ad request successfully received an ad. The delegate may want to add
- (void)dspAdViewDidReceiveAd:(id <RTBDSPBannerProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that an ad request failed.
- (void)dspAdView:(id <RTBDSPBannerProtocol> _Nonnull)ad didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that a click has been recorded for the ad.
- (void)dspAdViewDidRecordClick:(id <RTBDSPBannerProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that ad has opened external browser.
- (void)dspAdViewDidPauseForAd:(id <RTBDSPBannerProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that Ad has been dismissed.
- (void)dspAdViewDidResumeAfterAd:(id <RTBDSPBannerProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK20RTBDSPBannerProtocol_")
@protocol RTBDSPBannerProtocol <RTBDSAdPProtocol>
@property (nonatomic, strong) id <RTBDSPBannerDelegate> _Nullable bannerDelegate;
- (void)setBannerSizeWithSize:(CGSize)size;
- (UIView * _Nullable)getBannerView SWIFT_WARN_UNUSED_RESULT;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK14RTBDSPDelegate_")
@protocol RTBDSPDelegate
- (void)didCollectSignals:(id <RTBDSPProtocol> _Nonnull)dsp signals:(NSDictionary<NSString *, id> * _Nonnull)signals;
- (void)didFailToCollectSignals:(id <RTBDSPProtocol> _Nonnull)dsp error:(NSString * _Nonnull)error;
@end

@protocol RTBDSPInterstitialProtocol;
SWIFT_PROTOCOL("_TtP6RTBSDK26RTBDSPInterstitialDelegate_")
@protocol RTBDSPInterstitialDelegate
/// Tells the delegate that an ad request successfully received an ad. The delegate may want to add
- (void)dspAdViewDidReceiveAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that an ad request failed.
- (void)dspAdView:(id <RTBDSPInterstitialProtocol> _Nonnull)ad didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that a click has been recorded for the ad.
- (void)dspAdViewDidRecordClick:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that ad has opened external browser.
- (void)dspAdViewDidPauseForAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that Ad has been dismissed.
- (void)dspAdViewDidResumeAfterAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK26RTBDSPInterstitialProtocol_")
@protocol RTBDSPInterstitialProtocol <RTBDSAdPProtocol>
@property (nonatomic, strong) id <RTBDSPInterstitialDelegate> _Nullable adDelegate;
- (BOOL)showWithViewController:(UIViewController * _Nonnull)viewController;
@end

@protocol RTBDSPRewardedVideoProtocol;
@class RTBReward;
SWIFT_PROTOCOL("_TtP6RTBSDK27RTBDSPRewardedVideoDelegate_")
@protocol RTBDSPRewardedVideoDelegate
/// Tells the delegate that an ad request successfully received an ad. The delegate may want to add
- (void)dspAdViewDidReceiveAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that an ad request failed.
- (void)dspAdView:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that a click has been recorded for the ad.
- (void)dspAdViewDidRecordClick:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that ad has opened external browser.
- (void)dspAdViewDidPauseForAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
/// Tells the delegate that Ad has been dismissed.
- (void)dspAdViewDidResumeAfterAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidRecieveReward:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad reward:(RTBReward * _Nonnull)reward networkName:(NSString * _Nonnull)networkName;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK27RTBDSPRewardedVideoProtocol_")
@protocol RTBDSPRewardedVideoProtocol <RTBDSAdPProtocol>
@property (nonatomic, strong) id <RTBDSPRewardedVideoDelegate> _Nullable adDelegate;
- (BOOL)showWithViewController:(UIViewController * _Nonnull)viewController;
@end

@protocol RTBFullscreenDelegate;
@class RTBFullscreenRequestConfiguration;
/// Represents a fullscreen interstitial ad that can be loaded and presented.
SWIFT_CLASS("_TtC6RTBSDK15RTBFullscreenAd")
@interface RTBFullscreenAd : NSObject
/// Delegate to receive fullscreen ad lifecycle events.
@property (nonatomic, weak) id <RTBFullscreenDelegate> _Nullable delegate;
/// Initializes a new fullscreen ad instance.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Starts loading a fullscreen ad with the given request configuration.
/// \param configuration The fullscreen ad request configuration.
///
///
/// returns:
/// <code>true</code> if loading started successfully, <code>false</code> if an ad is already loaded and ready.
- (BOOL)loadWithConfiguration:(RTBFullscreenRequestConfiguration * _Nonnull)configuration;
/// Presents the loaded fullscreen ad from the specified view controller.
/// \param viewController The view controller to present the ad from.
///
///
/// returns:
/// <code>true</code> if the ad was presented, <code>false</code> otherwise.
- (BOOL)showWithViewController:(UIViewController * _Nonnull)viewController;
@end

@interface RTBFullscreenAd (SWIFT_EXTENSION(RTBSDK)) <RTBDSPInterstitialDelegate>
- (void)dspAdViewDidReceiveAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdView:(id <RTBDSPInterstitialProtocol> _Nonnull)ad didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidRecordClick:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidPauseForAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidResumeAfterAd:(id <RTBDSPInterstitialProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
@end

SWIFT_PROTOCOL("_TtP6RTBSDK21RTBFullscreenDelegate_")
@protocol RTBFullscreenDelegate
/// Called when the fullscreen ad has been loaded and ready to be shown
/// \param fullscreenAd The loaded <code>RTBFullscreenAd</code>
///
/// \param bidInfo an instance of <code>RTBBidInfo</code> representing bid price and and bidder name
///
/// \param networkName networtk name for the loaded ad
///
- (void)fullscreenAdDidReceiveAd:(RTBFullscreenAd * _Nonnull)fullscreenAd bidInfo:(RTBBidInfo * _Nonnull)bidInfo networkName:(NSString * _Nonnull)networkName;
/// Called when the ad loading is failed
/// \param fullscreenAd The <code>RTBFullscreenAd</code> that failed to load
///
/// \param errorMessage A message describing the reason for the failure
///
/// \param networkName networtk name for the loaded ad
///
- (void)fullscreenAd:(RTBFullscreenAd * _Nonnull)fullscreenAd didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Called when the use clicks on the fullscreen ad
/// \param fullscreenAd The <code>RTBFullscreenAd</code> that received the click
///
/// \param networkName networtk name for the loaded ad
///
- (void)fullscreenAdDidRecordClick:(RTBFullscreenAd * _Nonnull)fullscreenAd networkName:(NSString * _Nonnull)networkName;
/// Called when the fullscreen ad has been displayed
/// \param fullscreenAd The <code>RTBFullscreenAd</code> that received the click
///
/// \param networkName networtk name for the loaded ad
///
- (void)fullscreenAdDidPauseForAd:(RTBFullscreenAd * _Nonnull)fullscreenAd networkName:(NSString * _Nonnull)networkName;
/// Called when the fullscreen ad has been dismisseed
/// \param fullscreenAd The <code>RTBFullscreenAd</code> that received the click
///
/// \param networkName networtk name for the loaded ad
///
- (void)fullscreenAdDidResumeAfterAd:(RTBFullscreenAd * _Nonnull)fullscreenAd networkName:(NSString * _Nonnull)networkName;
@end

/// Configuration settings used when requesting a fullscreen ad.
/// Inherits from <code>RTBRequestConfiguration</code> and adds options specific to fullscreen ads.
SWIFT_CLASS("_TtC6RTBSDK33RTBFullscreenRequestConfiguration")
@interface RTBFullscreenRequestConfiguration : RTBRequestConfiguration
/// A flag to determine whether the SDK should force displaying its native close button
/// even if the MRAID creative already contains one.
/// If the MRAID creative has close button and <code>forceCloseButtonForMraid</code> is true, the MRAID creative would have 2 close buttons
@property (nonatomic) BOOL forceCloseButtonForMraid;
/// A string representation of the fullscreen request configuration, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
@end

/// Represents the gender of the user for targeting purposes.
typedef SWIFT_ENUM(NSInteger, RTBGender, open) {
/// Male gender.
  RTBGenderMale = 0,
/// Female gender.
  RTBGenderFemale = 1,
/// Other gender.
  RTBGenderOther = 2,
/// Unknown or unspecified gender.
  RTBGenderUnknown = 3,
};

@class RTBHybridNativeAdLoader;
@class RTBNativeAd;
/// Delegate protocol for receiving updates about Hybrid ad load events.
/// Implement this protocol to be notified when ads are successfully loaded, fail to load, fail to render
SWIFT_PROTOCOL("_TtP6RTBSDK29RTBHybridNativeAdLoadDelegate_")
@protocol RTBHybridNativeAdLoadDelegate
/// Called when the loader successfully receives a native ad.
/// \param nativeAdLoader The <code>RTBHybridNativeAdLoader</code> instance that performed the load.
///
/// \param nativeAd The <code>RTBNativeAd</code> that was fetched and ready to be rendered.
///
/// \param bidInfo An instance of <code>RTBBidInfo</code> containing bid price and bidder information.
///
/// \param networkName The name of the mediation network that supplied the ad.
///
- (void)hybridNativeAdDidReceiveNativeAd:(RTBHybridNativeAdLoader * _Nonnull)nativeAdLoader nativeAd:(RTBNativeAd * _Nonnull)nativeAd bidInfo:(RTBBidInfo * _Nonnull)bidInfo networkName:(NSString * _Nonnull)networkName;
/// Called when the loader successfully receives a banner ad that will be displayed in a hybrid slot.
/// \param nativeAdLoader The <code>RTBHybridNativeAdLoader</code> instance that performed the load.
///
/// \param bannerBid An instance of <code>RTBBidInfo</code> containing bid price and bidder details.
///
/// \param networkName The name of the ad network that provided the ad.
///
- (void)hybridNativeAdDidReceiveBannerAd:(RTBHybridNativeAdLoader * _Nonnull)nativeAdLoader bannerBid:(RTBBannerBid * _Nonnull)bannerBid networkName:(NSString * _Nonnull)networkName;
/// Called when the loader fails to retrieve an ad.
/// \param nativeAdLoader The <code>RTBHybridNativeAdLoader</code> instance that performed the load.
///
/// \param errorMessage A description of the failure.
///
/// \param networkName The name of the ad network that failed to provide the ad.
///
- (void)hybridNativeAdDidFailToReceiveAd:(RTBHybridNativeAdLoader * _Nonnull)nativeAdLoader errorMessage:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
@end

@class RTBHybridNativeAdRequestConfiguration;
SWIFT_CLASS("_TtC6RTBSDK23RTBHybridNativeAdLoader")
@interface RTBHybridNativeAdLoader : NSObject
/// The delegate that will receive ad load event callbacks.
@property (nonatomic, weak) id <RTBHybridNativeAdLoadDelegate> _Nullable delegate;
/// Loads a new hybrid native ad using the specified configuration and user agent.
/// This method can be called from background threads.
/// \param configuration The hybrid native ad request configuration required to request a new ad. See <code>RTBHybridNativeAdRequestConfiguration</code>.
///
/// \param userAgent The user agent string to be used in the ad request.
///
- (void)loadWithConfiguration:(RTBHybridNativeAdRequestConfiguration * _Nonnull)configuration userAgent:(NSString * _Nonnull)userAgent;
/// Loads a new hybrid native ad using the specified configuration.
/// This method <em>must</em> be called on the main thread. If called from a background thread,
/// it will log an error and notify the delegate of the failure.
/// \param configuration The native ad request configuration required to request a new ad. See <code>RTBHybridNativeAdRequestConfiguration</code>.
///
- (void)loadWithConfiguration:(RTBHybridNativeAdRequestConfiguration * _Nonnull)configuration;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Configuration class for native ad requests.
/// Inherits from <code>RTBRequestConfiguration</code> and adds native ads specific options.
SWIFT_CLASS("_TtC6RTBSDK37RTBHybridNativeAdRequestConfiguration")
@interface RTBHybridNativeAdRequestConfiguration : RTBRequestConfiguration
/// A string representation of <code>RTBHybridNativeAdRequestConfiguration</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
@end

/// Represents the desired log level for the RTB SDK logging system.
/// This enum defines various levels of logging verbosity. Use the appropriate level
/// depending on the environment and troubleshooting needs.
typedef SWIFT_ENUM(NSInteger, RTBLogLevel, open) {
/// Verbose-level messages capture verbose, debug, info, warning, and error messages.
/// Suitable for intensive development and debugging scenarios.
  RTBLogLevelVerbose = 1,
/// Debug-level messages capture debug, info, warning, and error messages.
/// Suitable for normal development use.
  RTBLogLevelDebug = 2,
/// Info-level messages capture info, warning, and error messages.
/// Useful for general informational logging but not detailed troubleshooting.
  RTBLogLevelInfo = 3,
/// Warn-level messages capture warning and error messages only.
/// Suitable for highlighting potential issues without too much noise.
  RTBLogLevelWarn = 4,
/// Error-level messages capture error messages only.
/// Recommended for production environments to minimize log output.
  RTBLogLevelError = 5,
};

SWIFT_CLASS("_TtC6RTBSDK9RTBLogger")
@interface RTBLogger : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol RTBNativeAdInteractionDelegate;
/// Represents a loaded native ad and handles impression and click tracking.
SWIFT_CLASS("_TtC6RTBSDK11RTBNativeAd")
@interface RTBNativeAd : NSObject
/// Delegate to notify about native ad interaction events.
@property (nonatomic, weak) id <RTBNativeAdInteractionDelegate> _Nullable delegate;
/// The title of the native ad.
@property (nonatomic, copy) NSString * _Nullable title;
/// The call-to-action text of the native ad.
@property (nonatomic, copy) NSString * _Nullable callToAction;
/// The body text of the native ad.
@property (nonatomic, copy) NSString * _Nullable body;
/// URL string of the native ad’s icon image.
@property (nonatomic, copy) NSString * _Nullable icon;
/// URL string of the native ad’s main image.
@property (nonatomic, copy) NSString * _Nullable image;
/// The rating of the native ad (optional).
@property (nonatomic, strong) NSNumber * _Nullable rating;
/// The sponsored text of the native ad.
@property (nonatomic, copy) NSString * _Nullable sponsered;
/// Starts tracking an impression for the native ad on the given view.
/// \param view The main view displaying the native ad.
///
- (void)trackImpressionWithView:(UIView * _Nonnull)view;
/// Starts tracking an impression and user clicks on specified clickable views.
/// \param view The main view displaying the native ad.
///
/// \param clickableViews The views that should be tappable to register clicks.
///
- (void)trackImpressionWithView:(UIView * _Nonnull)view clickableViews:(NSArray<UIView *> * _Nonnull)clickableViews;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Delegate protocol to receive interaction events for a native ad.
/// Implement this protocol to handle native ad rendering errors, user interactions
/// such as clicks, and app lifecycle changes related to the ad (pausing and resuming).
SWIFT_PROTOCOL("_TtP6RTBSDK30RTBNativeAdInteractionDelegate_")
@protocol RTBNativeAdInteractionDelegate
/// Called when the native ad couldn’t be rendered.
/// \param nativeAd The <code>RTBNativeAd</code> that failed to render
///
/// \param errorMessage A message describing the reason for the failure
///
/// \param networkName Network name for the ad
///
- (void)nativeAdView:(RTBNativeAd * _Nonnull)nativeAd didFailToRender:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Called when the user clicks on the native ad.
/// \param nativeAd The <code>RTBNativeAd</code> that received the click
///
/// \param networkName Network name for the ad
///
- (void)nativeAdDidRecordClick:(RTBNativeAd * _Nonnull)nativeAd networkName:(NSString * _Nonnull)networkName;
/// Called when the native ad opens an external browser and the app is paused for the ad.
/// \param nativeAd The <code>RTBNativeAd</code> that caused the pause
///
/// \param networkName Network name for the ad
///
- (void)nativeAdDidPauseForAd:(RTBNativeAd * _Nonnull)nativeAd networkName:(NSString * _Nonnull)networkName;
/// Called when the native ad has been dismissed and the app resumes after the ad.
/// \param nativeAd The <code>RTBNativeAd</code> that was dismissed
///
/// \param networkName Network name for the ad
///
- (void)nativeAdDidResumeAfterAd:(RTBNativeAd * _Nonnull)nativeAd networkName:(NSString * _Nonnull)networkName;
@end

@protocol RTBNativeAdLoaderDelegate;
@class RTBNativeAdRequestConfiguration;
/// Responsible for loading native ads and notifying the delegate about load events.
SWIFT_CLASS("_TtC6RTBSDK17RTBNativeAdLoader")
@interface RTBNativeAdLoader : NSObject
/// The delegate that will receive native ad load event callbacks.
@property (nonatomic, weak) id <RTBNativeAdLoaderDelegate> _Nullable delegate;
/// Loads a new native ad using the specified configuration and user agent.
/// This method can be called from background threads.
/// \param configuration The native ad request configuration required to request a new ad. See <code>RTBNativeAdRequestConfiguration</code>.
///
/// \param userAgent The user agent string to be used in the ad request.
///
- (void)loadWithConfiguration:(RTBNativeAdRequestConfiguration * _Nonnull)configuration userAgent:(NSString * _Nonnull)userAgent;
/// Loads a new native ad using the specified configuration.
/// This method <em>must</em> be called on the main thread. If called from a background thread,
/// it will log an error and notify the delegate of the failure.
/// \param configuration The native ad request configuration required to request a new ad. See <code>RTBNativeAdRequestConfiguration</code>.
///
- (void)loadWithConfiguration:(RTBNativeAdRequestConfiguration * _Nonnull)configuration;
/// Returns the currently loaded native ad data, if available.
///
/// returns:
/// An optional <code>RTBNativeAd</code> instance representing the loaded native ad.
- (RTBNativeAd * _Nullable)getNativeAd SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Delegate protocol for receiving native ad load events.
SWIFT_PROTOCOL("_TtP6RTBSDK25RTBNativeAdLoaderDelegate_")
@protocol RTBNativeAdLoaderDelegate
/// Called when the native ad loader successfully loads a native ad.
/// \param nativeAdLoader The <code>RTBNativeAdLoader</code> instance that loaded the native ad.
///
/// \param bidInfo An instance of <code>RTBBidInfo</code> containing bid price and bidder information.
///
/// \param networkName The name of the bidder/network that provided the ad.
///
- (void)nativeAdDidReceiveAd:(RTBNativeAdLoader * _Nonnull)nativeAdLoader bidInfo:(RTBBidInfo * _Nonnull)bidInfo networkName:(NSString * _Nonnull)networkName;
/// Called when the native ad loader fails to load an ad.
/// \param nativeAdLoader The <code>RTBNativeAdLoader</code> instance that failed to load the ad.
///
/// \param errorMessage A descriptive error message explaining the failure.
///
/// \param networkName The name of the bidder/network that failed to load the ad.
///
- (void)nativeAdView:(RTBNativeAdLoader * _Nonnull)nativeAdLoader didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
@end

/// Configuration class for native ad requests.
/// Inherits from <code>RTBRequestConfiguration</code> and adds native ads specific options.
SWIFT_CLASS("_TtC6RTBSDK31RTBNativeAdRequestConfiguration")
@interface RTBNativeAdRequestConfiguration : RTBRequestConfiguration
/// A string representation of <code>RTBNativeAdRequestConfiguration</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
@end

/// Represents a reward that can be granted to the user,
/// Contains a name and a value describing the reward.
SWIFT_CLASS("_TtC6RTBSDK9RTBReward")
@interface RTBReward : NSObject
/// The name of the reward.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The value associated with the reward.
@property (nonatomic, readonly, copy) NSString * _Nonnull value;
/// Initializes a new reward instance.
/// \param name The reward’s name.
///
/// \param value The reward’s value.
///
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name value:(NSString * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
/// A string representation of <code>RTBReward</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 RTBRewardedVideoAdDelegate;
@class RTBRewardedVideoRequestConfiguration;
/// Represents a rewarded video ad that can be loaded and presented to the user.
SWIFT_CLASS("_TtC6RTBSDK18RTBRewardedVideoAd")
@interface RTBRewardedVideoAd : NSObject
/// The delegate object that receives rewarded video ad event callbacks.
/// Use this to track ad lifecycle events such as loading success, failure, reward granting, clicks, and ad presentation states.
@property (nonatomic, weak) id <RTBRewardedVideoAdDelegate> _Nullable delegate;
/// Initializes a new instance of <code>RTBRewardedVideoAd</code>.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Loads a rewarded video ad with the specified request configuration.
/// \param configuration Configuration settings required to request a rewarded video ad.
///
///
/// returns:
/// <code>true</code> if the loading request was initiated successfully; <code>false</code> if an ad is already loaded and ready to be shown.
- (BOOL)loadWithConfiguration:(RTBRewardedVideoRequestConfiguration * _Nonnull)configuration;
/// Presents the loaded rewarded video ad from the given view controller.
/// \param viewController The <code>UIViewController</code> instance that will present the rewarded video ad.
///
///
/// returns:
/// <code>true</code> if the ad was successfully shown; <code>false</code> otherwise.
- (BOOL)showWithViewController:(UIViewController * _Nonnull)viewController;
@end

@interface RTBRewardedVideoAd (SWIFT_EXTENSION(RTBSDK)) <RTBDSPRewardedVideoDelegate>
- (void)dspAdViewDidReceiveAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdView:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidRecordClick:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidPauseForAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidResumeAfterAd:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad networkName:(NSString * _Nonnull)networkName;
- (void)dspAdViewDidRecieveReward:(id <RTBDSPRewardedVideoProtocol> _Nonnull)ad reward:(RTBReward * _Nonnull)reward networkName:(NSString * _Nonnull)networkName;
@end

/// Delegate protocol for receiving rewarded video ad lifecycle events.
/// Implement this protocol to get notified about ad loading, presentation, user interactions, and rewards.
SWIFT_PROTOCOL("_TtP6RTBSDK26RTBRewardedVideoAdDelegate_")
@protocol RTBRewardedVideoAdDelegate
/// Called when the rewarded video ad has successfully loaded and is ready to be shown.
/// \param rewardedVideoAd The rewarded video ad instance that was loaded.
///
/// \param bidInfo Contains bid price, bidder name, and related metadata.
///
/// \param networkName The ad network name that provided the loaded ad.
///
- (void)rewardedVideoAdDidReceiveAd:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd bidInfo:(RTBBidInfo * _Nonnull)bidInfo networkName:(NSString * _Nonnull)networkName;
/// Called when the rewarded video ad failed to load.
/// \param rewardedVideoAd The rewarded video ad instance that failed to load.
///
/// \param errorMessage A descriptive message explaining the failure reason.
///
/// \param networkName The ad network name associated with the failed load attempt.
///
- (void)rewardedVideoAd:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd didFailToReceiveAd:(NSString * _Nonnull)errorMessage networkName:(NSString * _Nonnull)networkName;
/// Called when the user clicks on the rewarded video ad.
/// \param rewardedVideoAd The rewarded video ad instance that was clicked.
///
/// \param networkName The ad network name associated with the clicked ad.
///
- (void)rewardedVideoAdDidRecordClick:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd networkName:(NSString * _Nonnull)networkName;
/// Called when the rewarded video ad is displayed and the video playback starts.
/// \param rewardedVideoAd The rewarded video ad instance that started playing.
///
/// \param networkName The ad network name associated with the playing ad.
///
- (void)rewardedVideoAdDidPauseForAd:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd networkName:(NSString * _Nonnull)networkName;
/// Called when the rewarded video ad is dismissed and the app resumes its normal state.
/// \param rewardedVideoAd The rewarded video ad instance that was dismissed.
///
/// \param networkName The ad network name associated with the dismissed ad.
///
- (void)rewardedVideoAdDidResumeAfterAd:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd networkName:(NSString * _Nonnull)networkName;
/// Called when the user has earned a reward after watching the ad.
/// \param rewardedVideoAd The rewarded video ad instance that granted the reward.
///
/// \param networkName The ad network name associated with the rewarded ad.
///
- (void)rewardedVideoAdDidReceiveReward:(RTBRewardedVideoAd * _Nonnull)rewardedVideoAd networkName:(NSString * _Nonnull)networkName;
@end

/// Configuration class for rewarded video ad requests.
/// Inherits from <code>RTBRequestConfiguration</code> and adds rewarded video specific options.
SWIFT_CLASS("_TtC6RTBSDK36RTBRewardedVideoRequestConfiguration")
@interface RTBRewardedVideoRequestConfiguration : RTBRequestConfiguration
/// Indicates whether the rewarded video ad should start muted.
/// Defaults to <code>false</code>. Set to <code>true</code> if you want the ad to play without sound initially.
@property (nonatomic) BOOL muteOnStart;
/// A string representation of <code>RTBRewardedVideoRequestConfiguration</code>, useful for debugging and logging.
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)initWithPlacementId:(NSInteger)placementId iTunesAppId:(NSString * _Nonnull)iTunesAppId OBJC_DESIGNATED_INITIALIZER;
@end

/// A shared manager that controls global RTBSDK settings and behaviors.
SWIFT_CLASS("_TtC6RTBSDK13RTBSDKManager")
@interface RTBSDKManager : NSObject
/// The shared singleton instance of <code>RTBSDKManager</code>.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RTBSDKManager * _Nonnull shared;)
+ (RTBSDKManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The Objective-C compatible version of <code>isChildDirected-1gse</code>.
@property (nonatomic, strong) NSNumber * _Nullable isChildDirected;
/// The Objective-C compatible version of <code>isGDPRApplies-3wc4x</code>.
@property (nonatomic, strong) NSNumber * _Nullable isGDPRApplies;
/// A bool that indicates whether the test mode is enabled or not. Default value is <em>false</em>
@property (nonatomic) BOOL testModeEnabled;
/// A <code>RTBLogLevel</code> that represents the SDK internal log level. Default value is <code>RTBLogLevel.info</code>
@property (nonatomic) enum RTBLogLevel logLevel;
/// Indicates whether the SDK is allowed to access the user’s geographic location.
/// Default value is <code>false</code>.
@property (nonatomic) BOOL useGeoLocation;
@property (nonatomic, readonly, copy) NSString * _Nonnull sdkVersion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Represents user targeting information to refine ad requests.
SWIFT_CLASS("_TtC6RTBSDK16RTBUserTargeting")
@interface RTBUserTargeting : NSObject
/// Initializes a new instance of <code>RTBUserTargeting</code>.
/// \param userId The user identifier.
///
/// \param gender The user’s gender.
/// <ul>
///   <li>
///     <em>Important:</em> The default value is <code>RTBGender/unknown</code> and will be ignored in requests.
///   </li>
/// </ul>
///
/// \param yearOfBirth The user’s year of birth.
/// <ul>
///   <li>
///     <em>Important:</em> Must be a 4-digit number (e.g., 1985). Invalid values are ignored with a logged error.
///   </li>
/// </ul>
///
/// \param keywords An array of targeting keywords associated with the user.
///
/// \param utiqAdtechpass Optional string for additional ad tech targeting parameters.
///
- (nonnull instancetype)initWithUserId:(NSString * _Nullable)userId gender:(enum RTBGender)gender yearOfBirth:(NSNumber * _Nullable)yearOfBirth keywords:(NSArray<NSString *> * _Nullable)keywords utiqAdtechpass:(NSString * _Nullable)utiqAdtechpass OBJC_DESIGNATED_INITIALIZER;
/// A string representation of <code>RTBUserTargeting</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

#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
