#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.0 effective-5.10 (swiftlang-6.0.0.9.10 clang-1600.0.26.2)
#ifndef PREBIDMOBILE_SWIFT_H
#define PREBIDMOBILE_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 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

#import <PrebidMobile/PrebidMobile.h>

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#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="PrebidMobile",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

SWIFT_CLASS_NAMED("AutoRefreshCountConfig")
@interface PBMAutoRefreshCountConfig : NSObject
/// The number of times the BannerView has been refreshed.
@property (nonatomic) NSInteger numRefreshes;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class AdFormat;
@class BannerParameters;
@class VideoParameters;
@class NSNumber;
enum PBMInterstitialLayout : NSInteger;
@class PBMVideoControlsConfiguration;
@class PBMRewardedConfig;
@class NSString;

/// Contains all the data needed to load an ad.
SWIFT_CLASS_NAMED("AdConfiguration")
@interface PBMAdConfiguration : PBMAutoRefreshCountConfig
@property (nonatomic) BOOL isOriginalAPI;
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Describes an OpenRTB banner object
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// Describes an OpenRTB video object
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// Whether or not this ad configuration is intended to represent an intersitial ad.
/// Setting this to true will disable auto refresh.
@property (nonatomic) BOOL isInterstitialAd;
/// Whether or not this ad configuration is intended to represent an ad as an intersitial one (regardless of original designation).
/// Overrides <code>isInterstitialAd</code>
/// Setting this to true will disable auto refresh.
@property (nonatomic, strong) NSNumber * _Nullable forceInterstitialPresentation;
/// Whether or not this ad configuration is intended to represent an intersitial ad.
/// Returns the effective result by combining <code>isInterstitialAd</code> and <code>forceInterstitialPresentation</code>
@property (nonatomic, readonly) BOOL presentAsInterstitial;
/// Interstitial layout
@property (nonatomic) enum PBMInterstitialLayout interstitialLayout;
/// Size for the ad.
@property (nonatomic) CGSize size;
/// Sets an ad unit as an rewarded
@property (nonatomic) BOOL isRewarded;
/// Indicates whether the ad is built-in video e.g. 300x250.
@property (nonatomic) BOOL isBuiltInVideo;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// This property indicated winning bid ad format (ext.prebid.type)
@property (nonatomic, strong) AdFormat * _Nullable winningBidAdFormat;
/// This property represents video controls custom configuration.
@property (nonatomic, strong) PBMVideoControlsConfiguration * _Nonnull videoControlsConfig;
/// Server-side configuration for rewarded ads (bid.ext.rwdd)
@property (nonatomic, strong) PBMRewardedConfig * _Nullable rewardedConfig;
@property (nonatomic) NSTimeInterval pollFrequency;
@property (nonatomic) NSInteger viewableArea;
@property (nonatomic) NSInteger viewableDuration;
@property (nonatomic, copy) void (^ _Nullable clickHandlerOverride)(SWIFT_NOESCAPE void (^ _Nonnull)(void));
@property (nonatomic, copy) NSString * _Nullable impORTBConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Provides info about received ad.
SWIFT_CLASS_NAMED("AdDetails")
@interface PBMAdDetails : NSObject
/// Raw data returned for the ad request.
@property (nonatomic, readonly, copy) NSString * _Nonnull rawResponse;
/// Unique identifier of the ad, that can be used for managing and reporting ad quality issues.
@property (nonatomic, readonly, copy) NSString * _Nonnull transactionId;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// <code>AdFormat</code> is a class that represents different types of ad formats using an OptionSet.
SWIFT_CLASS("_TtC12PrebidMobile8AdFormat")
@interface AdFormat : NSObject
/// The raw integer value representing the ad format.
@property (nonatomic, readonly) NSInteger rawValue;
/// The string representation of the ad format.
@property (nonatomic, readonly, copy) NSString * _Nullable stringEquivalent;
/// Initializes an <code>AdFormat</code> instance with a specified raw value and its string equivalent.
/// \param rawValue The raw value representing the ad format.
///
/// \param stringEquivalent A string equivalent of the ad format.
///
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue stringEquivalent:(NSString * _Nonnull)stringEquivalent;
/// Initializes an <code>AdFormat</code> instance with a specified raw value.
/// \param rawValue The raw value representing the ad format.
///
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue OBJC_DESIGNATED_INITIALIZER;
/// Represents a banner ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull banner;)
+ (AdFormat * _Nonnull)banner SWIFT_WARN_UNUSED_RESULT;
/// Represents a video ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull video;)
+ (AdFormat * _Nonnull)video SWIFT_WARN_UNUSED_RESULT;
/// Represents a native ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull native;)
+ (AdFormat * _Nonnull)native SWIFT_WARN_UNUSED_RESULT;
/// An array containing all cases of ad formats.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSArray<AdFormat *> * _Nonnull allCases;)
+ (NSArray<AdFormat *> * _Nonnull)allCases SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PBMAdLoadFlowController;

SWIFT_PROTOCOL("_TtP12PrebidMobile28AdLoadFlowControllerDelegate_")
@protocol AdLoadFlowControllerDelegate <NSObject>
- (void)adLoadFlowController:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController failedWithError:(NSError * _Nullable)error;
- (void)adLoadFlowControllerWillSendBidRequest:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (void)adLoadFlowControllerWillRequestPrimaryAd:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (BOOL)adLoadFlowControllerShouldContinue:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController SWIFT_WARN_UNUSED_RESULT;
@end

enum PBMTrackingEvent : NSInteger;
@class PBMVideoVerificationParameters;

/// This protocol defines methods for tracking ad’s lifesycle.
/// This protocol declares methods that needed for ad tracking in PrebidMobile. For now, we have two implementations:
/// <ul>
///   <li>
///     AdModelEventTracker
///   </li>
///   <li>
///     PBMOpenMeasurementEventTracker
///   </li>
/// </ul>
SWIFT_PROTOCOL_NAMED("EventTrackerProtocol")
@protocol PBMEventTrackerProtocol
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
@end

@class PBMCreativeModel;
@protocol PrebidServerConnectionProtocol;

SWIFT_CLASS_NAMED("AdModelEventTracker")
@interface PBMAdModelEventTracker : NSObject <PBMEventTrackerProtocol>
- (nonnull instancetype)initWithCreativeModel:(PBMCreativeModel * _Nonnull)creativeModel serverConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Ad position on screen. Refer to List 5.4:
/// The following table specifies the position of the ad as a relative measure of visibility or prominence. This
/// OpenRTB table has values derived from the Inventory Quality Guidelines (IQG). Practitioners should
/// keep in sync with updates to the IQG values as published on IAB.com. Values “4” - “7” apply to apps per
/// the mobile addendum to IQG version 2.1.
/// Value Description
/// 0 Unknown
/// 1 Above the Fold
/// 2 DEPRECATED - May or may not be initially visible depending on screen size/resolution.
/// 3 Below the Fold
/// 4 Header
/// 5 Footer
/// 6 Sidebar
/// 7 Full Screen
typedef SWIFT_ENUM_NAMED(NSInteger, PBMAdPosition, "AdPosition", open) {
/// 0 Unknown
  PBMAdPositionUndefined = 0,
/// 1 Above the Fold
  PBMAdPositionAboveTheFold = 1,
/// 2 Locked (i.e. fixed position)
  PBMAdPositionLocked = 2,
/// 3 Below the Fold
  PBMAdPositionBelowTheFold = 3,
/// 4 Header
  PBMAdPositionHeader = 4,
/// 5 Footer
  PBMAdPositionFooter = 5,
/// 6 Sidebar
  PBMAdPositionSidebar = 6,
/// 7 Full Screen
  PBMAdPositionFullScreen = 7,
};

@class PBMBidInfo;
enum ResultCode : NSInteger;

/// Base class for ad units built for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile6AdUnit")
@interface AdUnit : NSObject
/// ORTB: imp[].ext.data.pbadslot
@property (nonatomic, copy) NSString * _Nullable pbAdSlot;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Makes bid request  and provides the result as a <code>BidInfo</code> object.
/// \param completionBidInfo A closure called with a <code>BidInfo</code> object representing the fetched demand.
///
- (void)fetchDemandWithCompletionBidInfo:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completionBidInfo;
/// Makes bid request for a specific ad object and provides the result code. Setups targeting keywords into the adObject.
/// \param adObject The ad object for which demand is being fetched.
///
/// \param completion A closure called with the result code indicating the outcome of the demand fetch.
///
- (void)fetchDemandWithAdObject:(id _Nonnull)adObject completion:(void (^ _Nonnull)(enum ResultCode))completion;
/// Sets the GPID for the ad unit.
/// \param gpid The GPID string to set. Can be <code>nil</code> to clear the GPID.
///
- (void)setGPID:(NSString * _Nullable)gpid;
/// Retrieves the current GPID for the ad unit.
///
/// returns:
/// The GPID string, or <code>nil</code> if no GPID is set.
- (NSString * _Nullable)getGPID SWIFT_WARN_UNUSED_RESULT;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// This method allows to set the auto refresh period for the demand
/// \param time refresh time interval
///
- (void)setAutoRefreshMillisWithTime:(double)time;
/// This method stops the auto refresh of demand
- (void)stopAutoRefresh;
/// This method resumes the auto refresh of demand
- (void)resumeAutoRefresh;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSValue;
@class PBMNativeAdConfiguration;

SWIFT_CLASS("_TtC12PrebidMobile12AdUnitConfig")
@interface AdUnitConfig : NSObject <NSCopying>
@property (nonatomic, copy) NSString * _Nonnull configId;
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
@property (nonatomic) CGSize adSize;
@property (nonatomic, strong) NSValue * _Nullable minSizePerc;
@property (nonatomic) enum PBMAdPosition adPosition;
@property (nonatomic, strong) PBMNativeAdConfiguration * _Nullable nativeAdConfiguration;
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
@property (nonatomic) NSTimeInterval refreshInterval;
@property (nonatomic, copy) NSString * _Nullable gpid;
@property (nonatomic, copy) NSString * _Nullable impORTBConfig;
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId;
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
- (void)setPbAdSlot:(NSString * _Nullable)newElement;
- (NSString * _Nullable)getPbAdSlot 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

@class UIButton;
enum PBMPosition : NSInteger;
@class UIImage;
@class UIView;

SWIFT_CLASS_NAMED("AdViewButtonDecorator")
@interface PBMAdViewButtonDecorator : NSObject
@property (nonatomic, strong) UIButton * _Nonnull button;
@property (nonatomic) enum PBMPosition buttonPosition;
@property (nonatomic) CGRect customButtonPosition;
@property (nonatomic) double buttonArea;
@property (nonatomic) BOOL isMRAID;
@property (nonatomic, copy) void (^ _Nullable buttonTouchUpInsideBlock)(void);
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)setImage:(UIImage * _Nonnull)image;
- (void)addButtonTo:(UIView * _Nonnull)view displayView:(UIView * _Nonnull)displayView;
- (void)removeButtonFromSuperview;
- (void)bringButtonToFront;
- (void)sendSubviewToBack;
- (void)updateButtonConstraints;
- (CGFloat)getButtonConstraintConstant SWIFT_WARN_UNUSED_RESULT;
- (CGSize)getButtonSize SWIFT_WARN_UNUSED_RESULT;
- (void)buttonTappedAction;
@end

@class PBMAbstractCreative;

SWIFT_PROTOCOL_NAMED("CreativeViewDelegate")
@protocol PBMCreativeViewDelegate <NSObject>
- (void)creativeDidComplete:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeDidDisplay:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeWasClicked:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeViewWasClicked:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeClickthroughDidClose:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeInterstitialDidClose:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeInterstitialDidLeaveApp:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeFullScreenDidFinish:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeDidSendRewardedEvent:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeReadyToReimplant:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeMraidDidCollapse:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeMraidDidExpand:(PBMAbstractCreative * _Nonnull)creative;
@optional
- (void)videoCreativeDidComplete:(PBMAbstractCreative * _Nonnull)creative;
- (void)videoWasMuted:(PBMAbstractCreative * _Nonnull)creative;
- (void)videoWasUnmuted:(PBMAbstractCreative * _Nonnull)creative;
@end

@class PBMModalManager;
@protocol PBMAdViewManagerDelegate;
@protocol PBMModalManagerDelegate;
@protocol PBMTransaction;

SWIFT_PROTOCOL_NAMED("AdViewManager")
@protocol PBMAdViewManager <PBMCreativeViewDelegate>
@property (nonatomic, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, strong) PBMModalManager * _Nonnull modalManager;
@property (nonatomic, weak) id <PBMAdViewManagerDelegate> _Nullable adViewManagerDelegate;
@property (nonatomic) BOOL autoDisplayOnLoad;
@property (nonatomic, readonly) BOOL isCreativeOpened;
@property (nonatomic, readonly) BOOL isMuted;
- (nonnull instancetype)initWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection modalManagerDelegate:(id <PBMModalManagerDelegate> _Nullable)modalManagerDelegate;
- (NSString * _Nullable)revenueForNextCreative SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isAbleToShowCurrentCreative SWIFT_WARN_UNUSED_RESULT;
- (void)show;
- (void)pause;
- (void)resume;
- (void)mute;
- (void)unmute;
- (void)handleExternalTransaction:(id <PBMTransaction> _Nonnull)transaction;
@end


/// <code>AdViewUtils</code> provides utility methods for working with ad views, including finding creative sizes.
SWIFT_CLASS("_TtC12PrebidMobile11AdViewUtils")
@interface AdViewUtils : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Finds the creative size for a given ad view by searching for the <code>hb_size</code> attribute in the ad’s HTML content.
/// \param adView The ad view from which to extract the creative size.
///
/// \param success Closure called with the <code>CGSize</code> of the ad creative if found successfully.
///
/// \param failure Closure called with an <code>Error</code> if the size could not be determined.
///
+ (void)findPrebidCreativeSize:(UIView * _Nonnull)adView success:(void (^ _Nonnull)(CGSize))success failure:(void (^ _Nonnull)(NSError * _Nonnull))failure;
@end


SWIFT_CLASS_NAMED("ArbitraryORTBService")
@interface PBMArbitraryORTBService : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (NSDictionary<NSString *, id> * _Nonnull)mergeWithSdkORTB:(NSDictionary<NSString *, id> * _Nonnull)sdkORTB impORTB:(NSString * _Nullable)impORTB globalORTB:(NSString * _Nullable)globalORTB SWIFT_WARN_UNUSED_RESULT;
@end



/// Timer that stops in background and resumes in foreground. Fires callback on timer completion.
/// Can execute only one task at a time.
SWIFT_CLASS_NAMED("BackgroundAwareTimer")
@interface PBMBackgroundAwareTimer : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)startTimerWith:(NSTimeInterval)interval completion:(void (^ _Nonnull)(void))completion;
- (void)invalidateTimer;
@end

@protocol BannerEventHandler;
@class PBMBannerAdLoader;

SWIFT_PROTOCOL("_TtP12PrebidMobile22BannerAdLoaderDelegate_")
@protocol BannerAdLoaderDelegate <NSObject>
@property (nonatomic, readonly, strong) id <BannerEventHandler> _Nullable eventHandler;
- (void)bannerAdLoader:(PBMBannerAdLoader * _Nonnull)bannerAdLoader loadedAdView:(UIView * _Nonnull)adView adSize:(CGSize)adSize;
@end


SWIFT_PROTOCOL_NAMED("VideoBasedAdUnitProtocol")
@protocol PBMVideoBasedAdUnitProtocol
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
@end


SWIFT_PROTOCOL_NAMED("BannerBasedAdUnitProtocol")
@protocol PBMBannerBasedAdUnitProtocol
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
@end


/// A class representing a banner ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile12BannerAdUnit")
@interface BannerAdUnit : AdUnit <PBMBannerBasedAdUnitProtocol, PBMVideoBasedAdUnitProtocol>
/// The banner ad parameters used to configure the ad unit.
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// The video ad parameters used to configure the ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// The set of ad formats for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Initializes a new <code>BannerAdUnit</code> with the specified configuration ID and size.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param size The size of the banner ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
/// Adds additional sizes to the banner ad unit’s configuration.
/// \param sizes An array of <code>CGSize</code> objects representing additional sizes.
///
- (void)addAdditionalSizeWithSizes:(NSArray<NSValue *> * _Nonnull)sizes;
/// Sets the view in which Prebid will start tracking an impression.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView). This object will be used later for tracking <code>burl</code>.
///
- (void)activatePrebidImpressionTrackerWithAdView:(UIView * _Nonnull)adView;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow for the provided ad view.
/// Ensure this method is called within the Google Mobile Ads ad received method
/// (e.g., in the GADBannerViewDelegate’s <code>bannerViewDidReceiveAd</code> or similar callbacks).
/// This feature is not available for video ads.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView).
///
- (void)activatePrebidSKAdNetworkStoreKitAdsFlowWithAdView:(UIView * _Nonnull)adView;
@end


@class BidResponse;

SWIFT_PROTOCOL_NAMED("PrimaryAdRequesterProtocol")
@protocol PBMPrimaryAdRequesterProtocol <NSObject>
/// @abstract PBM SDK calls this method when it has valid bid/s to pass to the ad server.
/// @discussion Note that, if the PBM SDK does not have valid bids, <code>requestAdWithBidResponse:</code> will be called with a <code>nil</code> bid value.
/// @param bidResponse bid response object having useful information that can be passed to the ad server SDK
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
@end

@protocol BannerEventLoadingDelegate;
@protocol BannerEventInteractionDelegate;

/// A protocol for handling events related to banner ads in the PBM SDK.
/// This protocol defines methods and properties for managing events associated with banner ads, including loading events, user interactions, and ad sizes. Implementing this protocol allows for custom handling of these events within the PBM SDK.
SWIFT_PROTOCOL("_TtP12PrebidMobile18BannerEventHandler_")
@protocol BannerEventHandler <PBMPrimaryAdRequesterProtocol>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <BannerEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <BannerEventInteractionDelegate> _Nullable interactionDelegate;
/// The array of the CGRect entries for each valid ad sizes.
/// The first size is treated as a frame for related ad unit.
@property (nonatomic, readonly, copy) NSArray<NSValue *> * _Nonnull adSizes;
- (void)trackImpression;
@end


SWIFT_CLASS("_TtC12PrebidMobile28BannerEventHandlerStandalone")
@interface BannerEventHandlerStandalone : NSObject <BannerEventHandler>
@property (nonatomic, weak) id <BannerEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <BannerEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, copy) NSArray<NSValue *> * _Nonnull adSizes;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (void)trackImpression;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class UIViewController;

SWIFT_PROTOCOL("_TtP12PrebidMobile30BannerEventInteractionDelegate_")
@protocol BannerEventInteractionDelegate <NSObject>
- (void)willPresentModal;
- (void)didDismissModal;
- (void)willLeaveApp;
@property (nonatomic, readonly, strong) UIViewController * _Nullable viewControllerForPresentingModal;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile26BannerEventLoadingDelegate_")
@protocol BannerEventLoadingDelegate <NSObject>
- (void)prebidDidWin;
- (void)adServerDidWin:(UIView * _Nonnull)view adSize:(CGSize)adSize;
- (void)failedWithError:(NSError * _Nullable)error;
@end

@class PBApi;

/// Describes an <a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf">OpenRTB</a> banner object
SWIFT_CLASS("_TtC12PrebidMobile16BannerParameters")
@interface BannerParameters : NSObject
/// List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
@property (nonatomic, copy) NSArray<PBApi *> * _Nullable api;
/// Ad sizes of the ad
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable adSizes;
/// Helper for <code>api</code> values
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawAPI;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A protocol that defines methods for handling user interactions and lifecycle events related to ad display views.
SWIFT_PROTOCOL("_TtP12PrebidMobile30DisplayViewInteractionDelegate_")
@protocol DisplayViewInteractionDelegate <NSObject>
/// Tracks an impression for the specified display view.
/// \param forDisplayView The <code>UIView</code> instance associated with the ad impression.
///
- (void)trackImpressionForDisplayView:(UIView * _Nonnull)forDisplayView;
/// Notifies that the user has left the app after interacting with the ad.
/// \param displayView The <code>UIView</code> instance associated with the ad interaction.
///
- (void)didLeaveAppFrom:(UIView * _Nonnull)displayView;
/// Notifies that a modal view is about to be presented from the specified display view.
/// \param displayView The <code>UIView</code> instance associated with the modal presentation.
///
- (void)willPresentModalFrom:(UIView * _Nonnull)displayView;
/// Notifies the delegate that a modal view has been dismissed.
/// \param displayView The <code>UIView</code> instance associated with the dismissed modal.
///
- (void)didDismissModalFrom:(UIView * _Nonnull)displayView;
/// Requests the <code>UIViewController</code> to be used for presenting modals from the specified display view.
/// \param fromDisplayView The <code>UIView</code> instance from which the modal is to be presented.
///
- (UIViewController * _Nullable)viewControllerForModalPresentationFromDisplayView:(UIView * _Nonnull)fromDisplayView SWIFT_WARN_UNUSED_RESULT;
@end

@protocol BannerViewDelegate;
@class NSCoder;
@protocol PluginEventDelegate;

/// The view that will display the particular banner ad. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile10BannerView")
@interface BannerView : UIView <AdLoadFlowControllerDelegate, BannerAdLoaderDelegate, BannerEventInteractionDelegate, DisplayViewInteractionDelegate>
/// The ad unit configuration.
@property (nonatomic, readonly, strong) AdUnitConfig * _Nonnull adUnitConfig;
/// The event handler for banner view events.
@property (nonatomic, readonly, strong) id <BannerEventHandler> _Nullable eventHandler;
/// Banner-specific parameters.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Video-specific parameters.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The last bid response received.
@property (nonatomic, readonly, strong) BidResponse * _Nullable lastBidResponse;
/// ID of Stored Impression on the Prebid server
@property (nonatomic, readonly, copy) NSString * _Nonnull configID;
/// The interval for refreshing the ad.
@property (nonatomic) NSTimeInterval refreshInterval;
/// Additional sizes for the ad.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// The ad format (e.g., banner, video).
@property (nonatomic, strong) AdFormat * _Nonnull adFormat;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// ORTB configuration string.
@property (nonatomic, weak) id <BannerViewDelegate> _Nullable delegate;
/// Initializes a new <code>BannerView</code>.
/// \param frame The frame rectangle for the view.
///
/// \param configID The configuration ID for the ad unit.
///
/// \param adSize The size of the ad.
///
/// \param eventHandler The event handler for the banner view.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame configID:(NSString * _Nonnull)configID adSize:(CGSize)adSize eventHandler:(id <BannerEventHandler> _Nonnull)eventHandler OBJC_DESIGNATED_INITIALIZER;
/// Convenience initializer for creating a <code>BannerView</code> with a configuration ID and event handler.
/// \param configID The configuration ID for the ad unit.
///
/// \param eventHandler The event handler for the banner view.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id <BannerEventHandler> _Nonnull)eventHandler;
/// Convenience initializer for creating a <code>BannerView</code> with a frame, configuration ID, and ad size.
/// \param frame The frame rectangle for the view.
///
/// \param configID The configuration ID for the ad unit.
///
/// \param adSize The size of the ad.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame configID:(NSString * _Nonnull)configID adSize:(CGSize)adSize;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
/// Loads the ad for the banner view.
- (void)loadAd;
/// Sets the stored auction response.
/// \param storedAuction The stored auction response string.
///
- (void)setStoredAuctionResponseWithStoredAuction:(NSString * _Nonnull)storedAuction;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Stops the auto-refresh of the ad.
- (void)stopRefresh;
/// Subscribe to plugin renderer events
- (void)setPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate;
- (void)trackImpressionForDisplayView:(UIView * _Nonnull)forDisplayView;
- (UIViewController * _Nullable)viewControllerForModalPresentationFromDisplayView:(UIView * _Nonnull)fromDisplayView SWIFT_WARN_UNUSED_RESULT;
- (void)didLeaveAppFrom:(UIView * _Nonnull)displayView;
- (void)willPresentModalFrom:(UIView * _Nonnull)displayView;
- (void)didDismissModalFrom:(UIView * _Nonnull)displayView;
- (void)bannerAdLoader:(PBMBannerAdLoader * _Nonnull)bannerAdLoader loadedAdView:(UIView * _Nonnull)adView adSize:(CGSize)adSize;
- (void)adLoadFlowController:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController failedWithError:(NSError * _Nullable)error;
- (void)adLoadFlowControllerWillSendBidRequest:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (void)adLoadFlowControllerWillRequestPrimaryAd:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (BOOL)adLoadFlowControllerShouldContinue:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController SWIFT_WARN_UNUSED_RESULT;
- (void)willPresentModal;
- (void)didDismissModal;
- (void)willLeaveApp;
@property (nonatomic, readonly, strong) UIViewController * _Nullable viewControllerForPresentingModal;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end


/// A protocol for handling events related to banner ads in the PBM SDK.
/// This protocol defines methods and properties for managing events associated with banner ads, including loading events, user interactions, and ad sizes. Implementing this protocol allows for custom handling of these events within the PBM SDK.
SWIFT_PROTOCOL("_TtP12PrebidMobile18BannerViewDelegate_")
@protocol BannerViewDelegate <NSObject>
/// Asks the delegate for a view controller instance to use for presenting modal views
/// as a result of user interaction on an ad. Usual implementation may simply return self,
/// if it is view controller class.
- (UIViewController * _Nullable)bannerViewPresentationController SWIFT_WARN_UNUSED_RESULT;
@optional
/// Notifies the delegate that an ad has been successfully loaded and rendered.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerView:(BannerView * _Nonnull)bannerView didReceiveAdWithAdSize:(CGSize)adSize;
/// Notifies the delegate of an error encountered while loading or rendering an ad.
/// \param bannerView The BannerView instance sending the message.
///
/// \param error The error encountered while attempting to receive or render the
///
- (void)bannerView:(BannerView * _Nonnull)bannerView didFailToReceiveAdWith:(NSError * _Nonnull)error;
/// Notifies the delegate whenever current app goes in the background due to user click.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerViewWillLeaveApplication:(BannerView * _Nonnull)bannerView;
/// Notifies delegate that the banner view will launch a modal
/// on top of the current view controller, as a result of user interaction.
/// \param bannerView The BannerView instance sending the message. 
///
- (void)bannerViewWillPresentModal:(BannerView * _Nonnull)bannerView;
/// Notifies delegate that the banner view has dismissed the modal on top of
/// the current view controller.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerViewDidDismissModal:(BannerView * _Nonnull)bannerView;
@end

@class PBMORTBBidExtSkadn;
@class PBMORTBAdConfiguration;
@class PBMORTBRewardedConfiguration;
@class PBMORTBExtPrebidEvents;
@class PBMORTBBidExt;

SWIFT_CLASS("_TtC12PrebidMobile3Bid")
@interface Bid : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull KEY_RENDERER_NAME;)
+ (NSString * _Nonnull)KEY_RENDERER_NAME SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull KEY_RENDERER_VERSION;)
+ (NSString * _Nonnull)KEY_RENDERER_VERSION SWIFT_WARN_UNUSED_RESULT;
/// Bid price expressed as CPM although the actual transaction is for a unit impression only.
/// Note that while the type indicates float, integer math is highly recommended
/// when handling currencies (e.g., BigDecimal in Java).
@property (nonatomic, readonly) float price;
/// Billing notice URL called by the exchange when a winning bid
/// becomes billable based on exchange-specific business policy
/// (e.g., typically delivered, viewed, etc.).
@property (nonatomic, readonly, copy) NSString * _Nullable burl;
/// Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered,
/// viewed, or billable ad); optional means of serving ad markup.
/// Substitution macros (Section 4.4) may be included in both the URL and optionally returned markup.
@property (nonatomic, readonly, copy) NSString * _Nullable nurl;
/// Optional means of conveying ad markup in case the bid wins; supersedes the win notice
/// if markup is included in both.
/// Substitution macros (Section 4.4) may be included.
@property (nonatomic, readonly, copy) NSString * _Nullable adm;
/// Ad size
@property (nonatomic, readonly) CGSize size;
/// Targeting information that needs to be passed to the ad server SDK.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingInfo;
/// Targeting information that needs to be passed to the ad server SDK.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable meta;
/// SKAdNetwork parameters about an App Store product.
/// Used in the StoreKit
@property (nonatomic, readonly, strong) PBMORTBBidExtSkadn * _Nullable skadn;
/// Prebid ad format
@property (nonatomic, readonly, strong) AdFormat * _Nullable adFormat;
/// Prebid video ad configuration
@property (nonatomic, readonly, strong) PBMORTBAdConfiguration * _Nullable videoAdConfiguration;
/// Preffered plugin renderer name
@property (nonatomic, readonly, copy) NSString * _Nullable pluginRendererName;
/// Preffered plugin renderer version
@property (nonatomic, readonly, copy) NSString * _Nullable pluginRendererVersion;
@property (nonatomic, readonly, strong) PBMORTBRewardedConfiguration * _Nullable rewardedConfig;
/// Returns YES if this bid is intented for display.
@property (nonatomic, readonly) BOOL isWinning;
@property (nonatomic, readonly, strong) PBMORTBExtPrebidEvents * _Nullable events;
@property (nonatomic, readonly, strong) PBMORTBBid<PBMORTBBidExt *> * _Nonnull bid;
- (nonnull instancetype)initWithBid:(PBMORTBBid<PBMORTBBidExt *> * _Nonnull)bid OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@interface Bid (SWIFT_EXTENSION(PrebidMobile))
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull impressionTrackingURLs;
@end


/// Contains information about bid.
SWIFT_CLASS_NAMED("BidInfo")
@interface PBMBidInfo : NSObject
/// Key to get Prebid win event from <code>events</code>
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull EVENT_WIN;)
+ (NSString * _Nonnull)EVENT_WIN SWIFT_WARN_UNUSED_RESULT;
/// Key to get Prebid imp event from <code>events</code>
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull EVENT_IMP;)
+ (NSString * _Nonnull)EVENT_IMP SWIFT_WARN_UNUSED_RESULT;
/// The result code of the bid request
@property (nonatomic, readonly) enum ResultCode resultCode;
/// Targeting keywords associated with the bid
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingKeywords;
/// The cache ID for native ads
@property (nonatomic, readonly, copy) NSString * _Nullable nativeAdCacheId;
/// Events related to the bid
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nonnull events;
/// Retrieves the expiration time of the bid as an <code>NSNumber</code>.
- (NSNumber * _Nullable)getExp SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL_NAMED("BidRequesterProtocol")
@protocol PBMBidRequesterProtocol
- (void)requestBidsWithCompletion:(void (^ _Nonnull)(BidResponse * _Nullable, NSError * _Nullable))completion;
@end

@class Prebid;
@class Targeting;

SWIFT_PROTOCOL_NAMED("BidRequester")
@protocol PBMBidRequester <PBMBidRequesterProtocol>
- (nonnull instancetype)initWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection sdkConfiguration:(Prebid * _Nonnull)sdkConfiguration targeting:(Targeting * _Nonnull)targeting adUnitConfiguration:(AdUnitConfig * _Nonnull)adUnitConfiguration;
@end


@class PBMORTBBidResponseExt;

SWIFT_CLASS("_TtC12PrebidMobile11BidResponse")
@interface BidResponse : NSObject
@property (nonatomic, copy) NSString * _Nullable adUnitId;
@property (nonatomic, readonly, copy) NSArray<Bid *> * _Nullable allBids;
@property (nonatomic, readonly, strong) Bid * _Nullable winningBid;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingInfo;
@property (nonatomic, readonly, strong) NSNumber * _Nullable tmaxrequest;
@property (nonatomic, readonly, strong) PBMORTBBidResponseExt * _Nullable ext;
- (nonnull instancetype)initWithAdUnitId:(NSString * _Nullable)adUnitId targetingInfo:(NSDictionary<NSString *, NSString *> * _Nullable)targetingInfo;
- (nonnull instancetype)initWithJsonDictionary:(JsonDictionary * _Nonnull)jsonDictionary;
- (void)setTargetingInfoWith:(NSDictionary<NSString *, NSString *> * _Nonnull)newValue;
- (void)addTargetingInfoValueWithKey:(NSString * _Nonnull)key value:(NSString * _Nonnull)value;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end




SWIFT_CLASS_NAMED("CacheManager")
@interface PBMCacheManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) NSTimeInterval cacheManagerExpireInterval;)
+ (NSTimeInterval)cacheManagerExpireInterval SWIFT_WARN_UNUSED_RESULT;
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMCacheManager * _Nonnull shared;)
+ (PBMCacheManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The initializer that needs to be created only once
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (NSString * _Nullable)saveWithContent:(NSString * _Nonnull)content expireInterval:(NSTimeInterval)expireInterval SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isValidWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, PBMClickbrowserType, "ClickbrowserType", open) {
  PBMClickbrowserTypeEmbedded = 0,
  PBMClickbrowserTypeNative = 1,
};


SWIFT_CLASS("_TtC12PrebidMobile18SingleContainerInt")
@interface SingleContainerInt : NSObject
@property (nonatomic, readonly) NSInteger value;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) NSUInteger hash;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Native context subtype asset.
SWIFT_CLASS("_TtC12PrebidMobile14ContextSubType")
@interface ContextSubType : SingleContainerInt
/// Represents a general context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull General;)
+ (ContextSubType * _Nonnull)General SWIFT_WARN_UNUSED_RESULT;
/// Represents an article context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Article;)
+ (ContextSubType * _Nonnull)Article SWIFT_WARN_UNUSED_RESULT;
/// Represents a video context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Video;)
+ (ContextSubType * _Nonnull)Video SWIFT_WARN_UNUSED_RESULT;
/// Represents an audio context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Audio;)
+ (ContextSubType * _Nonnull)Audio SWIFT_WARN_UNUSED_RESULT;
/// Represents an image context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Image;)
+ (ContextSubType * _Nonnull)Image SWIFT_WARN_UNUSED_RESULT;
/// Represents a user-generated content context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull UserGenerated;)
+ (ContextSubType * _Nonnull)UserGenerated SWIFT_WARN_UNUSED_RESULT;
/// Represents a social media context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Social;)
+ (ContextSubType * _Nonnull)Social SWIFT_WARN_UNUSED_RESULT;
/// Represents an email context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull email;)
+ (ContextSubType * _Nonnull)email SWIFT_WARN_UNUSED_RESULT;
/// Represents a chat or instant messaging context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull chatIM;)
+ (ContextSubType * _Nonnull)chatIM SWIFT_WARN_UNUSED_RESULT;
/// Represents a product selling context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull SellingProduct;)
+ (ContextSubType * _Nonnull)SellingProduct SWIFT_WARN_UNUSED_RESULT;
/// Represents an App Store context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull AppStore;)
+ (ContextSubType * _Nonnull)AppStore SWIFT_WARN_UNUSED_RESULT;
/// Represents a review site context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull ReviewSite;)
+ (ContextSubType * _Nonnull)ReviewSite SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Custom;)
+ (ContextSubType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Native context type asset.
SWIFT_CLASS("_TtC12PrebidMobile11ContextType")
@interface ContextType : SingleContainerInt
/// Represents a content context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Content;)
+ (ContextType * _Nonnull)Content SWIFT_WARN_UNUSED_RESULT;
/// Represents a social media context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Social;)
+ (ContextType * _Nonnull)Social SWIFT_WARN_UNUSED_RESULT;
/// Represents a product context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Product;)
+ (ContextType * _Nonnull)Product SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Custom;)
+ (ContextType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("CreativeModel")
@interface PBMCreativeModel : NSObject
@property (nonatomic, strong) PBMAdConfiguration * _Nullable adConfiguration;
@property (nonatomic, strong) PBMAdModelEventTracker * _Nullable eventTracker;
@property (nonatomic, strong) NSNumber * _Nullable displayDurationInSeconds;
@property (nonatomic, strong) NSNumber * _Nullable skipOffset;
@property (nonatomic) NSInteger width;
@property (nonatomic) NSInteger height;
@property (nonatomic, copy) NSString * _Nullable html;
@property (nonatomic, copy) NSString * _Nullable targetURL;
@property (nonatomic, copy) NSString * _Nullable videoFileURL;
@property (nonatomic, copy) NSString * _Nullable revenue;
@property (nonatomic, strong) PBMVideoVerificationParameters * _Nullable verificationParameters;
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull trackingURLs;
@property (nonatomic, copy) NSString * _Nullable adTrackingTemplateURL;
@property (nonatomic, strong) PBMAdDetails * _Nullable adDetails;
@property (nonatomic, copy) NSString * _Nullable clickThroughURL;
@property (nonatomic) BOOL isCompanionAd;
@property (nonatomic) BOOL hasCompanionAd;
@property (nonatomic) BOOL userHasEarnedReward;
@property (nonatomic) BOOL userPostRewardEventSent;
@property (nonatomic, strong) NSNumber * _Nullable rewardTime;
@property (nonatomic, strong) NSNumber * _Nullable postRewardTime;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithAdConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration OBJC_DESIGNATED_INITIALIZER;
@end


/// Enum representing different types of native data assets.
typedef SWIFT_ENUM(NSInteger, DataAsset, open) {
  DataAssetSponsored = 1,
  DataAssetDescription = 2,
  DataAssetRating = 3,
  DataAssetLikes = 4,
  DataAssetDownloads = 5,
  DataAssetPrice = 6,
  DataAssetSaleprice = 7,
  DataAssetPhone = 8,
  DataAssetAddress = 9,
  DataAssetDescription2 = 10,
  DataAssetDisplayurl = 11,
  DataAssetCtatext = 12,
/// Custom type for user-defined data assets
  DataAssetCustom = 13,
};

@class NSDate;

SWIFT_CLASS_NAMED("DateFormatService")
@interface PBMDateFormatService : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMDateFormatService * _Nonnull shared;)
+ (PBMDateFormatService * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (NSDate * _Nullable)formatISO8601For:(NSString * _Nullable)strDate SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile19PluginEventDelegate_")
@protocol PluginEventDelegate <NSObject>
- (NSString * _Nonnull)getPluginName SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile26DefaultPluginEventDelegate")
@interface DefaultPluginEventDelegate : NSObject <PluginEventDelegate>
- (NSString * _Nonnull)getPluginName SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC12PrebidMobile18DemandResponseInfo")
@interface DemandResponseInfo : NSObject
@property (nonatomic, readonly) enum ResultCode fetchDemandResult;
@property (nonatomic, readonly, strong) Bid * _Nullable bid;
- (nonnull instancetype)initWithFetchDemandResult:(enum ResultCode)fetchDemandResult bid:(Bid * _Nullable)bid configId:(NSString * _Nullable)configId winNotifierBlock:(void (^ _Nonnull)(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))winNotifierBlock bidResponse:(BidResponse * _Nullable)bidResponse OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// A protocol that defines methods for receiving loading events related to ad display views.
/// This protocol is used to notify the delegate when an ad has successfully loaded or if an error occurs during loading.
SWIFT_PROTOCOL("_TtP12PrebidMobile26DisplayViewLoadingDelegate_")
@protocol DisplayViewLoadingDelegate <NSObject>
/// Notifies that the ad has successfully loaded in the display view.
/// \param displayView The <code>UIView</code> instance in which the ad has been loaded.
///
- (void)displayViewDidLoadAd:(UIView * _Nonnull)displayView;
/// Notifies that an error occurred during the ad loading process.
/// \param displayView The <code>UIView</code> instance where the ad was intended to load.
///
/// \param error An <code>Error</code> instance describing the issue that occurred during the ad loading.
///
- (void)displayView:(UIView * _Nonnull)displayView didFailWithError:(NSError * _Nonnull)error;
@end


/// This class is a proxy container for event trackers.
/// You can add (and remove) any quantity of trackers.
/// Each tracker must correspond to EventTrackerProtocol the EventTracker Protocol.
/// EventManager implements EventTrackerProtocol.
/// It broadcasts protocol calls to the all registered trackers.
SWIFT_CLASS_NAMED("EventManager")
@interface PBMEventManager : NSObject <PBMEventTrackerProtocol>
- (void)registerTracker:(id <PBMEventTrackerProtocol> _Nonnull)tracker;
- (void)unregisterTracker:(id <PBMEventTrackerProtocol> _Nonnull)tracker;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



/// Native event tracking type.
SWIFT_CLASS("_TtC12PrebidMobile13EventTracking")
@interface EventTracking : SingleContainerInt
/// Represents image-based event tracking.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull Image;)
+ (EventTracking * _Nonnull)Image SWIFT_WARN_UNUSED_RESULT;
/// Represents JavaScript-based event tracking.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull js;)
+ (EventTracking * _Nonnull)js SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom event tracking method.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull Custom;)
+ (EventTracking * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Class representing different event types.
SWIFT_CLASS("_TtC12PrebidMobile9EventType")
@interface EventType : SingleContainerInt
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull Impression;)
+ (EventType * _Nonnull)Impression SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableImpression50;)
+ (EventType * _Nonnull)ViewableImpression50 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableImpression100;)
+ (EventType * _Nonnull)ViewableImpression100 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableVideoImpression50;)
+ (EventType * _Nonnull)ViewableVideoImpression50 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull Custom;)
+ (EventType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end

@class UserUniqueID;

/// Defines the User Id Object from an External Thrid Party Source
/// https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/2.x_official_extensions/eids.md
SWIFT_CLASS("_TtC12PrebidMobile14ExternalUserId")
@interface ExternalUserId : NSObject
/// The source of the external user ID.
@property (nonatomic, copy) NSString * _Nonnull source;
/// Array of extended ID UID objects from the given source.
@property (nonatomic, copy) NSArray<UserUniqueID *> * _Nonnull uids;
/// Additional attributes related to the external user ID, represented as an optional dictionary.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new <code>ExternalUserId</code> object.
/// \param source The source of the external user ID (e.g., a third-party provider).
///
/// \param uids A list of <code>UserUniqueID</code> objects representing the user’s unique identifiers.
///
/// \param ext Optional dictionary for additional attributes related to the external user ID. Default is <code>nil</code>.
///
- (nonnull instancetype)initWithSource:(NSString * _Nonnull)source uids:(NSArray<UserUniqueID *> * _Nonnull)uids ext:(NSDictionary<NSString *, id> * _Nullable)ext OBJC_DESIGNATED_INITIALIZER;
/// Converts the <code>ExternalUserId</code> instance to a JSON dictionary.
- (NSDictionary<NSString *, id> * _Nonnull)toJSONDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol PBMWinNotifier;
@protocol PBMViewExposure;
@protocol PBMModalState;
@class PBMInterstitialDisplayProperties;
@protocol PBMInterstitialAdLoader;
@protocol PBMInterstitialAdLoaderDelegate;

SWIFT_CLASS_NAMED("Factory")
@interface PBMFactory : NSObject
+ (id <PBMBidRequester> _Nonnull)createBidRequesterWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection sdkConfiguration:(Prebid * _Nonnull)sdkConfiguration targeting:(Targeting * _Nonnull)targeting adUnitConfiguration:(AdUnitConfig * _Nonnull)adUnitConfiguration SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMWinNotifier> _Nonnull WinNotifierType;)
+ (Class <PBMWinNotifier> _Nonnull)WinNotifierType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMWinNotifier> _Nonnull)createWinNotifier SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMAdViewManager> _Nonnull AdViewManagerType;)
+ (Class <PBMAdViewManager> _Nonnull)AdViewManagerType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMAdViewManager> _Nonnull)createAdViewManagerWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection modalManagerDelegate:(id <PBMModalManagerDelegate> _Nullable)modalManagerDelegate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMTransaction> _Nonnull TransactionType;)
+ (Class <PBMTransaction> _Nonnull)TransactionType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMTransaction> _Nonnull)createTransactionWithServerConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection adConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration models:(NSArray<PBMCreativeModel *> * _Nonnull)models SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMViewExposure> _Nonnull ViewExposureType;)
+ (Class <PBMViewExposure> _Nonnull)ViewExposureType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMViewExposure> _Nonnull)createViewExposureWithExposureFactor:(float)exposureFactor visibleRectangle:(CGRect)visibleRectangle occlusionRectangles:(NSArray<NSValue *> * _Nullable)occlusionRectangles SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMModalState> _Nonnull ModalStateType;)
+ (Class <PBMModalState> _Nonnull)ModalStateType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMModalState> _Nonnull)createModalStateWithView:(UIView * _Nonnull)view adConfiguration:(PBMAdConfiguration * _Nullable)adConfiguration displayProperties:(PBMInterstitialDisplayProperties * _Nullable)displayProperties onStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStatePopFinished onStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStateHasLeftApp nextOnStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStatePopFinished nextOnStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStateHasLeftApp onModalPushedBlock:(void (^ _Nullable)(void))onModalPushedBlock SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMInterstitialAdLoader> _Nonnull PBMInterstitialAdLoaderType;)
+ (Class <PBMInterstitialAdLoader> _Nonnull)PBMInterstitialAdLoaderType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMInterstitialAdLoader> _Nonnull)PBMInterstitialAdLoaderWithDelegate:(id <PBMInterstitialAdLoaderDelegate> _Nonnull)delegate eventHandler:(id <PBMPrimaryAdRequesterProtocol> _Nonnull)eventHandler SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSURL;

SWIFT_CLASS_NAMED("HiddenWebViewManager")
@interface PBMHiddenWebViewManager : NSObject
- (nonnull instancetype)initWithFrame:(CGRect)frame landingPageString:(NSURL * _Nonnull)landingPageString OBJC_DESIGNATED_INITIALIZER;
- (void)openHiddenWebView;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A singleton class that manages the Prebid server URL, including a custom URL.
SWIFT_CLASS("_TtC12PrebidMobile4Host")
@interface Host : NSObject
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Host * _Nonnull shared;)
+ (Host * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (BOOL)setHostURL:(NSString * _Nullable)urlString nonTrackingURLString:(NSString * _Nullable)nonTrackingURLString error:(NSError * _Nullable * _Nullable)error;
- (NSString * _Nullable)getHostURLAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function verifies if the prebid server URL is in the url format
- (BOOL)verifyUrlWithUrlString:(NSString * _Nullable)urlString SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile13IMAAdSlotSize")
@interface IMAAdSlotSize : SingleContainerInt
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size400x300;)
+ (IMAAdSlotSize * _Nonnull)Size400x300 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size640x480;)
+ (IMAAdSlotSize * _Nonnull)Size640x480 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size320x480;)
+ (IMAAdSlotSize * _Nonnull)Size320x480 SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC12PrebidMobile8IMAUtils")
@interface IMAUtils : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAUtils * _Nonnull shared;)
+ (IMAUtils * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (NSString * _Nullable)generateInstreamUriForGAMWithAdUnitID:(NSString * _Nonnull)adUnitID adSlotSizes:(NSArray<IMAAdSlotSize *> * _Nonnull)adSlotSizes customKeywords:(NSDictionary<NSString *, NSString *> * _Nullable)customKeywords error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


/// Native image asset type.
SWIFT_CLASS("_TtC12PrebidMobile10ImageAsset")
@interface ImageAsset : SingleContainerInt
/// Represents an icon image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Icon;)
+ (ImageAsset * _Nonnull)Icon SWIFT_WARN_UNUSED_RESULT;
/// Represents the main image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Main;)
+ (ImageAsset * _Nonnull)Main SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Custom;)
+ (ImageAsset * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents an instream video ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile19InstreamVideoAdUnit")
@interface InstreamVideoAdUnit : AdUnit <PBMVideoBasedAdUnitProtocol>
/// The video parameters for this ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// Initializes a new instream video ad unit.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param size The size of the ad.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("InterstitialAd")
@protocol PBMInterstitialAd <PBMPrimaryAdRequesterProtocol>
/// @abstract Return whether an interstitial is ready for display
@property (nonatomic, readonly) BOOL isReady;
/// @abstract PBM SDK calls this method to show the interstitial ad from the ad server SDK
/// @param controller view controller to be used for presenting the interstitial ad
- (void)showFromViewController:(UIViewController * _Nullable)viewController;
@optional
/// @abstract Called by PBM SDK to notify primary ad server.
- (void)trackImpression;
@end

@class InterstitialController;

SWIFT_PROTOCOL_NAMED("InterstitialAdLoaderDelegate")
@protocol PBMInterstitialAdLoaderDelegate
- (void)interstitialAdLoader:(id <PBMInterstitialAdLoader> _Nonnull)interstitialAdLoader loadedAd:(void (^ _Nonnull)(UIViewController * _Nullable))showBlock isReadyBlock:(BOOL (^ _Nonnull)(void))isReadyBlock;
- (void)interstitialAdLoader:(id <PBMInterstitialAdLoader> _Nonnull)interstitialAdLoader createdInterstitialController:(InterstitialController * _Nonnull)interstitialController;
@end


/// Represents an interstitial ad unit built for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile18InterstitialAdUnit")
@interface InterstitialAdUnit : AdUnit <PBMBannerBasedAdUnitProtocol, PBMVideoBasedAdUnitProtocol>
/// The banner parameters for this ad unit.
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters for this ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// The ad formats for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// Initializes a new interstitial ad unit with a unique configuration identifier.
/// \param configId The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new interstitial ad unit with a minimum width and height percentage.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param minWidthPerc The minimum width percentage of the ad.
///
/// \param minHeightPerc The minimum height percentage of the ad.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId minWidthPerc:(NSInteger)minWidthPerc minHeightPerc:(NSInteger)minHeightPerc;
/// Sets the view in which Prebid will start tracking an impression.
- (void)activatePrebidImpressionTracker;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow.
/// Ensure this method is called before presenting interstitials.
/// This feature is not available for video ads.
- (void)activatePrebidSKAdNetworkStoreKitAdsFlow;
/// Attempts to display an <code>SKOverlay</code> if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented.
- (void)dismissSKOverlayIfAvailable;
@end

@class InterstitialRenderingAdUnit;

/// Protocol for interaction with the InterstitialAdUnit .
/// All messages will be invoked on the main thread.
SWIFT_PROTOCOL("_TtP12PrebidMobile26InterstitialAdUnitDelegate_")
@protocol InterstitialAdUnitDelegate <NSObject>
@optional
/// Called when an ad is loaded and ready for display
- (void)interstitialDidReceiveAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when the load process fails to produce a viable ad
- (void)interstitial:(InterstitialRenderingAdUnit * _Nonnull)interstitial didFailToReceiveAdWithError:(NSError * _Nullable)error;
/// Called when the interstitial view will be launched,  as a result of show() method.
- (void)interstitialWillPresentAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when the interstitial is dismissed by the user
- (void)interstitialDidDismissAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when an ad causes the sdk to leave the app
- (void)interstitialWillLeaveApplication:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when user clicked the ad
- (void)interstitialDidClickAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
@end


/// A protocol that defines the interface for controlling and interacting with interstitial ads.
/// This protocol allows loading and displaying interstitial ads, as well as managing interactions with them.
SWIFT_PROTOCOL("_TtP12PrebidMobile42PrebidMobileInterstitialControllerProtocol_")
@protocol PrebidMobileInterstitialControllerProtocol <NSObject>
/// Loads the ad content for the interstitial.
/// important:
/// This method is expected to call the <code>loadingDelegate</code> once the ad is successfully loaded or if any error occurred.
- (void)loadAd;
/// Displays the interstitial ad.
- (void)show;
@end

@protocol InterstitialControllerLoadingDelegate;
@protocol InterstitialControllerInteractionDelegate;

SWIFT_CLASS("_TtC12PrebidMobile22InterstitialController")
@interface InterstitialController : NSObject <PBMAdViewManagerDelegate, PrebidMobileInterstitialControllerProtocol>
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Sets an ad unit as a rewarded
@property (nonatomic) BOOL isRewarded;
@property (nonatomic, strong) PBMVideoControlsConfiguration * _Nonnull videoControlsConfig;
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
@property (nonatomic, weak) id <InterstitialControllerLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <InterstitialControllerInteractionDelegate> _Nullable interactionDelegate;
- (nonnull instancetype)initWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithBid:(Bid * _Nonnull)bid configId:(NSString * _Nonnull)configId;
- (void)loadAd;
- (void)show;
- (UIViewController * _Nullable)viewControllerForModalPresentation SWIFT_WARN_UNUSED_RESULT;
- (void)adLoaded:(PBMAdDetails * _Nonnull)pbmAdDetails;
- (void)failedToLoad:(NSError * _Nonnull)error;
- (void)adDidComplete;
- (void)adDidDisplay;
- (void)adWasClicked;
- (void)adViewWasClicked;
- (void)adDidLeaveApp;
- (void)adDidClose;
- (void)adDidSendRewardedEvent;
- (PBMInterstitialDisplayProperties * _Nonnull)interstitialDisplayProperties SWIFT_WARN_UNUSED_RESULT;
- (void)adClickthroughDidClose;
- (void)adDidExpand;
- (void)adDidCollapse;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)reportFailureWithError:(NSError * _Nullable)error;
@end

@class PrebidReward;

/// A protocol that defines methods for handling user interactions and lifecycle events related to interstitial ads.
SWIFT_PROTOCOL("_TtP12PrebidMobile41InterstitialControllerInteractionDelegate_")
@protocol InterstitialControllerInteractionDelegate <NSObject>
/// Tracks an impression for the specified interstitial ad controller.
/// \param forInterstitialController The interstitial ad controller associated with the impression.
///
- (void)trackImpressionForInterstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)forInterstitialController;
/// Notifies that the interstitial ad was clicked by the user.
/// \param interstitialController The interstitial ad controller associated with the click.
///
- (void)interstitialControllerDidClickAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has been closed by the user.
/// \param interstitialController The interstitial ad controller that was closed.
///
- (void)interstitialControllerDidCloseAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the user has left the app after interacting with the interstitial ad.
/// \param interstitialController The interstitial ad controller that was displayed when the user left the app.
///
- (void)interstitialControllerDidLeaveApp:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has been displayed to the user.
/// \param interstitialController The interstitial ad controller that displayed the ad.
///
- (void)interstitialControllerDidDisplay:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has completed its presentation.
/// \param interstitialController The interstitial ad controller associated with the completed ad.
///
- (void)interstitialControllerDidComplete:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Requests the <code>UIViewController</code> to be used for presenting modals from the interstitial ad controller.
/// \param fromInterstitialController The interstitial ad controller requesting the view controller.
///
- (UIViewController * _Nullable)viewControllerForModalPresentationFromInterstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)fromInterstitialController SWIFT_WARN_UNUSED_RESULT;
@optional
/// Notifies the delegate when a reward is granted to the user after interacting with a rewarded interstitial ad.
/// \param interstitialController The instance of the interstitial ad controller responsible for managing the ad.
///
/// \param reward An object containing details about the reward, such as the type and amount.
///
- (void)trackUserReward:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController :(PrebidReward * _Nonnull)reward;
@end


/// A protocol that defines methods for receiving loading events related to interstitial ad controllers.
SWIFT_PROTOCOL("_TtP12PrebidMobile37InterstitialControllerLoadingDelegate_")
@protocol InterstitialControllerLoadingDelegate <NSObject>
/// Notifies the delegate that the interstitial ad has successfully loaded.
/// \param interstitialController The interstitial ad controller that successfully loaded the ad.
///
- (void)interstitialControllerDidLoadAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that an error occurred during the interstitial ad loading process.
/// \param interstitialController The interstitial ad controller that attempted to load the ad.
///
/// \param error An <code>Error</code> instance describing the issue that occurred during the ad loading.
///
- (void)interstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController didFailWithError:(NSError * _Nonnull)error;
@end

@class UIColor;

SWIFT_CLASS_NAMED("InterstitialDisplayProperties")
@interface PBMInterstitialDisplayProperties : NSObject
@property (nonatomic) NSTimeInterval closeDelay;
@property (nonatomic) NSTimeInterval closeDelayLeft;
@property (nonatomic) CGRect contentFrame;
@property (nonatomic, strong) UIColor * _Nonnull contentViewColor;
@property (nonatomic) enum PBMInterstitialLayout interstitialLayout;
@property (nonatomic, readonly) BOOL rotationEnabled;
- (void)setButtonImageHidden;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (UIImage * _Nullable)getCloseButtonImage SWIFT_WARN_UNUSED_RESULT;
- (id _Nonnull)copy SWIFT_WARN_UNUSED_RESULT;
@end

@protocol InterstitialEventLoadingDelegate;
@protocol InterstitialEventInteractionDelegate;

SWIFT_PROTOCOL_NAMED("InterstitialEventHandlerProtocol")
@protocol PBMInterstitialEventHandlerProtocol <PBMInterstitialAd>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <InterstitialEventInteractionDelegate> _Nullable interactionDelegate;
@end


SWIFT_CLASS("_TtC12PrebidMobile34InterstitialEventHandlerStandalone")
@interface InterstitialEventHandlerStandalone : NSObject <PBMInterstitialEventHandlerProtocol>
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <InterstitialEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, readonly) BOOL isReady;
- (void)showFromViewController:(UIViewController * _Nullable)controller;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile36InterstitialEventInteractionDelegate_")
@protocol InterstitialEventInteractionDelegate <NSObject>
/// Call this when the ad server SDK is about to present a modal
- (void)willPresentAd;
/// Call this when the ad server SDK dissmisses a modal
- (void)didDismissAd;
/// Call this when the ad server SDK informs about app leave event as a result of user interaction.
- (void)willLeaveApp;
/// Call this when the ad server SDK informs about click event as a result of user interaction.
- (void)didClickAd;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile32InterstitialEventLoadingDelegate_")
@protocol InterstitialEventLoadingDelegate <NSObject>
- (void)prebidDidWin;
- (void)adServerDidWin;
- (void)failedWithError:(NSError * _Nullable)error;
@end

/// Determines the type of interstitial layout
typedef SWIFT_ENUM_NAMED(NSInteger, PBMInterstitialLayout, "InterstitialLayout", open) {
  PBMInterstitialLayoutUndefined = 0,
  PBMInterstitialLayoutPortrait = 1,
  PBMInterstitialLayoutLandscape = 2,
  PBMInterstitialLayoutAspectRatio = 3,
};


/// Represents an interstitial ad unit. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile27InterstitialRenderingAdUnit")
@interface InterstitialRenderingAdUnit : NSObject
/// A delegate for handling interactions with the ad unit.
@property (nonatomic, weak) id <InterstitialAdUnitDelegate> _Nullable delegate;
/// A Boolean value indicating whether the ad unit is ready to be displayed.
@property (nonatomic, readonly) BOOL isReady;
/// The set of ad formats supported by this ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// The banner parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// The area of the close button in the video controls as a percentage.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video controls.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// The area of the skip button in the video controls, specified as a percentage of the screen width.
@property (nonatomic) double skipButtonArea;
/// The position of the skip button in the video controls.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// The delay before the skip button appears, in seconds.
@property (nonatomic) double skipDelay;
/// A Boolean value indicating whether the video controls are muted.
@property (nonatomic) BOOL isMuted;
/// A Boolean value indicating whether the sound button is visible in the video controls.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Initializes a new <code>BaseInterstitialAdUnit</code> with the specified configuration ID.
/// \param configID The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and minimum size percentage.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id _Nullable)eventHandler;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID, minimum size percentage, and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage eventHandler:(id _Nonnull)eventHandler;
/// Loads a new ad.
- (void)loadAd;
/// Shows the ad from a specified view controller.
/// note:
/// This method must be called on the main thread.
/// \param controller The view controller from which the ad will be presented.
///
- (void)showFrom:(UIViewController * _Nonnull)controller;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("LocationManager")
@interface PBMLocationManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLocationManager * _Nonnull shared;)
+ (PBMLocationManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) BOOL locationUpdatesEnabled;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinates;
@property (nonatomic, readonly) BOOL coordinatesAreValid;
@property (nonatomic, readonly) CLLocationAccuracy horizontalAccuracy;
@property (nonatomic, readonly, copy) NSDate * _Nullable timestamp;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class CLLocationManager;
@class CLLocation;

@interface PBMLocationManager (SWIFT_EXTENSION(PrebidMobile)) <CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager * _Nonnull)manager didUpdateLocations:(NSArray<CLLocation *> * _Nonnull)locations;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nonnull)error;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

@class PBMLogLevel;
@protocol PrebidLogger;

/// This class serves as the central point for all logging operations within the SDK.
/// It allows for categorized logging based on severity levels (e.g., error, warning, debug) and offers options for both console and file-based logging.
/// It also provides the ability to set third-party logger.
SWIFT_CLASS_NAMED("Log")
@interface PBMLog : NSObject
/// The current logging level. Only messages at this level or higher will be logged.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) PBMLogLevel * _Nonnull logLevel;)
+ (PBMLogLevel * _Nonnull)logLevel SWIFT_WARN_UNUSED_RESULT;
+ (void)setLogLevel:(PBMLogLevel * _Nonnull)value;
/// Indicates whether logs should also be saved to a file.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL logToFile;)
+ (BOOL)logToFile SWIFT_WARN_UNUSED_RESULT;
+ (void)setLogToFile:(BOOL)value;
/// Sets a custom logger to handle log messages.
+ (void)setCustomLogger:(id <PrebidLogger> _Nonnull)logger;
+ (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Writes a log message to the log file asynchronously.
/// \param message The log message to be written to the file.
///
+ (void)serialWriteToLog:(NSString * _Nonnull)message;
/// Reads the contents of the log file as a single string.
+ (NSString * _Nullable)getLogFileAsString SWIFT_WARN_UNUSED_RESULT;
/// Clears the contents of the log file.
+ (void)clearLogFile;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("LogLevel")
@interface PBMLogLevel : NSObject
@property (nonatomic) NSInteger rawValue;
@property (nonatomic, copy) NSString * _Nonnull stringValue;
- (nonnull instancetype)initWithStringValue:(NSString * _Nonnull)stringValue rawValue:(NSInteger)rawValue;
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue OBJC_DESIGNATED_INITIALIZER;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull debug;)
+ (PBMLogLevel * _Nonnull)debug SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull verbose;)
+ (PBMLogLevel * _Nonnull)verbose SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull info;)
+ (PBMLogLevel * _Nonnull)info SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull warn;)
+ (PBMLogLevel * _Nonnull)warn SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull error;)
+ (PBMLogLevel * _Nonnull)error SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull severe;)
+ (PBMLogLevel * _Nonnull)severe SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol PrebidMediationDelegate;

/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile21MediationBannerAdUnit")
@interface MediationBannerAdUnit : NSObject
/// Property that performs certain utilty work for the <code>MediationBannerAdUnit</code>
@property (nonatomic, readonly, strong) id <PrebidMediationDelegate> _Nonnull mediationDelegate;
/// The configuration ID for an ad unit
@property (nonatomic, readonly, copy) NSString * _Nonnull configID;
/// The ad format for the ad unit.
@property (nonatomic, strong) AdFormat * _Nonnull adFormat;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Parameters for configuring banner ads.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Parameters for configuring video ads.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The refresh interval for the ad.
@property (nonatomic) NSTimeInterval refreshInterval;
/// Additional sizes for the ad unit.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Initializes a new mediation banner ad unit with the specified configuration ID, size, and mediation delegate.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param size The size of the ad.
///
/// \param mediationDelegate The delegate for handling mediation.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID size:(CGSize)size mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
/// Makes bid request and setups mediation parameters.
/// \param completion The completion handler to call when the demand fetch is complete.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
/// Stops the auto-refresh for the ad unit.
- (void)stopRefresh;
/// Handles the event when the ad object fails to load an ad.
/// \param adObject The ad object that failed to load the ad.
///
/// \param error The error that occurred during the ad load.
///
- (void)adObjectDidFailToLoadAdWithAdObject:(UIView * _Nonnull)adObject with:(NSError * _Nonnull)error;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Base class for interstitial ads in Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile31MediationBaseInterstitialAdUnit")
@interface MediationBaseInterstitialAdUnit : NSObject
/// Parameters for configuring banner ads.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Parameters for configuring video ads.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Indicates whether the video ad is muted.
@property (nonatomic) BOOL isMuted;
/// Indicates whether the sound button is visible in the video ad.
@property (nonatomic) BOOL isSoundButtonVisible;
/// The area for the close button in the video ad.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video ad.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// The configuration ID for the ad unit.
@property (nonatomic, readonly, copy) NSString * _Nonnull configId;
/// Makes bid request and setups mediation parameters.
/// \param completion A closure called with the result code indicating the outcome of the demand fetch.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile23MediationBidInfoWrapper")
@interface MediationBidInfoWrapper : NSObject
@property (nonatomic, copy) NSString * _Nullable keywords;
@property (nonatomic, copy) NSDictionary * _Nullable localExtras;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile27MediationInterstitialAdUnit")
@interface MediationInterstitialAdUnit : MediationBaseInterstitialAdUnit
/// The ad format for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Additional sizes for the ad unit.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// The area for the skip button in the video ad.
@property (nonatomic) double skipButtonArea;
/// The position of the skip button in the video ad.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// The delay before the skip button appears in the video ad.
@property (nonatomic) double skipDelay;
/// Convenience initializer for the mediation interstitial ad unit.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param mediationDelegate The delegate for handling mediation.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate;
/// The configuration ID for the ad unit.
@property (nonatomic, readonly, copy) NSString * _Nonnull configId;
@end

@class NativeRequest;
@class NativeEventTracker;
@class NativeAsset;
@class PlacementType;

/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile21MediationNativeAdUnit")
@interface MediationNativeAdUnit : NSObject
/// The native ad unit that makes native request.
@property (nonatomic, strong) NativeRequest * _Nonnull nativeAdUnit;
/// Initializes a new instance of the <code>MediationNativeAdUnit</code> with the specified configuration ID and mediation delegate.
/// \param configId The configuration ID for the ad unit.
///
/// \param mediationDelegate The delegate for mediation-related tasks.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
/// Adds event trackers to the native ad unit.
/// \param eventTrackers An array of <code>NativeEventTracker</code> objects to add.
///
- (void)addEventTracker:(NSArray<NativeEventTracker *> * _Nonnull)eventTrackers;
/// Adds native assets to the native ad unit.
/// \param assets An array of <code>NativeAsset</code> objects to add.
///
- (void)addNativeAssets:(NSArray<NativeAsset *> * _Nonnull)assets;
/// Sets the context type for the native ad unit.
/// \param contextType The context type to set.
///
- (void)setContextType:(ContextType * _Nonnull)contextType;
/// Sets the placement type for the native ad unit.
/// \param placementType The placement type to set.
///
- (void)setPlacementType:(PlacementType * _Nonnull)placementType;
/// Sets the placement count for the native ad unit.
/// \param placementCount The placement count to set.
///
- (void)setPlacementCount:(NSInteger)placementCount;
/// Sets the context subtype for the native ad unit.
/// \param contextSubType The context subtype to set.
///
- (void)setContextSubType:(ContextSubType * _Nonnull)contextSubType;
/// Sets the sequence for the native ad unit.
/// \param sequence The sequence to set.
///
- (void)setSequence:(NSInteger)sequence;
/// Sets the asset URL support for the native ad unit.
/// \param assetURLSupport The asset URL support value to set.
///
- (void)setAssetURLSupport:(NSInteger)assetURLSupport;
/// Sets the DURL support for the native ad unit.
/// \param dURLSupport The DURL support value to set.
///
- (void)setDURLSupport:(NSInteger)dURLSupport;
/// Sets the privacy value for the native ad unit.
/// \param privacy The privacy value to set.
///
- (void)setPrivacy:(NSInteger)privacy;
/// Sets the extended data for the native ad unit.
/// \param ext A dictionary containing the extended data to set.
///
- (void)setExt:(NSDictionary<NSString *, id> * _Nonnull)ext;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Makes bid request for the native ad unit and setups mediation parameters.
/// \param completion The completion handler to call with the result code.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("MediationNativeUtils")
@interface PBMMediationNativeUtils : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile23MediationRewardedAdUnit")
@interface MediationRewardedAdUnit : MediationBaseInterstitialAdUnit
/// Initializes a new instance of the <code>MediationRewardedAdUnit</code> with the specified configuration ID and mediation delegate.
/// \param configId The configuration ID for the ad unit.
///
/// \param mediationDelegate The delegate for mediation-related tasks.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("MediationUtils")
@interface PBMMediationUtils : NSObject
+ (BOOL)isServerParameterInTargetingInfo:(NSString * _Nonnull)serverParameter :(NSArray<NSString *> * _Nonnull)targetingInfo SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isServerParameterInTargetingInfoDict:(NSString * _Nonnull)serverParameter :(NSDictionary<NSString *, NSString *> * _Nonnull)targetingInfoDictionary SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isServerParameterDictInTargetingInfoDict:(NSDictionary<NSString *, NSString *> * _Nonnull)serverParametersDictionary :(NSDictionary<NSString *, NSString *> * _Nonnull)targetingInfoDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ModalState")
@protocol PBMModalState
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nullable adConfiguration;
@property (nonatomic, readonly, strong) PBMInterstitialDisplayProperties * _Nullable displayProperties;
@property (nonatomic, readonly, strong) UIView * _Nullable view;
@property (nonatomic) PBMMRAIDState _Nonnull mraidState;
@property (nonatomic, readonly, copy) void (^ _Nullable onStatePopFinished)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable onStateHasLeftApp)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable nextOnStatePopFinished)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable nextOnStateHasLeftApp)(id <PBMModalState> _Nullable);
@property (nonatomic, copy) PBMVoidBlock _Nullable onModalPushedBlock;
@property (nonatomic, readonly) BOOL isRotationEnabled;
- (nonnull instancetype)initWithView:(UIView * _Nonnull)view adConfiguration:(PBMAdConfiguration * _Nullable)adConfiguration displayProperties:(PBMInterstitialDisplayProperties * _Nullable)displayProperties onStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStatePopFinished onStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStateHasLeftApp nextOnStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStatePopFinished nextOnStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStateHasLeftApp onModalPushedBlock:(PBMVoidBlock _Nullable)onModalPushedBlock;
@end


@interface NSString (SWIFT_EXTENSION(PrebidMobile))
@property (nonatomic, readonly, strong) UIImage * _Nullable base64DecodedImage;
@end

@class NativeAdMarkup;
@protocol NativeAdEventDelegate;
@class NativeTitle;
@class NativeData;
@class NativeImage;
@class NativeEventTrackerResponse;
enum NativeDataAssetType : NSInteger;
enum NativeImageAssetType : NSInteger;

/// Represents a native ad and handles its various properties and functionalities.
SWIFT_CLASS("_TtC12PrebidMobile8NativeAd")
@interface NativeAd : NSObject
/// The native ad markup containing the ad assets.
@property (nonatomic, strong) NativeAdMarkup * _Nullable nativeAdMarkup;
/// The delegate to receive native ad events.
@property (nonatomic, weak) id <NativeAdEventDelegate> _Nullable delegate;
/// Returns an array of titles from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeTitle *> * _Nonnull titles;
/// Returns an array of data objects from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeData *> * _Nonnull dataObjects;
/// Returns an array of images from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeImage *> * _Nonnull images;
/// Returns an array of event trackers from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeEventTrackerResponse *> * _Nullable eventTrackers;
@property (nonatomic, copy) NSString * _Nullable privacyUrl;
/// Returns an array of data objects filtered by the specified data type.
- (NSArray<NativeData *> * _Nonnull)dataObjectsOf:(enum NativeDataAssetType)dataType SWIFT_WARN_UNUSED_RESULT;
/// Returns an array of images filtered by the specified image type.
- (NSArray<NativeImage *> * _Nonnull)imagesOf:(enum NativeImageAssetType)imageType SWIFT_WARN_UNUSED_RESULT;
/// Returns the first title text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable title;
/// Returns the URL of the main image from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable imageUrl;
/// Returns the URL of the icon image from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable iconUrl;
/// Returns the sponsored by text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable sponsoredBy;
/// Returns the description text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable text;
/// Returns the call-to-action text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable callToAction;
/// Returns landing URL of the clickable link.
@property (nonatomic, readonly, copy) NSString * _Nullable clickURL;
/// Creates a <code>NativeAd</code> instance from the given cache ID.
/// \param cacheId The cache ID to retrieve the bid response.
///
///
/// returns:
/// A <code>NativeAd</code> instance if successful, otherwise <code>nil</code>.
+ (NativeAd * _Nullable)createWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Registers a view for tracking viewability and click events.
/// \param view The view to register.
///
/// \param clickableViews An array of views that should be clickable.
///
///
/// returns:
/// <code>true</code> if the view was successfully registered, otherwise <code>false</code>.
- (BOOL)registerViewWithView:(UIView * _Nullable)view clickableViews:(NSArray<UIView *> * _Nullable)clickableViews;
@end

@class PBMNativeMarkupRequestObject;

/// Represents the configuration for a native ad, including markup and version information.
SWIFT_CLASS_NAMED("NativeAdConfiguration")
@interface PBMNativeAdConfiguration : NSObject
/// Version of the Native Markup version in use.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The object containing the request details for the native markup.
@property (nonatomic, strong) PBMNativeMarkupRequestObject * _Nonnull markupRequestObject;
/// Initializes a new instance of <code>NativeAdMarkup</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile16NativeAdDelegate_")
@protocol NativeAdDelegate
/// A successful Prebid Native ad is returned
/// <ul>
///   <li>
///     Parameter:  A successful Prebid Native ad is returned
///   </li>
/// </ul>
- (void)nativeAdLoadedWithAd:(NativeAd * _Nonnull)ad;
/// Prebid Native was not found in the server returned response,
/// Please display the ad as regular ways
- (void)nativeAdNotFound;
/// Prebid Native ad was returned, however, the bid is not valid for displaying
/// Should be treated as on ad load failed
- (void)nativeAdNotValid;
@end


/// A protocol for handling events related to native ads.
/// This protocol defines optional methods that can be implemented to handle various events associated with native ads, such as expiration, clicks, and impressions. Implementing this protocol allows for custom handling of these events within the native ad lifecycle.
SWIFT_PROTOCOL("_TtP12PrebidMobile21NativeAdEventDelegate_")
@protocol NativeAdEventDelegate
@optional
/// Sent when the native ad is expired.
- (void)adDidExpireWithAd:(NativeAd * _Nonnull)ad;
/// Sent when the native view is clicked by the user.
- (void)adWasClickedWithAd:(NativeAd * _Nonnull)ad;
/// Sent when  an impression is recorded for an native ad
- (void)adDidLogImpressionWithAd:(NativeAd * _Nonnull)ad;
@end

@class NativeAdMarkupAsset;
@class NativeLink;

/// Represents the markup for a native ad, including assets, tracking URLs, and other metadata.
SWIFT_CLASS("_TtC12PrebidMobile14NativeAdMarkup")
@interface NativeAdMarkup : NSObject
/// Version of the Native Markup version in use.
@property (nonatomic, copy) NSString * _Nullable version;
/// List of native ad’s assets.
/// Required if no assetsurl.
/// Recommended as fallback even if assetsurl is provided.
@property (nonatomic, copy) NSArray<NativeAdMarkupAsset *> * _Nullable assets;
/// URL of an alternate source for the assets object.
/// The expected response is a JSON object mirroring the assets object in the bid response,
/// subject to certain requirements as specified in the individual objects.
/// Where present, overrides the asset object in the response.
@property (nonatomic, copy) NSString * _Nullable assetsurl;
/// URL where a dynamic creative specification may be found for populating this ad, per the Dynamic Content Ads Specification.
/// Note this is a beta option as the interpretation of the Dynamic Content Ads Specification and how to assign those elements
/// into a native ad is outside the scope of this spec and must be agreed offline between the parties
/// or as may be specified in a future revision of the Dynamic Content Ads spec.
/// Where present, overrides the asset object in the response.
@property (nonatomic, copy) NSString * _Nullable dcourl;
/// Destination Link.
/// This is default link object for the ad.
/// Individual assets can also have a link object which applies if the asset is activated(clicked).
/// If the asset doesn’t have a link object, the parent link object applies.
/// See LinkObject Definition
@property (nonatomic, strong) NativeLink * _Nullable link;
/// Array of impression tracking URLs, expected to return a 1x1 image or 204 response - typically only passed when using 3rd party trackers.
/// To be deprecated - replaced with eventtrackers.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable imptrackers;
/// Optional JavaScript impression tracker.
/// This is a valid HTML, Javascript is already wrapped in <script> tags.
/// It should be executed at impression time where it can be supported.
/// To be deprecated - replaced with eventtrackers.
@property (nonatomic, copy) NSString * _Nullable jstracker;
/// Array of tracking objects to run with the ad, in response to the declared supported methods in the request.
/// Replaces imptrackers and jstracker, to be deprecated.
@property (nonatomic, copy) NSArray<NativeEventTrackerResponse *> * _Nullable eventtrackers;
/// If support was indicated in the request, URL of a page informing the user about the buyer’s targeting activity.
@property (nonatomic, copy) NSString * _Nullable privacy;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new instance of <code>NativeAdMarkup</code> from a JSON string.
/// \param jsonString A JSON string representing the native ad markup.
///
- (nullable instancetype)initWithJsonString:(NSString * _Nullable)jsonString;
/// Initializes a new instance of <code>NativeAdMarkup</code> from a JSON dictionary.
/// \param jsonDictionary A dictionary representing the native ad markup.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new instance of <code>NativeAdMarkup</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents an asset in the native ad markup, which can be a title, image, data, or link.
SWIFT_CLASS("_TtC12PrebidMobile19NativeAdMarkupAsset")
@interface NativeAdMarkupAsset : NSObject
/// Title object for title assets.
/// See TitleObject definition.
@property (nonatomic, strong) NativeTitle * _Nullable title;
/// Image object for image assets.
/// See ImageObject definition.
@property (nonatomic, strong) NativeImage * _Nullable img;
/// Data object for ratings, prices etc.
@property (nonatomic, strong) NativeData * _Nullable data;
/// Link object for call to actions.
/// The link object applies if the asset item is activated (clicked).
/// If there is no link object on the asset, the parent link object on the bid response applies.
@property (nonatomic, strong) NativeLink * _Nullable link;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new instance of <code>NativeAdMarkupAsset</code> from a JSON dictionary.
/// \param jsonDictionary A dictionary representing the asset in the native ad markup.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new instance of <code>NativeAdMarkupAsset</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a generic native ad asset which could be a title, image, or data.
SWIFT_CLASS("_TtC12PrebidMobile11NativeAsset")
@interface NativeAsset : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Represents a data asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile15NativeAssetData")
@interface NativeAssetData : NativeAsset
/// Additional custom properties for the data asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetData</code>.
/// \param type The type of the data asset.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithType:(enum DataAsset)type required:(BOOL)required OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired SWIFT_UNAVAILABLE;
@end


/// Represents an image asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile16NativeAssetImage")
@interface NativeAssetImage : NativeAsset
/// The type of the image asset.
@property (nonatomic, strong) ImageAsset * _Nullable type;
/// The MIME types supported for the image asset.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable mimes;
/// Additional custom properties for the image asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetImage</code>.
/// \param minimumWidth The minimum width of the image.
///
/// \param minimumHeight The minimum height of the image.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithMinimumWidth:(NSInteger)minimumWidth minimumHeight:(NSInteger)minimumHeight required:(BOOL)required;
/// Initializes a new instance of <code>NativeAssetImage</code>.
/// \param isRequired A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a title asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile16NativeAssetTitle")
@interface NativeAssetTitle : NativeAsset
/// Additional custom properties for the title asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetTitle</code>.
/// \param length The maximum length of the title.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithLength:(NSInteger)length required:(BOOL)required OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired SWIFT_UNAVAILABLE;
@end


/// Class representing native data elements in the ad markup.
SWIFT_CLASS("_TtC12PrebidMobile10NativeData")
@interface NativeData : NSObject
/// The formatted string of data to be displayed.
/// Can contain a formatted value such as “5 stars” or “$10” or “3.4 stars out of 5”.
@property (nonatomic, copy) NSString * _Nullable value;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new <code>NativeData</code> object with the provided JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing various types of native data assets that can be used in ads.
/// Each case represents a different type of data that can be provided in a native ad response.
/// Values are defined according to the type of data they represent, such as descriptive text, ratings, or pricing information.
typedef SWIFT_ENUM(NSInteger, NativeDataAssetType, open) {
  NativeDataAssetTypeUndefined = 0,
/// Sponsored By message where response should contain the brand name of the sponsor.
  NativeDataAssetTypeSponsored = 1,
/// Descriptive text associated with the product or service being advertised. Longer length of text in response may be truncated or ellipsed by the exchange.
  NativeDataAssetTypeDesc = 2,
/// Rating of the product being offered to the user. For example an app’s rating in an app store from 0-5.
  NativeDataAssetTypeRating = 3,
/// Number of social ratings or “likes” of the product being offered to the user.
  NativeDataAssetTypeLikes = 4,
/// Number downloads/installs of this product
  NativeDataAssetTypeDownloads = 5,
/// Price for product / app / in-app purchase. Value should include currency symbol in localised format.
  NativeDataAssetTypePrice = 6,
/// Sale price that can be used together with price to indicate a discounted price compared to a regular price. Value should include currency symbol in localised format.
  NativeDataAssetTypeSalePrice = 7,
/// Phone number
  NativeDataAssetTypePhone = 8,
/// Address
  NativeDataAssetTypeAddress = 9,
/// Additional descriptive text associated text with the product or service being advertised
  NativeDataAssetTypeDesc2 = 10,
/// Display URL for the text ad. To be used when sponsoring entity doesn’t own the content. IE sponsored by BRAND on SITE (where SITE is transmitted in this field).
  NativeDataAssetTypeDisplayURL = 11,
/// CTA description - descriptive text describing a ‘call to action’ button for the destination URL.
  NativeDataAssetTypeCtaText = 12,
/// Reserved for Exchange specific usage numbered above 500
  NativeDataAssetTypeCustom = 500,
};


/// Class representing an event tracker for native ads.
SWIFT_CLASS("_TtC12PrebidMobile18NativeEventTracker")
@interface NativeEventTracker : NSObject
/// Initializes a new <code>NativeEventTracker</code> instance.
/// \param event The event type to track.
///
/// \param methods The methods used for tracking the event.
///
- (nonnull instancetype)initWithEvent:(EventType * _Nonnull)event methods:(NSArray<EventTracking *> * _Nonnull)methods OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Class representing a response for a native event tracker.
SWIFT_CLASS("_TtC12PrebidMobile26NativeEventTrackerResponse")
@interface NativeEventTrackerResponse : NSObject
/// The URL of the image or js.
/// Required for image or js, optional for custom.
@property (nonatomic, copy) NSString * _Nullable url;
/// To be agreed individually with the exchange, an array of key:value objects for custom tracking,
/// for example the account number of the DSP with a tracking company. IE {“accountnumber”:”123”}.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable customdata;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeEventTrackerResponse</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Class representing an image asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile11NativeImage")
@interface NativeImage : NSObject
/// URL of the image asset.
@property (nonatomic, copy) NSString * _Nullable url;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeImage</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing various types of native image assets used in ads.
/// Each case corresponds to a different type of image asset that can be used in native ads.
/// Values are defined according to the role or importance of the image in the ad.
typedef SWIFT_ENUM(NSInteger, NativeImageAssetType, open) {
/// Represents an icon image, which is typically a small image used as a visual representation of the product or service.
  NativeImageAssetTypeIcon = 1,
/// Represents the main image of the ad, which is usually the primary visual element and central to the ad’s presentation.
  NativeImageAssetTypeMain = 3,
/// Reserved for exchange-specific usage.
  NativeImageAssetTypeCustom = 500,
};


/// Class representing a  link in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile10NativeLink")
@interface NativeLink : NSObject
/// Landing URL of the clickable link.
@property (nonatomic, copy) NSString * _Nullable url;
/// List of third-party tracker URLs to be fired on click of the URL.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable clicktrackers;
/// Fallback URL for deeplink.
/// To be used if the URL given in url is not supported by the device.
@property (nonatomic, copy) NSString * _Nullable fallback;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeLink</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a request object for native markup, including details about the ad’s context, placement, and supported features.
SWIFT_CLASS_NAMED("NativeMarkupRequestObject")
@interface PBMNativeMarkupRequestObject : NSObject <NSCopying, PBMJsonCodable>
/// [Recommended]
/// [Integer]
/// The context in which the ad appears.
/// See NativeContextType
@property (nonatomic, strong) ContextType * _Nullable context;
/// [Integer]
/// A more detailed context in which the ad appears.
/// See NativeContextSubtype
@property (nonatomic, strong) ContextSubType * _Nullable contextsubtype;
/// [Recommended]
/// [Integer]
/// The design/format/layout of the ad unit being offered.
/// See NativePlacementType
@property (nonatomic, strong) PlacementType * _Nullable plcmttype;
/// [Integer]
/// The number of identical placements in this Layout. Refer Section 8.1 Multiplacement Bid Requests for further detail.
@property (nonatomic) NSInteger plcmtcnt;
/// [Integer]
/// 0 for the first ad, 1 for the second ad, and so on.
/// Note this would generally NOT be used in combination with plcmtcnt -
/// either you are auctioning multiple identical placements (in which case plcmtcnt>1, seq=0)
/// or you are holding separate auctions for distinct items in the feed (in which case plcmtcnt=1, seq=>=1)
@property (nonatomic) NSInteger seq;
/// [Required]
/// An array of Asset Objects. Any objects bid response must comply with the array of elements expressed in the bid request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// [Integer]
/// Whether the supply source / impression supports returning an assetsurl instead of an asset object. 0 or the absence of the field indicates no such support.
@property (nonatomic) NSInteger aurlsupport;
/// [Integer]
/// Whether the supply source / impression supports returning a dco url instead of an asset object. 0 or the absence of the field indicates no such support.
/// Beta feature.
@property (nonatomic) NSInteger durlsupport;
/// Specifies what type of event objects tracking is supported - see Event Trackers Request Object
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// [Recommended]
/// [Integer]
/// Set to 1 when the native ad supports buyer-specific privacy notice. Set to 0 (or field absent) when the native ad doesn’t support custom privacy links or if support is unknown.
@property (nonatomic) NSInteger privacy;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeMarkupRequestObject</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Creates a copy of the current <code>NativeMarkupRequestObject</code> instance.
/// \param zone An optional zone for the copy operation.
///
///
/// returns:
/// A copy of the <code>NativeMarkupRequestObject</code> instance.
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Converts the <code>NativeMarkupRequestObject</code> instance to a JSON dictionary.
///
/// returns:
/// A dictionary representation of the <code>NativeMarkupRequestObject</code> instance.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable jsonDictionary;
/// Converts the <code>NativeMarkupRequestObject</code> instance to a JSON string.
///
/// throws:
/// An error if the conversion to JSON string fails.
///
/// returns:
/// A JSON string representation of the <code>NativeMarkupRequestObject</code> instance.
- (NSString * _Nullable)toJsonStringWithError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


/// Represents parameters for a native ad request, including assets, event trackers, and configuration settings.
SWIFT_CLASS("_TtC12PrebidMobile16NativeParameters")
@interface NativeParameters : NSObject
/// An array of <code>NativeAsset</code> objects representing the assets required for the native ad request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// An array of <code>NativeEventTracker</code> objects specifying the event tracking settings for the native ad.
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// The version of the native ad specification being used. Defaults to “1.2”.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The context in which the ad appears. See <code>ContextType</code> for possible values.
@property (nonatomic, strong) ContextType * _Nullable context;
/// A more detailed context in which the ad appears. See <code>ContextSubType</code> for possible values.
@property (nonatomic, strong) ContextSubType * _Nullable contextSubType;
/// The design/format/layout of the ad unit being offered. See <code>PlacementType</code> for possible values.
@property (nonatomic, strong) PlacementType * _Nullable placementType;
/// The number of identical placements in the ad layout. Defaults to 1.
@property (nonatomic) NSInteger placementCount;
/// The sequence number of the ad. Defaults to 0.
@property (nonatomic) NSInteger sequence;
/// Indicates whether the supply source/impression supports returning an <code>assetsurl</code> instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger asseturlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger durlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger privacy;
/// A placeholder for custom JSON agreed to by the parties to support flexibility beyond the standard specification.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A class representing a native request for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile13NativeRequest")
@interface NativeRequest : AdUnit
/// The version of the native ad specification being used. Defaults to “1.2” if not set.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The context in which the ad appears. See <code>ContextType</code> for possible values.
@property (nonatomic, strong) ContextType * _Nullable context;
/// A more detailed context in which the ad appears. See <code>ContextSubType</code> for possible values.
@property (nonatomic, strong) ContextSubType * _Nullable contextSubType;
/// The design/format/layout of the ad unit being offered. See <code>PlacementType</code> for possible values.
@property (nonatomic, strong) PlacementType * _Nullable placementType;
/// The number of identical placements in the ad layout. Defaults to 1 if not set.
@property (nonatomic) NSInteger placementCount;
/// The sequence number of the ad. Defaults to 0 if not set.
@property (nonatomic) NSInteger sequence;
/// An array of <code>NativeAsset</code> objects representing the assets required for the native ad request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// Indicates whether the supply source/impression supports returning an <code>assetsurl</code> instead of an asset object.
/// Defaults to 0 if not set.
@property (nonatomic) NSInteger asseturlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0 if not set.
@property (nonatomic) NSInteger durlsupport;
/// An array of <code>NativeEventTracker</code> objects specifying the event tracking settings for the native ad.
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// Indicates whether the native ad supports a buyer-specific privacy notice. Defaults to 0 if not set.
@property (nonatomic) NSInteger privacy;
/// A placeholder for custom JSON agreed to by the parties to support flexibility beyond the standard specification.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// The configuration ID for the ad unit.
@property (nonatomic, copy) NSString * _Nonnull configId;
/// Initializes a <code>NativeRequest</code> with a specified configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>NativeRequest</code> with a specified configuration ID, assets, and event trackers.
/// \param configId The configuration ID for the ad unit.
///
/// \param assets An optional array of <code>NativeAsset</code> objects.
///
/// \param eventTrackers An optional array of <code>NativeEventTracker</code> objects.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId assets:(NSArray<NativeAsset *> * _Nullable)assets eventTrackers:(NSArray<NativeEventTracker *> * _Nullable)eventTrackers;
/// Adds an array of native assets to the request. If assets already exist, they will be appended.
/// \param assets An array of <code>NativeAsset</code> objects to add.
///
- (void)addNativeAssets:(NSArray<NativeAsset *> * _Nonnull)assets;
/// Adds an array of native event trackers to the request. If event trackers already exist, they will be appended.
/// \param eventTrackers An array of <code>NativeEventTracker</code> objects to add.
///
- (void)addNativeEventTracker:(NSArray<NativeEventTracker *> * _Nonnull)eventTrackers;
/// Retrieves the native request object as a JSON dictionary.
///
/// returns:
/// A dictionary representation of the native request object, or <code>nil</code> if an error occurs.
- (NSDictionary * _Nullable)getNativeRequestObject SWIFT_WARN_UNUSED_RESULT;
@end


/// Represents the title element in a native ad, including optional text and length.
SWIFT_CLASS("_TtC12PrebidMobile11NativeTitle")
@interface NativeTitle : NSObject
/// The text associated with the text element.
@property (nonatomic, copy) NSString * _Nullable text;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeTitle</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON representation of the title.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>NativeTitle</code> object with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, PBMNetworkType, "NetworkType", open) {
  PBMNetworkTypeUnknown = 0,
  PBMNetworkTypeWifi = 2,
  PBMNetworkTypeCelluar = 3,
  PBMNetworkTypeOffline = 4,
};

@class PBMErrorType;
enum PBMErrorCode : NSInteger;

SWIFT_CLASS("_TtC12PrebidMobile8PBMError")
@interface PBMError : NSError
@property (nonatomic, readonly, copy) NSString * _Nullable message;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
+ (PBMError * _Nonnull)errorWithMessage:(NSString * _Nonnull)message type:(PBMErrorType * _Nonnull)type SWIFT_WARN_UNUSED_RESULT;
+ (PBMError * _Nonnull)errorWithDescription:(NSString * _Nonnull)description SWIFT_WARN_UNUSED_RESULT;
+ (PBMError * _Nonnull)errorWithDescription:(NSString * _Nonnull)description statusCode:(enum PBMErrorCode)statusCode SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error message:(NSString * _Nonnull)message type:(PBMErrorType * _Nonnull)type;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error description:(NSString * _Nonnull)description;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error description:(NSString * _Nonnull)description statusCode:(enum PBMErrorCode)statusCode;
+ (NSError * _Nonnull)requestInProgress SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidAccountId SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidConfigId SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidSize SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidServerURLInvalid:(NSString * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)serverError:(NSString * _Nonnull)errorBody SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)jsonDictNotFound SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)responseDeserializationFailed SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)blankResponse SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)noWinningBid SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidNoVastTagInMediaData SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithDomain:(NSString * _Nonnull)domain code:(NSInteger)code userInfo:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_UNAVAILABLE;
@end

typedef SWIFT_ENUM(NSInteger, PBMErrorCode, open) {
  PBMErrorCodeGeneralLinear = 400,
  PBMErrorCodeFileNotFound = 401,
  PBMErrorCodeGeneralNonLinearAds = 500,
  PBMErrorCodeGeneral = 700,
  PBMErrorCodeUndefined = 900,
};


SWIFT_CLASS("_TtC12PrebidMobile12PBMErrorType")
@interface PBMErrorType : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull rawValue;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull invalidRequest;)
+ (PBMErrorType * _Nonnull)invalidRequest SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull internalError;)
+ (PBMErrorType * _Nonnull)internalError SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull initError;)
+ (PBMErrorType * _Nonnull)initError SWIFT_METHOD_FAMILY(none) SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull serverError;)
+ (PBMErrorType * _Nonnull)serverError SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile23PBMInterstitialAdLoader_")
@protocol PBMInterstitialAdLoader <InterstitialControllerLoadingDelegate, InterstitialEventLoadingDelegate, PBMAdLoaderProtocol>
- (nonnull instancetype)initWithDelegate:(id <PBMInterstitialAdLoaderDelegate> _Nonnull)delegate eventHandler:(id <PBMPrimaryAdRequesterProtocol> _Nonnull)eventHandler;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile23PBMSwiftMigrationHelper_")
@protocol PBMSwiftMigrationHelper
@end

@class NSURLQueryItem;

SWIFT_CLASS_NAMED("PathBuilder")
@interface PBMPathBuilder : NSObject
+ (NSString * _Nullable)buildURLFor:(NSString * _Nonnull)host path:(NSString * _Nonnull)path queryItems:(NSArray<NSURLQueryItem *> * _Nullable)queryItems SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents different types of placements for native ads.
SWIFT_CLASS("_TtC12PrebidMobile13PlacementType")
@interface PlacementType : SingleContainerInt
/// Placement type indicating the ad appears within feed content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull FeedContent;)
+ (PlacementType * _Nonnull)FeedContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears within atomic content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull AtomicContent;)
+ (PlacementType * _Nonnull)AtomicContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears outside of content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull OutsideContent;)
+ (PlacementType * _Nonnull)OutsideContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears within a recommendation widget.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull RecommendationWidget;)
+ (PlacementType * _Nonnull)RecommendationWidget SWIFT_WARN_UNUSED_RESULT;
/// Placement type for custom placements not predefined in the standard.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull Custom;)
+ (PlacementType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Enum representing various positions on the screen.
/// This enum defines positions that can be used for placing elements within an ad. The positions are typically used to determine where controls or components should be located within the ad’s user interface.
typedef SWIFT_ENUM_NAMED(NSInteger, PBMPosition, "Position", open) {
  PBMPositionUndefined = -1,
  PBMPositionTopLeft = 0,
  PBMPositionTopCenter = 1,
  PBMPositionTopRight = 2,
  PBMPositionCenter = 3,
  PBMPositionBottomLeft = 4,
  PBMPositionBottomCenter = 5,
  PBMPositionBottomRight = 6,
  PBMPositionCustom = 7,
};

@protocol PrebidEventDelegate;
enum PrebidInitializationStatus : NSInteger;
@protocol PrebidMobilePluginRenderer;

/// The <code>Prebid</code> class manages the configuration and initialization of the PrebidMobile SDK.
SWIFT_CLASS("_TtC12PrebidMobile6Prebid")
@interface Prebid : NSObject
/// Indicates whether the timeout value has been updated.
@property (nonatomic) BOOL timeoutUpdated;
/// The Prebid Server account ID.
@property (nonatomic, copy) NSString * _Nonnull prebidServerAccountId;
/// The Prebid auction settings ID.
@property (nonatomic, copy) NSString * _Nullable auctionSettingsId;
/// Enables or disables debug mode.
/// ORTB: bidRequest.test
@property (nonatomic) BOOL pbsDebug;
/// Custom HTTP headers to be sent with requests.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull customHeaders;
/// Stored bid responses identified by bidder names.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull storedBidResponses;
/// Optional Delegate which returns Request and Response Data for further processing
@property (nonatomic, weak) id <PrebidEventDelegate> _Nullable eventDelegate;
/// This property is set by the developer when he is willing to assign the assetID for Native ad.
@property (nonatomic) BOOL shouldAssignNativeAssetID;
/// This property is set by the developer when he is willing to share the location for better ad targeting
@property (nonatomic) BOOL shareGeoLocation;
/// Set the desidered verbosity of the logs
@property (nonatomic, strong) PBMLogLevel * _Nonnull logLevel;
/// The singleton instance of the <code>Prebid</code> class.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Prebid * _Nonnull shared;)
+ (Prebid * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The version of the PrebidMobile SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// The version of the OM SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull omsdkVersion;
/// Custom status endpoint for the Prebid Server.
@property (nonatomic, copy) NSString * _Nullable customStatusEndpoint;
/// Timeout for Prebid requests in milliseconds.
@property (nonatomic) NSInteger timeoutMillis;
/// Dynamic timeout value.
@property (nonatomic, strong) NSNumber * _Nullable timeoutMillisDynamic;
/// Stored auction response.
@property (nonatomic, copy) NSString * _Nullable storedAuctionResponse;
/// Indicates whether the PBS should cache the bid for the rendering API.
/// If the value is true the SDK will make the cache request in order to report
/// the impression event respectively to the legacy analytic setup.
@property (nonatomic) BOOL useCacheForReportingWithRenderingAPI;
/// Controls how long each creative has to load before it is considered a failure.
@property (nonatomic) NSTimeInterval creativeFactoryTimeout;
/// Controls how long video and interstitial creatives have to load before it is considered a failure.
@property (nonatomic) NSTimeInterval creativeFactoryTimeoutPreRenderContent;
/// If set to true, the output of PrebidMobile’s internal logger is written to a text file. This can be helpful for debugging. Defaults to false.
@property (nonatomic) BOOL debugLogFileEnabled;
/// If true, the SDK will periodically try to listen for location updates in order to request location-based ads.
@property (nonatomic) BOOL locationUpdatesEnabled;
/// If true, the sdk will add <code>includewinners</code> flag inside the targeting object described in <a href="https://docs.prebid.org/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting">PBS Documentation</a>
@property (nonatomic) BOOL includeWinners;
/// If true, the sdk will add <code>includebidderkeys</code> flag inside the targeting object described in <a href="https://docs.prebid.org/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting">PBS Documentation</a>
@property (nonatomic) BOOL includeBidderKeys;
/// If true, the SDK will not check the PBS status during initialization. This will save initialization time
/// if the PBS endpoint is always live and handled client side
@property (nonatomic) BOOL shouldDisableStatusCheck;
/// Adds a stored bid response.
/// \param bidder The name of the bidder.
///
/// \param responseId The response ID.
///
- (void)addStoredBidResponseWithBidder:(NSString * _Nonnull)bidder responseId:(NSString * _Nonnull)responseId;
/// Clears all stored bid responses.
- (void)clearStoredBidResponses;
/// Retrieves stored bid responses.
///
/// returns:
/// An array of dictionaries containing stored bid responses, or nil if there are none.
- (NSArray<NSDictionary<NSString *, NSString *> *> * _Nullable)getStoredBidResponses SWIFT_WARN_UNUSED_RESULT;
/// Adds a custom HTTP header.
/// \param name The name of the header.
///
/// \param value The value of the header.
///
- (void)addCustomHeaderWithName:(NSString * _Nonnull)name value:(NSString * _Nonnull)value;
/// Clears all custom HTTP headers.
- (void)clearCustomHeaders;
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param gadMobileAdsObject GADMobileAds object
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL :(id _Nullable)gadMobileAdsObject error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param gadMobileAdsObject GADMobileAds object
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString :(id _Nullable)gadMobileAdsObject error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param gadMobileAdsVersion GADMobileAds version string, use <code>GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)</code> to get it
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL gadMobileAdsVersion:(NSString * _Nullable)gadMobileAdsVersion error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param gadMobileAdsVersion GADMobileAds version string, use <code>GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)</code> to get it
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString gadMobileAdsVersion:(NSString * _Nullable)gadMobileAdsVersion error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Use this SDK initializer if you’re using PrebidMobile without GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Use this SDK initializer if you’re using PrebidMobile without GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (void)registerPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer;
+ (void)unregisterPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer;
+ (BOOL)containsPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer SWIFT_WARN_UNUSED_RESULT;
@end

@class NSData;

@interface Prebid (SWIFT_EXTENSION(PrebidMobile))
- (void)callEventDelegateAsync_prebidBidRequestDidFinishWithRequestData:(NSData * _Nullable)requestData responseData:(NSData * _Nullable)responseData;
@end

@class PrebidRequest;

/// Multiformat ad unit. Built for original API.
SWIFT_CLASS("_TtC12PrebidMobile12PrebidAdUnit")
@interface PrebidAdUnit : NSObject
/// The ad slot identifier for the Prebid ad unit.
@property (nonatomic, copy) NSString * _Nullable pbAdSlot;
/// Initializes a new <code>PrebidAdUnit</code> with the given configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Makes bid request for the specified ad object and request config. Setups targeting keywords into the adObject.
/// \param adObject The ad object to fetch demand for.
///
/// \param request The <code>PrebidRequest</code> containing the demand request parameters.
///
/// \param completion A closure to be called with the <code>BidInfo</code> result.
///
- (void)fetchDemandWithAdObject:(id _Nonnull)adObject request:(PrebidRequest * _Nonnull)request completion:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completion;
/// Makes bid request for the specified request config.
/// \param request The <code>PrebidRequest</code> containing the demand request parameters.
///
/// \param completion A closure to be called with the <code>BidInfo</code> result.
///
- (void)fetchDemandWithRequest:(PrebidRequest * _Nonnull)request completion:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completion;
/// Sets the view in which Prebid will start tracking an impression and activates the impression tracker.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView). This object will be used later for tracking <code>burl</code>.
///
- (void)activatePrebidAdViewImpressionTrackerWithAdView:(UIView * _Nonnull)adView;
/// Activates interstitial impression tracker.
- (void)activatePrebidInterstitialImpressionTracker;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow for the provided ad view.
/// Note: Ensure this method is called within the Google Mobile Ads ad received method
/// (e.g., in the GADBannerViewDelegate’s bannerViewDidReceiveAd or similar callbacks).
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView).
///
- (void)activatePrebidBannerSKAdNetworkStoreKitAdsFlowWithAdView:(UIView * _Nonnull)adView;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow.
/// Note: Ensure this method is called before presenting interstitials.
- (void)activatePrebidInterstitialSKAdNetworkStoreKitAdsFlow;
/// This method allows to set the auto refresh period for the demand
/// \param time refresh time interval
///
- (void)setAutoRefreshMillisWithTime:(double)time;
/// This method stops the auto refresh of demand
- (void)stopAutoRefresh;
/// This method resumes the auto refresh of demand
- (void)resumeAutoRefresh;
/// Attempts to display an <code>SKOverlay</code> over interstitial if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented
- (void)dismissSKOverlayIfAvailable;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile15PrebidConstants")
@interface PrebidConstants : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSArray<PBApi *> * _Nonnull supportedRenderingBannerAPISignals;)
+ (NSArray<PBApi *> * _Nonnull)supportedRenderingBannerAPISignals SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull companionHTMLTemplate;)
+ (NSString * _Nonnull)companionHTMLTemplate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull PREBID_VERSION;)
+ (NSString * _Nonnull)PREBID_VERSION SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull SDK_NAME;)
+ (NSString * _Nonnull)SDK_NAME SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile19PrebidEventDelegate_")
@protocol PrebidEventDelegate
/// Notifies the delegate when a Prebid bid request has finished.
/// This method is called on a global background thread.
/// \param requestData The Prebid Server request data that was sent.
///
/// \param responseData The Prebid Server response data that was received.
///
- (void)prebidBidRequestDidFinishWithRequestData:(NSData * _Nullable)requestData responseData:(NSData * _Nullable)responseData;
@end


SWIFT_CLASS("_TtC12PrebidMobile22PrebidImagesRepository")
@interface PrebidImagesRepository : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull muteDisabled;)
+ (NSString * _Nonnull)muteDisabled SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull muteEnabled;)
+ (NSString * _Nonnull)muteEnabled SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull closeButton;)
+ (NSString * _Nonnull)closeButton SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull skipButton;)
+ (NSString * _Nonnull)skipButton SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing the initialization status of the Prebid SDK.
/// This enum provides various statuses that indicate the result of the Prebid SDK initialization process. It helps in understanding whether the SDK was successfully initialized or if there were issues during the initialization.
typedef SWIFT_ENUM(NSInteger, PrebidInitializationStatus, open) {
/// Prebid SDK successfully initialized.
  PrebidInitializationStatusSucceeded = 0,
/// Prebid SDK is not able to work.
  PrebidInitializationStatusFailed = 1,
/// Something went wrong during PBS status checking.
  PrebidInitializationStatusServerStatusWarning = 2,
/// Prebid SDK skipped status checking.
  PrebidInitializationStatusServerStatusSkipped = 3,
};


SWIFT_CLASS("_TtC12PrebidMobile15PrebidJSLibrary")
@interface PrebidJSLibrary : NSObject
@property (nonatomic, copy) NSString * _Nullable downloadURLString;
@property (nonatomic, copy) NSString * _Nonnull name;
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name downloadURLString:(NSString * _Nullable)downloadURLString OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile22PrebidJSLibraryManager")
@interface PrebidJSLibraryManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidJSLibraryManager * _Nonnull shared;)
+ (PrebidJSLibraryManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (void)downloadLibraries;
- (NSString * _Nullable)getMRAIDLibrary SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getOMSDKLibrary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A protocol defining methods for logging messages at various levels.
/// Implement this protocol to handle logging in a customizable way.
SWIFT_PROTOCOL("_TtP12PrebidMobile12PrebidLogger_")
@protocol PrebidLogger
/// Logs an error message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs an informational message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a debug message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a verbose message, typically used for detailed or low-level information.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a warning message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a severe error message, indicating a critical issue.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs the current location in the code.
/// \param filename The name of the file where this method was called.
///
/// \param line The line number where this method was called.
///
/// \param function The function name where this method was called.
///
- (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
@end


/// This protocol is dedicated to manage the work with Mediation SDKs.
SWIFT_PROTOCOL("_TtP12PrebidMobile23PrebidMediationDelegate_")
@protocol PrebidMediationDelegate
/// Puts to ad object’s localExtra the ad object (winning bid or native ad) and configId
/// and populates adObject’s keywords by targeting info
/// @return YES on success and NO otherwise (when the passed ad has wrong type)
- (BOOL)setUpAdObjectWith:(NSDictionary<NSString *, id> * _Nonnull)values SWIFT_WARN_UNUSED_RESULT;
/// Removes an bid info from ad object’s localExtra
/// and prebid-specific keywords from ad object’s keywords
- (void)cleanUpAdObject;
/// Returns ad view that was passed into PrebidMediationDelegate earlier.
/// Returns nil if there was no view passed.
- (UIView * _Nullable)getAdView SWIFT_WARN_UNUSED_RESULT;
@end



/// Global singleton responsible to store plugin renderer instances
SWIFT_CLASS("_TtC12PrebidMobile26PrebidMobilePluginRegister")
@interface PrebidMobilePluginRegister : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidMobilePluginRegister * _Nonnull shared;)
+ (PrebidMobilePluginRegister * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// Default PrebidMobile SDK renderer
@property (nonatomic, readonly, strong) id <PrebidMobilePluginRenderer> _Nonnull sdkRenderer;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Register plugin as renderer
- (void)registerPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer;
- (void)unregisterPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer;
/// Contains plugin
- (BOOL)containsPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer SWIFT_WARN_UNUSED_RESULT;
/// Register event delegate
- (void)registerEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Unregister event delegate
- (void)unregisterEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Returns the registered renderer according to the preferred renderer name in the bid response.
/// If no preferred renderer is found, it returns PrebidRenderer to perform default behavior.
/// Once bid is win we want to resolve the best PluginRenderer candidate to render the ad.
- (id <PrebidMobilePluginRenderer> _Nonnull)getPluginForPreferredRendererWithBid:(Bid * _Nonnull)bid SWIFT_WARN_UNUSED_RESULT;
- (NSArray<id <PrebidMobilePluginRenderer>> * _Nonnull)getAllPlugins SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSDictionary<NSString *, id> *> * _Nonnull)getAllPluginsJSONRepresentation SWIFT_WARN_UNUSED_RESULT;
@end

@protocol PrebidMobileDisplayViewProtocol;

/// A protocol for the plugin renderer, defining the basic interface that any renderer should implement.
/// This protocol provides the ability to retrieve plugin details, support rendering formats, and manage event delegates and
/// methods for creating custom banner view and insterstitial controller.
SWIFT_PROTOCOL("_TtP12PrebidMobile26PrebidMobilePluginRenderer_")
@protocol PrebidMobilePluginRenderer
/// The name of the plugin renderer. This is used to identify the plugin.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The version of the plugin renderer.
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// Custom data to be included in the ORTB request.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable data;
@optional
/// Register a listener related to a specific ad unit config fingerprint in order to dispatch specific ad events.
- (void)registerEventDelegateWithPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Unregister a listener related to a specific ad unit config fingerprint in order to dispatch specific ad events.
- (void)unregisterEventDelegateWithPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
@required
/// Creates and returns an ad view conforming to <code>PrebidMobileDisplayViewManagerProtocol</code> for a given bid response.
/// Returns nil in the case of an internal error or if no renderer is provided.
/// \param frame The frame specifying the initial size and position of the ad view.
///
/// \param bid The <code>Bid</code> object containing the bid response used for rendering the ad.
///
/// \param adConfiguration The <code>AdUnitConfig</code> instance providing configuration details for the ad unit.
///
/// \param loadingDelegate The delegate conforming to <code>DisplayViewLoadingDelegate</code> for handling ad loading events.
///
/// \param interactionDelegate The  delegate conforming to <code>DisplayViewInteractionDelegate</code> for handling ad interaction events.
///
- (UIView <PrebidMobileDisplayViewProtocol> * _Nullable)createBannerViewWith:(CGRect)frame bid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <DisplayViewLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <DisplayViewInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
/// Creates and returns an implementation of <code>PrebidMobileInterstitialControllerProtocol</code> for a given bid response.
/// Returns nil in the case of an internal error or if no renderer is provided.
/// \param bid The <code>Bid</code> object containing the bid response used for rendering the interstitial ad.
///
/// \param adConfiguration The <code>AdUnitConfig</code> instance providing configuration details for the ad unit.
///
/// \param loadingDelegate The delegate for handling interstitial ad loading events.
///
/// \param interactionDelegate The delegate for handling user interactions with the interstitial ad.
///
- (id <PrebidMobileInterstitialControllerProtocol> _Nullable)createInterstitialControllerWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <InterstitialControllerLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <InterstitialControllerInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile14PrebidRenderer")
@interface PrebidRenderer : NSObject <PrebidMobilePluginRenderer>
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable data;
- (UIView <PrebidMobileDisplayViewProtocol> * _Nullable)createBannerViewWith:(CGRect)frame bid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <DisplayViewLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <DisplayViewInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
- (id <PrebidMobileInterstitialControllerProtocol> _Nullable)createInterstitialControllerWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <InterstitialControllerLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <InterstitialControllerInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Class that contains properties and methods to configure Prebid request.
SWIFT_CLASS("_TtC12PrebidMobile13PrebidRequest")
@interface PrebidRequest : NSObject
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// A flag that determines whether SKOverlay should be supported for interstitials
@property (nonatomic) BOOL supportSKOverlayForInterstitial;
/// Initializes a new <code>PrebidRequest</code> with the given parameters.
/// \param bannerParameters The banner parameters for the ad request.
///
/// \param videoParameters The video parameters for the ad request.
///
/// \param nativeParameters The native parameters for the ad request.
///
/// \param isInterstitial Indicates if the request is for an interstitial ad.
///
/// \param isRewarded Indicates if the request is for a rewarded ad.
///
- (nonnull instancetype)initWithBannerParameters:(BannerParameters * _Nullable)bannerParameters videoParameters:(VideoParameters * _Nullable)videoParameters nativeParameters:(NativeParameters * _Nullable)nativeParameters isInterstitial:(BOOL)isInterstitial isRewarded:(BOOL)isRewarded OBJC_DESIGNATED_INITIALIZER;
/// Sets the GPID for the ad request.
/// \param gpid The GPID to set.
///
- (void)setGPID:(NSString * _Nullable)gpid;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile12PrebidReward")
@interface PrebidReward : NSObject
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic, strong) NSNumber * _Nullable count;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class PBMUserAgentService;
@class PrebidServerResponse;

SWIFT_PROTOCOL("_TtP12PrebidMobile30PrebidServerConnectionProtocol_")
@protocol PrebidServerConnectionProtocol
@property (nonatomic, readonly, strong) PBMUserAgentService * _Nonnull userAgentService;
- (void)fireAndForget:(NSString * _Nullable)resourceURL;
- (void)head:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)get:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL contentType:(NSString * _Nullable)contentType data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)download:(NSString * _Nullable)resourceURL callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
@end

@class NSURLProtocol;

SWIFT_CLASS("_TtC12PrebidMobile22PrebidServerConnection")
@interface PrebidServerConnection : NSObject <NSURLSessionDelegate, PrebidServerConnectionProtocol>
@property (nonatomic, readonly, strong) PBMUserAgentService * _Nonnull userAgentService;
@property (nonatomic, copy) NSArray<SWIFT_METATYPE(NSURLProtocol)> * _Nonnull protocolClasses;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidServerConnection * _Nonnull shared;)
+ (PrebidServerConnection * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull userAgentHeaderKey;)
+ (NSString * _Nonnull)userAgentHeaderKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull contentTypeKey;)
+ (NSString * _Nonnull)contentTypeKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull contentTypeVal;)
+ (NSString * _Nonnull)contentTypeVal SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull internalIDKey;)
+ (NSString * _Nonnull)internalIDKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull isPBMRequestKey;)
+ (NSString * _Nonnull)isPBMRequestKey SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithUserAgentService:(PBMUserAgentService * _Nonnull)userAgentService;
- (void)fireAndForget:(NSString * _Nullable)resourceURL;
- (void)head:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)get:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL contentType:(NSString * _Nullable)contentType data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)download:(NSString * _Nullable)resourceURL callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@class PBMServerEvent;

SWIFT_CLASS("_TtC12PrebidMobile24PrebidServerEventTracker")
@interface PrebidServerEventTracker : NSObject <PBMEventTrackerProtocol>
@property (nonatomic, readonly, copy) NSArray<PBMServerEvent *> * _Nonnull serverEvents;
- (nonnull instancetype)initWithServerEvents:(NSArray<PBMServerEvent *> * _Nonnull)serverEvents OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (void)addServerEvents:(NSArray<PBMServerEvent *> * _Nonnull)serverEvents;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile20PrebidServerResponse")
@interface PrebidServerResponse : NSObject
@property (nonatomic, readonly) BOOL isOKStatusCode;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable jsonDict;
@property (nonatomic, copy) NSData * _Nullable rawData;
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable requestHeaders;
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable responseHeaders;
@property (nonatomic, copy) NSString * _Nullable requestURL;
@property (nonatomic) NSError * _Nullable error;
@property (nonatomic) NSInteger statusCode;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS_NAMED("Reachability")
@interface PBMReachability : NSObject
/// Shared instance for checking whether the default route is available.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMReachability * _Nonnull shared;)
+ (PBMReachability * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) enum PBMNetworkType currentReachabilityStatus;
/// Returns true is network is reachable otherwise returns false
@property (nonatomic, readonly) BOOL isNetworkReachable;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)stopNotifier;
/// Starts monitoring of the network status.
/// Calls the reachableBlock when network is restored
- (void)onNetworkRestored:(void (^ _Nonnull)(PBMReachability * _Nullable))reachableBlock;
@end

/// Enum representing the result codes for various operations within the Prebid SDK.
/// This enum provides a range of result codes indicating different outcomes or errors that may occur during SDK operations. Each case corresponds to a specific result or error, which helps in diagnosing issues and understanding the status of SDK operations.
typedef SWIFT_ENUM(NSInteger, ResultCode, open) {
/// The demand fetch request was successful.
  ResultCodePrebidDemandFetchSuccess = 0,
/// The Prebid server was not specified in the request.
  ResultCodePrebidServerNotSpecified = 1,
/// The account ID provided is not recognized by the Prebid server.
  ResultCodePrebidInvalidAccountId = 2,
/// The config ID provided is not recognized by the Prebid server.
  ResultCodePrebidInvalidConfigId = 3,
/// The size requested is not recognized by the Prebid server.
  ResultCodePrebidInvalidSize = 4,
/// There was a network error during the operation.
  ResultCodePrebidNetworkError = 5,
/// The Prebid server encountered an error while processing the request.
  ResultCodePrebidServerError = 6,
/// The Prebid server did not return any bids.
  ResultCodePrebidDemandNoBids = 7,
/// The demand request timed out.
  ResultCodePrebidDemandTimedOut = 8,
/// The URL of the Prebid server is invalid.
  ResultCodePrebidServerURLInvalid = 9,
/// An unknown error occurred within the Prebid SDK.
  ResultCodePrebidUnknownError = 10,
/// The structure of the response received is invalid.
  ResultCodePrebidInvalidResponseStructure = 1000,
/// An internal error occurred within the SDK.
  ResultCodePrebidInternalSDKError = 7000,
/// Incorrect arguments were provided to the SDK.
  ResultCodePrebidWrongArguments = 7001,
/// No VAST tag was found in the media data.
  ResultCodePrebidNoVastTagInMediaData = 7002,
/// Misuse of the SDK was detected.
  ResultCodePrebidSDKMisuse = 8000,
/// SDK misuse due to a previous fetch operation not being completed yet.
  ResultCodePrebidSDKMisusePreviousFetchNotCompletedYet = 8001,
/// The Prebid request does not contain any parameters.
  ResultCodePrebidInvalidRequest = 8002,
};

@protocol RewardedAdUnitDelegate;

/// Represents an rewarded ad unit. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile14RewardedAdUnit")
@interface RewardedAdUnit : NSObject
/// A delegate for handling interactions with the ad unit.
@property (nonatomic, weak) id <RewardedAdUnitDelegate> _Nullable delegate;
/// A Boolean value indicating whether the ad unit is ready to be displayed.
@property (nonatomic, readonly) BOOL isReady;
/// The set of ad formats supported by this ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// The banner parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// The area of the close button in the video controls as a percentage.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video controls.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// A Boolean value indicating whether the video controls are muted.
@property (nonatomic) BOOL isMuted;
/// A Boolean value indicating whether the sound button is visible in the video controls.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Initializes a new <code>BaseInterstitialAdUnit</code> with the specified configuration ID.
/// \param configID The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and minimum size percentage.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id _Nullable)eventHandler;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID, minimum size percentage, and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage eventHandler:(id _Nonnull)eventHandler;
/// Loads a new ad.
- (void)loadAd;
/// Shows the ad from a specified view controller.
/// note:
/// This method must be called on the main thread.
/// \param controller The view controller from which the ad will be presented.
///
- (void)showFrom:(UIViewController * _Nonnull)controller;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Protocol for interaction with the RewardedAdUnit
/// All messages will be invoked on the main thread.
SWIFT_PROTOCOL("_TtP12PrebidMobile22RewardedAdUnitDelegate_")
@protocol RewardedAdUnitDelegate <NSObject>
@optional
/// Called when an ad is loaded and ready for display
- (void)rewardedAdDidReceiveAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when user is able to receive a reward from the app
- (void)rewardedAdUserDidEarnReward:(RewardedAdUnit * _Nonnull)rewardedAd reward:(PrebidReward * _Nonnull)reward;
/// Called when the load process fails to produce a viable ad
- (void)rewardedAd:(RewardedAdUnit * _Nonnull)rewardedAd didFailToReceiveAdWithError:(NSError * _Nullable)error;
/// Called when the interstitial view will be launched,  as a result of show() method.
- (void)rewardedAdWillPresentAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when the interstial is dismissed by the user
- (void)rewardedAdDidDismissAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when an ad causes the sdk to leave the app
- (void)rewardedAdWillLeaveApplication:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when user clicked the ad
- (void)rewardedAdDidClickAd:(RewardedAdUnit * _Nonnull)rewardedAd;
@end


SWIFT_CLASS_NAMED("RewardedConfig")
@interface PBMRewardedConfig : NSObject
@property (nonatomic, readonly, strong) PrebidReward * _Nullable reward;
@property (nonatomic, readonly, strong) NSNumber * _Nullable bannerTime;
@property (nonatomic, readonly, copy) NSString * _Nullable bannerEvent;
@property (nonatomic, readonly, strong) NSNumber * _Nullable videoTime;
@property (nonatomic, readonly, copy) NSString * _Nullable videoPlaybackevent;
@property (nonatomic, readonly, strong) NSNumber * _Nullable endcardTime;
@property (nonatomic, readonly, copy) NSString * _Nullable endcardEvent;
@property (nonatomic, readonly, copy) NSString * _Nullable closeAction;
@property (nonatomic, readonly, strong) NSNumber * _Nullable postRewardTime;
/// The timeout duration for rewarded completion, measured in seconds.
@property (nonatomic, readonly, strong) NSNumber * _Nonnull defaultCompletionTime;
/// The playback event when the SDK should send a signal to the application that the user has earned the reward
@property (nonatomic, readonly, copy) NSString * _Nonnull defaultVideoPlaybackEvent;
- (nonnull instancetype)initWithOrtbRewarded:(PBMORTBRewardedConfiguration * _Nullable)ortbRewarded OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol RewardedEventInteractionDelegate;

/// A protocol for handling events related to rewarded ads.
/// This protocol extends <code>PBMInterstitialAd</code> and defines properties for delegates that handle events related to the ad server communication and user interactions with rewarded ads. Implementing this protocol allows for custom handling of these events within the rewarded ad lifecycle.
SWIFT_PROTOCOL("_TtP12PrebidMobile28RewardedEventHandlerProtocol_")
@protocol RewardedEventHandlerProtocol <PBMInterstitialAd>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <RewardedEventInteractionDelegate> _Nullable interactionDelegate;
@end


SWIFT_CLASS("_TtC12PrebidMobile30RewardedEventHandlerStandalone")
@interface RewardedEventHandlerStandalone : NSObject <RewardedEventHandlerProtocol>
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <RewardedEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, readonly) BOOL isReady;
- (void)showFromViewController:(UIViewController * _Nullable)controller;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile32RewardedEventInteractionDelegate_")
@protocol RewardedEventInteractionDelegate <InterstitialEventInteractionDelegate>
/// Call this when the ad server SDK decides the user has earned reward
- (void)userDidEarnReward:(PrebidReward * _Nullable)reward;
@end


/// Represents an rewarded ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile19RewardedVideoAdUnit")
@interface RewardedVideoAdUnit : AdUnit <PBMVideoBasedAdUnitProtocol>
/// Property for video parameters.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// Initializes a <code>RewardedVideoAdUnit</code> with the given configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>RewardedVideoAdUnit</code> with the given configuration ID and minimum size percentages.
/// \param configId The configuration ID for the ad unit.
///
/// \param minWidthPerc The minimum width percentage for the ad unit.
///
/// \param minHeightPerc The minimum height percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId minWidthPerc:(NSInteger)minWidthPerc minHeightPerc:(NSInteger)minHeightPerc;
/// Attempts to display an <code>SKOverlay</code> if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented
- (void)dismissSKOverlayIfAvailable;
@end


/// A logger implementation for Prebid SDK that logs messages to the console.
SWIFT_CLASS("_TtC12PrebidMobile16SDKConsoleLogger")
@interface SDKConsoleLogger : NSObject <PrebidLogger>
- (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SKOverlayManager")
@interface PBMSKOverlayManager : NSObject
- (nonnull instancetype)initWithViewControllerForPresentation:(UIViewController * _Nonnull)viewControllerForPresentation OBJC_DESIGNATED_INITIALIZER;
- (void)presentSKOverlayWith:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo isCompanionAd:(BOOL)isCompanionAd;
- (void)dismissSKOverlay;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("ServerEvent")
@interface PBMServerEvent : NSObject
- (nonnull instancetype)initWithUrl:(NSString * _Nonnull)url expectedEventType:(enum PBMTrackingEvent)expectedEventType OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A class containing constants related to OpenRTB signals.
/// This class provides static constants and values representing different
/// API frameworks, playback methods, protocols, start delays, and video
/// placement types as defined in the OpenRTB specification.
SWIFT_CLASS("_TtC12PrebidMobile7Signals")
@interface Signals : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - API Frameworks</h1>
/// \code
/// | Value | Description |
/// |-------|-------------|
/// | 1     | VPAID 1.0   |
/// | 2     | VPAID 2.0   |
/// | 3     | MRAID-1     |
/// | 4     | ORMMA       |
/// | 5     | MRAID-2     |
/// | 6     | MRAID-3     |
/// | 7     | OMID-1      |
///
/// \endcode
SWIFT_CLASS_NAMED("Api")
@interface PBApi : SingleContainerInt
/// VPAID 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull VPAID_1;)
+ (PBApi * _Nonnull)VPAID_1 SWIFT_WARN_UNUSED_RESULT;
/// VPAID 2.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull VPAID_2;)
+ (PBApi * _Nonnull)VPAID_2 SWIFT_WARN_UNUSED_RESULT;
/// MRAID-1
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_1;)
+ (PBApi * _Nonnull)MRAID_1 SWIFT_WARN_UNUSED_RESULT;
/// ORMMA
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull ORMMA;)
+ (PBApi * _Nonnull)ORMMA SWIFT_WARN_UNUSED_RESULT;
/// MRAID-2
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_2;)
+ (PBApi * _Nonnull)MRAID_2 SWIFT_WARN_UNUSED_RESULT;
/// MRAID-3
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_3;)
+ (PBApi * _Nonnull)MRAID_3 SWIFT_WARN_UNUSED_RESULT;
/// OMID-1
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull OMID_1;)
+ (PBApi * _Nonnull)OMID_1 SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Playback Methods</h1>
/// \code
/// | Value | Description                                              |
/// |-------|----------------------------------------------------------|
/// | 1     | Initiates on Page Load with Sound On                     |
/// | 2     | Initiates on Page Load with Sound Off by Default         |
/// | 3     | Initiates on Click with Sound On                         |
/// | 4     | Initiates on Mouse-Over with Sound On                    |
/// | 5     | Initiates on Entering Viewport with Sound On             |
/// | 6     | Initiates on Entering Viewport with Sound Off by Default |
///
/// \endcode
SWIFT_CLASS_NAMED("PlaybackMethod")
@interface PBPlaybackMethod : SingleContainerInt
/// Initiates on Page Load with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull AutoPlaySoundOn;)
+ (PBPlaybackMethod * _Nonnull)AutoPlaySoundOn SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Page Load with Sound Off by Default
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull AutoPlaySoundOff;)
+ (PBPlaybackMethod * _Nonnull)AutoPlaySoundOff SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Click with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull ClickToPlay;)
+ (PBPlaybackMethod * _Nonnull)ClickToPlay SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Mouse-Over with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull MouseOver;)
+ (PBPlaybackMethod * _Nonnull)MouseOver SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Entering Viewport with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull EnterSoundOn;)
+ (PBPlaybackMethod * _Nonnull)EnterSoundOn SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Entering Viewport with Sound Off by Default
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull EnterSoundOff;)
+ (PBPlaybackMethod * _Nonnull)EnterSoundOff SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Protocols</h1>
/// \code
/// | Value | Description       |
/// |-------|-------------------|
/// | 1     | VAST 1.0          |
/// | 2     | VAST 2.0          |
/// | 3     | VAST 3.0          |
/// | 4     | VAST 1.0 Wrapper  |
/// | 5     | VAST 2.0 Wrapper  |
/// | 6     | VAST 3.0 Wrapper  |
/// | 7     | VAST 4.0          |
/// | 8     | VAST 4.0 Wrapper  |
/// | 9     | DAAST 1.0         |
/// | 10    | DAAST 1.0 Wrapper |
///
/// \endcode
SWIFT_CLASS_NAMED("Protocols")
@interface PBProtocols : SingleContainerInt
/// VAST 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_1_0;)
+ (PBProtocols * _Nonnull)VAST_1_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 2.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_2_0;)
+ (PBProtocols * _Nonnull)VAST_2_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 3.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_3_0;)
+ (PBProtocols * _Nonnull)VAST_3_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 1.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_1_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_1_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 2.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_2_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_2_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 3.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_3_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_3_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 4.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_4_0;)
+ (PBProtocols * _Nonnull)VAST_4_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 4.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_4_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_4_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// DAAST 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull DAAST_1_0;)
+ (PBProtocols * _Nonnull)DAAST_1_0 SWIFT_WARN_UNUSED_RESULT;
/// DAAST 1.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull DAAST_1_0_WRAPPER;)
+ (PBProtocols * _Nonnull)DAAST_1_0_WRAPPER SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Start Delay</h1>
/// \code
/// | Value | Description                                      |
/// |-------|--------------------------------------------------|
/// | > 0   | Mid-Roll (value indicates start delay in second) |
/// | 0     | Pre-Roll                                         |
/// | -1    | Generic Mid-Roll                                 |
/// | -2    | Generic Post-Roll                                |
///
/// \endcode
SWIFT_CLASS_NAMED("StartDelay")
@interface PBStartDelay : SingleContainerInt
/// Pre-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull PreRoll;)
+ (PBStartDelay * _Nonnull)PreRoll SWIFT_WARN_UNUSED_RESULT;
/// Generic Mid-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull GenericMidRoll;)
+ (PBStartDelay * _Nonnull)GenericMidRoll SWIFT_WARN_UNUSED_RESULT;
/// Generic Post-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull GenericPostRoll;)
+ (PBStartDelay * _Nonnull)GenericPostRoll SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Video Placement Types</h1>
/// \code
/// | Value | Description                  |
/// |-------|------------------------------|
/// | 1     | In-Stream                    |
/// | 2     | In-Banner                    |
/// | 3     | In-Article                   |
/// | 4     | In-Feed                      |
/// | 5     | Interstitial/Slider/Floating |
///
/// \endcode
SWIFT_CLASS_NAMED("Placement")
@interface PBPlacement : SingleContainerInt
/// In-Stream
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InStream;)
+ (PBPlacement * _Nonnull)InStream SWIFT_WARN_UNUSED_RESULT;
/// In-Banner
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InBanner;)
+ (PBPlacement * _Nonnull)InBanner SWIFT_WARN_UNUSED_RESULT;
/// In-Article
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InArticle;)
+ (PBPlacement * _Nonnull)InArticle SWIFT_WARN_UNUSED_RESULT;
/// In-Feed
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InFeed;)
+ (PBPlacement * _Nonnull)InFeed SWIFT_WARN_UNUSED_RESULT;
/// Interstitial
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Interstitial;)
+ (PBPlacement * _Nonnull)Interstitial SWIFT_WARN_UNUSED_RESULT;
/// Slider
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Slider;)
+ (PBPlacement * _Nonnull)Slider SWIFT_WARN_UNUSED_RESULT;
/// Floating
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Floating;)
+ (PBPlacement * _Nonnull)Floating SWIFT_WARN_UNUSED_RESULT;
/// Helper function
+ (PBPlacement * _Nullable)getPlacementByRawValue:(NSInteger)value SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Updated Video Placement Types</h1>
/// \code
/// | Value | Description                  |
/// |-------|------------------------------|
/// | 1     | Instream                     |
/// | 2     | Accompanying Content         |
/// | 3     | Interstitial                 |
/// | 4     | No Content/Standalone        |
///
/// \endcode
SWIFT_CLASS_NAMED("Plcmnt")
@interface PBPlcmnt : SingleContainerInt
/// Instream
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Instream;)
+ (PBPlcmnt * _Nonnull)Instream SWIFT_WARN_UNUSED_RESULT;
/// AccompanyingContent
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull AccompanyingContent;)
+ (PBPlcmnt * _Nonnull)AccompanyingContent SWIFT_WARN_UNUSED_RESULT;
/// Interstitial
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Interstitial;)
+ (PBPlcmnt * _Nonnull)Interstitial SWIFT_WARN_UNUSED_RESULT;
/// NoContent
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull NoContent;)
+ (PBPlcmnt * _Nonnull)NoContent SWIFT_WARN_UNUSED_RESULT;
/// Standalone
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Standalone;)
+ (PBPlcmnt * _Nonnull)Standalone SWIFT_WARN_UNUSED_RESULT;
/// Helper function
+ (PBPlcmnt * _Nullable)getPlacementByRawValue:(NSInteger)value SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Creative Attributes</h1>
/// \code
/// | Value | Description                                                                |
/// |-------|----------------------------------------------------------------------------|
/// | 1     | Audio Ad (Autoplay)                                                        |
/// | 2     | Audio Ad (User Initiated)                                                  |
/// | 3     | Expandable (Automatic)                                                     |
/// | 4     | Expandable (User Initiated - Click)                                        |
/// | 5     | Expandable (User Initiated - Rollover)                                     |
/// | 6     | In-Banner Video Ad (Autoplay)                                              |
/// | 7     | In-Banner Video Ad (User Initiated)                                        |
/// | 8     | Pop (e.g., Over, Under, or Upon Exit)                                      |
/// | 9     | Provocative or Suggestive Imagery                                          |
/// | 10    | Shaky, Flashing, Flickering, Extreme Animation, Smileys                    |
/// | 11    | Surveys                                                                    |
/// | 12    | Text Only                                                                  |
/// | 13    | User Interactive (e.g., Embedded Games)                                    |
/// | 14    | Windows Dialog or Alert Style                                              |
/// | 15    | Has Audio On/Off Button                                                    |
/// | 16    | Ad Provides Skip Button (e.g. VPAID-rendered skip button on pre-roll video)|
/// | 17    | Adobe Flash                                                                |
///
/// \endcode
SWIFT_CLASS_NAMED("CreativeAttribute")
@interface PBCreativeAttribute : SingleContainerInt
/// Audio Ad (Autoplay)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioAd_Autoplay;)
+ (PBCreativeAttribute * _Nonnull)AudioAd_Autoplay SWIFT_WARN_UNUSED_RESULT;
/// Audio Ad (User Initiated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioAd_UserInitiated;)
+ (PBCreativeAttribute * _Nonnull)AudioAd_UserInitiated SWIFT_WARN_UNUSED_RESULT;
/// Expandable (Automatic)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Automatic;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Automatic SWIFT_WARN_UNUSED_RESULT;
/// Expandable (User Initiated - Click)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Click;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Click SWIFT_WARN_UNUSED_RESULT;
/// Expandable (User Initiated - Rollover)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Rollover;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Rollover SWIFT_WARN_UNUSED_RESULT;
/// In-Banner Video Ad (Autoplay)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull InBanner_Autoplay;)
+ (PBCreativeAttribute * _Nonnull)InBanner_Autoplay SWIFT_WARN_UNUSED_RESULT;
/// In-Banner Video Ad (User Initiated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull InBanner_UserInitiated;)
+ (PBCreativeAttribute * _Nonnull)InBanner_UserInitiated SWIFT_WARN_UNUSED_RESULT;
/// Pop (e.g., Over, Under, or Upon Exit)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Pop;)
+ (PBCreativeAttribute * _Nonnull)Pop SWIFT_WARN_UNUSED_RESULT;
/// Provocative
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Provocative;)
+ (PBCreativeAttribute * _Nonnull)Provocative SWIFT_WARN_UNUSED_RESULT;
/// Suggestive Imagery
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull SuggestiveImagery;)
+ (PBCreativeAttribute * _Nonnull)SuggestiveImagery SWIFT_WARN_UNUSED_RESULT;
/// Shaky
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Shaky;)
+ (PBCreativeAttribute * _Nonnull)Shaky SWIFT_WARN_UNUSED_RESULT;
/// Flashing
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Flashing;)
+ (PBCreativeAttribute * _Nonnull)Flashing SWIFT_WARN_UNUSED_RESULT;
/// Flickering
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Flickering;)
+ (PBCreativeAttribute * _Nonnull)Flickering SWIFT_WARN_UNUSED_RESULT;
/// Extreme Animation
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull ExtremeAnimation;)
+ (PBCreativeAttribute * _Nonnull)ExtremeAnimation SWIFT_WARN_UNUSED_RESULT;
/// Smileys
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Smileys;)
+ (PBCreativeAttribute * _Nonnull)Smileys SWIFT_WARN_UNUSED_RESULT;
/// Surveys
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Surveys;)
+ (PBCreativeAttribute * _Nonnull)Surveys SWIFT_WARN_UNUSED_RESULT;
/// Text Only
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull TextOnly;)
+ (PBCreativeAttribute * _Nonnull)TextOnly SWIFT_WARN_UNUSED_RESULT;
/// User Interactive (e.g., Embedded Games)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull UserInteractive;)
+ (PBCreativeAttribute * _Nonnull)UserInteractive SWIFT_WARN_UNUSED_RESULT;
/// Windows Dialog
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull WindowsDialog;)
+ (PBCreativeAttribute * _Nonnull)WindowsDialog SWIFT_WARN_UNUSED_RESULT;
/// Alert Style
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AlertStyle;)
+ (PBCreativeAttribute * _Nonnull)AlertStyle SWIFT_WARN_UNUSED_RESULT;
/// Has Audio On/Off Button
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioButton;)
+ (PBCreativeAttribute * _Nonnull)AudioButton SWIFT_WARN_UNUSED_RESULT;
/// Ad Provides Skip Button (e.g. VPAID-rendered skip button on pre-roll video)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull SkipButton;)
+ (PBCreativeAttribute * _Nonnull)SkipButton SWIFT_WARN_UNUSED_RESULT;
/// Adobe Flash
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AdobeFlash;)
+ (PBCreativeAttribute * _Nonnull)AdobeFlash SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


@class SKAdImpression;

SWIFT_CLASS_NAMED("SkadnEventTracker") SWIFT_AVAILABILITY(ios,introduced=14.5)
@interface PBMSkadnEventTracker : NSObject <PBMEventTrackerProtocol>
- (nonnull instancetype)initWith:(SKAdImpression * _Nonnull)imp OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("SkadnParametersManager")
@interface PBMSkadnParametersManager : NSObject
+ (SKAdImpression * _Nullable)getSkadnImpressionFor:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(ios,introduced=14.5);
+ (NSDictionary<NSString *, id> * _Nullable)getSkadnProductParametersFor:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A class that manages targeting information for ads.
/// This class provides properties and methods for setting and retrieving
/// user-specific targeting information, such as user ID, and custom
/// data. It also includes details for OMID (Open Measurement Interface Definition)
/// partner and supports managing user identity links and custom extensions.
SWIFT_CLASS("_TtC12PrebidMobile9Targeting")
@interface Targeting : NSObject
/// A shared instance of the <code>Targeting</code> class.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) Targeting * _Nonnull shared;)
+ (Targeting * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
+ (void)setShared:(Targeting * _Nonnull)value;
/// The name of the OMID partner.
@property (nonatomic, copy) NSString * _Nullable omidPartnerName;
/// The version of the OMID partner.
@property (nonatomic, copy) NSString * _Nullable omidPartnerVersion;
/// Placeholder for exchange-specific extensions to OpenRTB.
@property (nonatomic, copy) NSDictionary<NSString *, NSObject *> * _Nullable userExt;
/// Objective C analog of subjectToCOPPA
@property (nonatomic, strong) NSNumber * _Nullable coppa;
/// Objective-C API
- (void)setSubjectToGDPR:(NSNumber * _Nullable)newValue;
/// Objective-C API
- (NSNumber * _Nullable)getSubjectToGDPR SWIFT_WARN_UNUSED_RESULT;
/// The consent string for sending the GDPR consent
@property (nonatomic, copy) NSString * _Nullable gdprConsentString;
/// The consent string for purposes consent as per TCFv2.
@property (nonatomic, copy) NSString * _Nullable purposeConsents;
/// Returns whether the user has consented to access device data as an <code>NSNumber</code>.
- (NSNumber * _Nullable)getDeviceAccessConsentObjc SWIFT_WARN_UNUSED_RESULT;
/// Checks if access to device data is allowed.
- (BOOL)isAllowedAccessDeviceData SWIFT_WARN_UNUSED_RESULT;
/// This value forces SDK to choose targeting info of the winning bid
@property (nonatomic) BOOL forceSdkToChooseWinner;
/// Sets the external user ID.
- (void)setExternalUserIds:(NSArray<ExternalUserId *> * _Nonnull)externalUserIds;
/// Retrieves the external user IDs in a dictionary format suitable for use in JSON.
- (NSArray<NSDictionary<NSString *, id> *> * _Nullable)getExternalUserIds SWIFT_WARN_UNUSED_RESULT;
/// When true, the SharedID external user id is added to outgoing auction requests.  App developers are
/// encouraged to consult with their legal team before enabling this feature.
/// See <code>Targeting.sharedId</code> for details.
@property (nonatomic) BOOL sendSharedId;
/// A randomly generated Prebid-owned first-party identifier
/// Unless reset, SharedID remains consistent throughout the current app session. The same id may also persist
/// indefinitely across multiple app sessions if local storage access is allowed. SharedID values are NOT consistent
/// across different apps on the same device.
/// note:
/// SharedId is only sent with auction requests if <code>Targeting.sendSharedId</code> is set to true.
@property (nonatomic, readonly, strong) ExternalUserId * _Nonnull sharedId;
/// Resets and clears out of local storage the existing SharedID value, after which <code>Targeting.sharedId</code> will
/// return a new randomized value.
- (void)resetSharedId;
/// This is the deep-link URL for the app screen that is displaying the ad. This can be an iOS universal link.
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// App’s publisher name.
@property (nonatomic, copy) NSString * _Nullable publisherName;
/// ID of publisher app in Apple’s App Store.
@property (nonatomic, copy) NSString * _Nullable sourceapp;
/// App store URL for an installed app
@property (nonatomic, copy) NSString * _Nullable storeURL;
/// Domain name of the app
@property (nonatomic, copy) NSString * _Nullable domain;
/// The itunes app id for targeting
@property (nonatomic, copy) NSString * _Nullable itunesID;
/// The application location for targeting
@property (nonatomic, strong) CLLocation * _Nullable location;
/// CLLocationCoordinate2D.
/// See CoreLocation framework documentation.
@property (nonatomic, strong) NSValue * _Nullable coordinate;
/// Sets the global-level OpenRTB configuration string.
/// \param ortbObject The global-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setGlobalORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the global-level OpenRTB configuration string.
- (NSString * _Nullable)getGlobalORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Adds a parameter to the parameter dictionary with a specified name.
/// \param value The value of the parameter.
///
/// \param withName The name of the parameter. If <code>nil</code>, the parameter is not added.
///
- (void)addParam:(NSString * _Nonnull)value withName:(NSString * _Nullable)withName;
/// Store location in the user’s section
- (void)setLatitude:(double)latitude longitude:(double)longitude;
/// Adds a bidder to the access control list.
/// \param bidderName The name of the bidder to add.
///
- (void)addBidderToAccessControlList:(NSString * _Nonnull)bidderName;
/// Removes a bidder from the access control list.
/// \param bidderName The name of the bidder to remove.
///
- (void)removeBidderFromAccessControlList:(NSString * _Nonnull)bidderName;
/// Clears all bidders from the access control list.
- (void)clearAccessControlList;
/// Retrieves the current access control list.
///
/// returns:
/// An array of bidder names in the access control list.
- (NSArray<NSString *> * _Nonnull)getAccessControlList SWIFT_WARN_UNUSED_RESULT;
/// Access control list for external use.
///
/// returns:
/// An array of bidder names in the access control list.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull accessControlList;
/// Adds a user keyword.
/// \param newElement The keyword to add.
///
- (void)addUserKeyword:(NSString * _Nonnull)newElement;
/// Adds multiple user keywords.
/// \param newElements A set of keywords to add.
///
- (void)addUserKeywords:(NSSet<NSString *> * _Nonnull)newElements;
/// Removes a user keyword.
/// \param element The keyword to remove.
///
- (void)removeUserKeyword:(NSString * _Nonnull)element;
/// Clears all user keywords.
- (void)clearUserKeywords;
/// Retrieves all user keywords.
///
/// returns:
/// An array of user keywords.
- (NSArray<NSString *> * _Nonnull)getUserKeywords SWIFT_WARN_UNUSED_RESULT;
/// Adds application-specific data for a specified key.
/// \param key The key for the application data.
///
/// \param value The value to add for the specified key.
///
- (void)addAppExtDataWithKey:(NSString * _Nonnull)key value:(NSString * _Nonnull)value;
/// Updates application-specific data for a specified key with a new set of values.
/// \param key The key for the application data.
///
/// \param value The set of values to update for the specified key.
///
- (void)updateAppExtDataWithKey:(NSString * _Nonnull)key value:(NSSet<NSString *> * _Nonnull)value;
/// Removes application-specific data for a specified key.
/// \param key The key for the application data to remove.
///
- (void)removeAppExtDataFor:(NSString * _Nonnull)key;
/// Clears all application-specific data.
- (void)clearAppExtData;
/// Retrieves all application-specific data.
///
/// returns:
/// A dictionary mapping keys to arrays of values.
- (NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull)getAppExtData SWIFT_WARN_UNUSED_RESULT;
/// Adds an application keyword.
/// \param newElement The keyword to add.
///
- (void)addAppKeyword:(NSString * _Nonnull)newElement;
/// Adds multiple application keywords.
/// \param newElements A set of keywords to add.
///
- (void)addAppKeywords:(NSSet<NSString *> * _Nonnull)newElements;
/// Removes an application keyword.
/// \param element The keyword to remove.
///
- (void)removeAppKeyword:(NSString * _Nonnull)element;
/// Clears all application keywords.
- (void)clearAppKeywords;
/// Retrieves all application keywords.
///
/// returns:
/// An array of application keywords.
- (NSArray<NSString *> * _Nonnull)getAppKeywords SWIFT_WARN_UNUSED_RESULT;
/// Dictionary of parameters.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull parameterDictionary;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ThreadProtocol")
@protocol PBMThreadProtocol
@property (nonatomic, readonly) BOOL isMainThread;
@end


@interface NSThread (SWIFT_EXTENSION(PrebidMobile)) <PBMThreadProtocol>
@end


typedef SWIFT_ENUM_NAMED(NSInteger, PBMTrackingEvent, "TrackingEvent", open) {
  PBMTrackingEventRequest = 0,
  PBMTrackingEventImpression = 1,
  PBMTrackingEventClick = 2,
  PBMTrackingEventOverlayClick = 3,
  PBMTrackingEventCompanionClick = 4,
  PBMTrackingEventPlay = 5,
  PBMTrackingEventPause = 6,
  PBMTrackingEventResume = 7,
  PBMTrackingEventRewind = 8,
  PBMTrackingEventSkip = 9,
  PBMTrackingEventCreativeView = 10,
  PBMTrackingEventStart = 11,
  PBMTrackingEventFirstQuartile = 12,
  PBMTrackingEventMidpoint = 13,
  PBMTrackingEventThirdQuartile = 14,
  PBMTrackingEventComplete = 15,
  PBMTrackingEventMute = 16,
  PBMTrackingEventUnmute = 17,
  PBMTrackingEventFullscreen = 18,
  PBMTrackingEventExitFullscreen = 19,
  PBMTrackingEventNormal = 20,
  PBMTrackingEventExpand = 21,
  PBMTrackingEventCollapse = 22,
  PBMTrackingEventCloseLinear = 23,
  PBMTrackingEventCloseOverlay = 24,
  PBMTrackingEventAcceptInvitation = 25,
  PBMTrackingEventError = 26,
  PBMTrackingEventLoaded = 27,
  PBMTrackingEventPrebidWin = 28,
  PBMTrackingEventUnknown = 29,
};


SWIFT_CLASS_NAMED("TrackingEventDescription")
@interface PBMTrackingEventDescription : NSObject
+ (NSString * _Nonnull)getDescription:(enum PBMTrackingEvent)event SWIFT_WARN_UNUSED_RESULT;
+ (enum PBMTrackingEvent)getEventWith:(NSString * _Nonnull)description SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class PBMOpenMeasurementSession;
@class PBMOpenMeasurementWrapper;
@protocol PBMTransactionDelegate;

SWIFT_PROTOCOL_NAMED("Transaction")
@protocol PBMTransaction <NSObject>
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, copy) NSArray<PBMAbstractCreative *> * _Nonnull creatives;
@property (nonatomic, copy) NSArray<PBMCreativeModel *> * _Nonnull creativeModels;
@property (nonatomic, strong) PBMOpenMeasurementSession * _Nonnull measurementSession;
@property (nonatomic, strong) PBMOpenMeasurementWrapper * _Nonnull measurementWrapper;
@property (nonatomic, strong) Bid * _Nullable bid;
@property (nonatomic, weak) id <PBMTransactionDelegate> _Nullable delegate;
- (nonnull instancetype)initWithServerConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection adConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration models:(NSArray<PBMCreativeModel *> * _Nonnull)models;
- (void)startCreativeFactory;
- (PBMAdDetails * _Nullable)getAdDetails SWIFT_WARN_UNUSED_RESULT;
- (PBMAbstractCreative * _Nullable)getFirstCreative SWIFT_WARN_UNUSED_RESULT;
- (PBMAbstractCreative * _Nullable)getCreativeAfter:(PBMAbstractCreative * _Nonnull)after SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)revenueForCreativeAfter:(PBMAbstractCreative * _Nonnull)after SWIFT_WARN_UNUSED_RESULT;
- (void)resetAdConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration;
@end


SWIFT_PROTOCOL_NAMED("TransactionDelegate")
@protocol PBMTransactionDelegate
- (void)transactionReadyForDisplay:(id <PBMTransaction> _Nonnull)transaction;
- (void)transactionFailedToLoad:(id <PBMTransaction> _Nonnull)transaction error:(NSError * _Nonnull)error;
@end







SWIFT_CLASS_NAMED("UserAgentService")
@interface PBMUserAgentService : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMUserAgentService * _Nonnull shared;)
+ (PBMUserAgentService * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull userAgent;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)fetchUserAgentWithCompletion:(void (^ _Nullable)(NSString * _Nonnull))completion;
@end



/// Extended ID UID objects from the given source.
SWIFT_CLASS("_TtC12PrebidMobile12UserUniqueID")
@interface UserUniqueID : NSObject
/// Cookie or platform-native identifier.
@property (nonatomic, copy) NSString * _Nonnull id;
/// Type of user agent the match is from. It is highly recommended to set this, as many DSPs separate app-native IDs from browser-based IDs and require a type value for ID resolution.
@property (nonatomic, strong) NSNumber * _Nonnull aType;
/// Optional vendor-specific extensions.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new UserUniqueID object.
/// \param id Cookie or platform-native identifier.
///
/// \param aType Type of user agent the match is from. Recommended for DSP ID resolution.
///
/// \param ext Optional vendor-specific extensions. Default is <code>nil</code>.
///
- (nonnull instancetype)initWithId:(NSString * _Nonnull)id aType:(NSNumber * _Nonnull)aType ext:(NSDictionary<NSString *, id> * _Nullable)ext OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A utility class for handling various ad-related operations and conversions.
SWIFT_CLASS("_TtC12PrebidMobile5Utils")
@interface Utils : NSObject
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Utils * _Nonnull shared;)
+ (Utils * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The initializer that needs to be created only once
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// A delegate to handle native ad events.
@property (nonatomic, weak) id <NativeAdDelegate> _Nullable delegate;
/// Finds a native ad object within a given object.
/// \param adObject The object to search within.
///
- (void)findNativeWithAdObject:(id _Nonnull)adObject;
@end


SWIFT_CLASS_NAMED("VastTrackingEvents")
@interface PBMVastTrackingEvents : NSObject
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull trackingEvents;
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nonnull progressOffsets;
- (void)addTrackingURL:(NSString * _Nullable)url event:(NSString * _Nullable)event attributes:(NSDictionary<NSString *, NSString *> * _Nullable)attributes;
- (NSArray<NSString *> * _Nullable)trackingURLsForEvent:(NSString * _Nullable)event SWIFT_WARN_UNUSED_RESULT;
- (void)addTrackingEvents:(PBMVastTrackingEvents * _Nullable)events;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



/// A class representing the configuration for video controls in an ad.
/// This includes properties for video duration, mute status, and button positioning and visibility.
/// Configuration values can be initialized from bid response or set directly by the user.
SWIFT_CLASS_NAMED("VideoControlsConfiguration")
@interface PBMVideoControlsConfiguration : NSObject
/// This property indicates maximum video duration.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.maxvideoduration.
@property (nonatomic, readonly, strong) NSNumber * _Nullable maxVideoDuration;
/// This property indicates whether the ad should run playback with sound or not.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.ismuted or set by user.
@property (nonatomic) BOOL isMuted;
/// This property indicates the area which the close button should occupy on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.closebuttonarea or set by user.
@property (nonatomic) double closeButtonArea;
/// This property indicates the position of the close button on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.closebuttonposition or set by user.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// This property indicates the area which the skip button should occupy on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipbuttonarea or set by user.
@property (nonatomic) double skipButtonArea;
/// This property indicates the position of the skip button on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipbuttonposition or set by user.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// This property indicates the number of seconds which should be passed from the start of playback until the skip or close button should be shown.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipdelay or set by user.
@property (nonatomic) double skipDelay;
/// This property indicates whether mute controls is visible on the screen.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Use to initialize video controls with server values.
- (void)initializeWith:(PBMORTBAdConfiguration * _Nullable)ortbAdConfiguration;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Describes an <a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf">OpenRTB</a> video object
SWIFT_CLASS("_TtC12PrebidMobile15VideoParameters")
@interface VideoParameters : NSObject
/// List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
@property (nonatomic, copy) NSArray<PBApi *> * _Nullable api;
/// Maximum bit rate in Kbps.
@property (nonatomic, strong) SingleContainerInt * _Nullable maxBitrate;
/// Maximum bit rate in Kbps.
@property (nonatomic, strong) SingleContainerInt * _Nullable minBitrate;
/// Maximum video ad duration in seconds.
@property (nonatomic, strong) SingleContainerInt * _Nullable maxDuration;
/// Minimum video ad duration in seconds.
@property (nonatomic, strong) SingleContainerInt * _Nullable minDuration;
/// <h1>Example</h1>
/// “video/mp4”
/// “video/x-ms-wmv”
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull mimes;
/// Allowed playback methods. If none specified, assume all are allowed.
@property (nonatomic, copy) NSArray<PBPlaybackMethod *> * _Nullable playbackMethod;
/// Array of supported video bid response protocols.
@property (nonatomic, copy) NSArray<PBProtocols *> * _Nullable protocols;
/// Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements.
@property (nonatomic, strong) PBStartDelay * _Nullable startDelay;
/// Placement type for the impression.
@property (nonatomic, strong) PBPlacement * _Nullable placement;
/// Placement type for the impression.
@property (nonatomic, strong) PBPlcmnt * _Nullable plcmnt;
/// Indicates if the impression must be linear, nonlinear, etc. If none specified, assume all are allowed.
@property (nonatomic, strong) SingleContainerInt * _Nullable linearity;
/// List of blocked creative attributes.
@property (nonatomic, copy) NSArray<PBCreativeAttribute *> * _Nullable battr;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawAPI;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawPlaybackMethod;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawProtocols;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawBattrs;
@property (nonatomic, readonly, strong) NSNumber * _Nullable rawSkippable;
/// \param mimes supported MIME types
///
- (nonnull instancetype)initWithMimes:(NSArray<NSString *> * _Nonnull)mimes OBJC_DESIGNATED_INITIALIZER;
/// Objective-C API
- (void)setSize:(NSValue * _Nonnull)size;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PBMVideoVerificationResource;

SWIFT_CLASS_NAMED("VideoVerificationParameters")
@interface PBMVideoVerificationParameters : NSObject
@property (nonatomic, copy) NSArray<PBMVideoVerificationResource *> * _Nonnull verificationResources;
@property (nonatomic) BOOL autoPlay;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("VideoVerificationResource")
@interface PBMVideoVerificationResource : NSObject
@property (nonatomic, copy) NSString * _Nullable url;
@property (nonatomic, copy) NSString * _Nullable vendorKey;
@property (nonatomic, copy) NSString * _Nullable params;
@property (nonatomic, copy) NSString * _Nullable apiFramework;
@property (nonatomic, strong) PBMVastTrackingEvents * _Nullable trackingEvents;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSNumberFormatter;

SWIFT_PROTOCOL_NAMED("ViewExposure")
@protocol PBMViewExposure <NSObject, PBMSwiftMigrationHelper>
+ (id <PBMViewExposure> _Nonnull)zeroExposure SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) float exposureFactor;
@property (nonatomic, readonly) float exposedPercentage;
@property (nonatomic, readonly) CGRect visibleRectangle;
@property (nonatomic, readonly, copy) NSArray<NSValue *> * _Nullable occlusionRectangles;
- (nonnull instancetype)initWithExposureFactor:(float)exposureFactor visibleRectangle:(CGRect)visibleRectangle occlusionRectangles:(NSArray<NSValue *> * _Nullable)occlusionRectangles;
- (NSString * _Nonnull)serializeWithFormatter:(NSNumberFormatter * _Nonnull)formatter SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL_NAMED("WinNotifier")
@protocol PBMWinNotifier
- (nonnull instancetype)init;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) void (^ _Nonnull (^ _Nonnull factoryBlock)(id <PrebidServerConnectionProtocol> _Nonnull))(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable));)
+ (void (^ _Nonnull (^ _Nonnull)(id <PrebidServerConnectionProtocol> _Nonnull))(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))factoryBlock SWIFT_WARN_UNUSED_RESULT;
+ (void)notifyThroughConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection winningBid:(Bid * _Nonnull)winningBid callback:(void (^ _Nonnull)(NSString * _Nullable))callback;
+ (void (^ _Nonnull)(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))winNotifierBlockWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)cacheUrlFromTargeting:(NSDictionary<NSString *, NSString *> * _Nonnull)targeting idKey:(NSString * _Nonnull)idKey SWIFT_WARN_UNUSED_RESULT;
@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.0 effective-5.10 (swiftlang-6.0.0.9.10 clang-1600.0.26.2)
#ifndef PREBIDMOBILE_SWIFT_H
#define PREBIDMOBILE_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 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

#import <PrebidMobile/PrebidMobile.h>

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#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="PrebidMobile",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

SWIFT_CLASS_NAMED("AutoRefreshCountConfig")
@interface PBMAutoRefreshCountConfig : NSObject
/// The number of times the BannerView has been refreshed.
@property (nonatomic) NSInteger numRefreshes;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class AdFormat;
@class BannerParameters;
@class VideoParameters;
@class NSNumber;
enum PBMInterstitialLayout : NSInteger;
@class PBMVideoControlsConfiguration;
@class PBMRewardedConfig;
@class NSString;

/// Contains all the data needed to load an ad.
SWIFT_CLASS_NAMED("AdConfiguration")
@interface PBMAdConfiguration : PBMAutoRefreshCountConfig
@property (nonatomic) BOOL isOriginalAPI;
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Describes an OpenRTB banner object
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// Describes an OpenRTB video object
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// Whether or not this ad configuration is intended to represent an intersitial ad.
/// Setting this to true will disable auto refresh.
@property (nonatomic) BOOL isInterstitialAd;
/// Whether or not this ad configuration is intended to represent an ad as an intersitial one (regardless of original designation).
/// Overrides <code>isInterstitialAd</code>
/// Setting this to true will disable auto refresh.
@property (nonatomic, strong) NSNumber * _Nullable forceInterstitialPresentation;
/// Whether or not this ad configuration is intended to represent an intersitial ad.
/// Returns the effective result by combining <code>isInterstitialAd</code> and <code>forceInterstitialPresentation</code>
@property (nonatomic, readonly) BOOL presentAsInterstitial;
/// Interstitial layout
@property (nonatomic) enum PBMInterstitialLayout interstitialLayout;
/// Size for the ad.
@property (nonatomic) CGSize size;
/// Sets an ad unit as an rewarded
@property (nonatomic) BOOL isRewarded;
/// Indicates whether the ad is built-in video e.g. 300x250.
@property (nonatomic) BOOL isBuiltInVideo;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// This property indicated winning bid ad format (ext.prebid.type)
@property (nonatomic, strong) AdFormat * _Nullable winningBidAdFormat;
/// This property represents video controls custom configuration.
@property (nonatomic, strong) PBMVideoControlsConfiguration * _Nonnull videoControlsConfig;
/// Server-side configuration for rewarded ads (bid.ext.rwdd)
@property (nonatomic, strong) PBMRewardedConfig * _Nullable rewardedConfig;
@property (nonatomic) NSTimeInterval pollFrequency;
@property (nonatomic) NSInteger viewableArea;
@property (nonatomic) NSInteger viewableDuration;
@property (nonatomic, copy) void (^ _Nullable clickHandlerOverride)(SWIFT_NOESCAPE void (^ _Nonnull)(void));
@property (nonatomic, copy) NSString * _Nullable impORTBConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Provides info about received ad.
SWIFT_CLASS_NAMED("AdDetails")
@interface PBMAdDetails : NSObject
/// Raw data returned for the ad request.
@property (nonatomic, readonly, copy) NSString * _Nonnull rawResponse;
/// Unique identifier of the ad, that can be used for managing and reporting ad quality issues.
@property (nonatomic, readonly, copy) NSString * _Nonnull transactionId;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// <code>AdFormat</code> is a class that represents different types of ad formats using an OptionSet.
SWIFT_CLASS("_TtC12PrebidMobile8AdFormat")
@interface AdFormat : NSObject
/// The raw integer value representing the ad format.
@property (nonatomic, readonly) NSInteger rawValue;
/// The string representation of the ad format.
@property (nonatomic, readonly, copy) NSString * _Nullable stringEquivalent;
/// Initializes an <code>AdFormat</code> instance with a specified raw value and its string equivalent.
/// \param rawValue The raw value representing the ad format.
///
/// \param stringEquivalent A string equivalent of the ad format.
///
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue stringEquivalent:(NSString * _Nonnull)stringEquivalent;
/// Initializes an <code>AdFormat</code> instance with a specified raw value.
/// \param rawValue The raw value representing the ad format.
///
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue OBJC_DESIGNATED_INITIALIZER;
/// Represents a banner ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull banner;)
+ (AdFormat * _Nonnull)banner SWIFT_WARN_UNUSED_RESULT;
/// Represents a video ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull video;)
+ (AdFormat * _Nonnull)video SWIFT_WARN_UNUSED_RESULT;
/// Represents a native ad format.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdFormat * _Nonnull native;)
+ (AdFormat * _Nonnull)native SWIFT_WARN_UNUSED_RESULT;
/// An array containing all cases of ad formats.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSArray<AdFormat *> * _Nonnull allCases;)
+ (NSArray<AdFormat *> * _Nonnull)allCases SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PBMAdLoadFlowController;

SWIFT_PROTOCOL("_TtP12PrebidMobile28AdLoadFlowControllerDelegate_")
@protocol AdLoadFlowControllerDelegate <NSObject>
- (void)adLoadFlowController:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController failedWithError:(NSError * _Nullable)error;
- (void)adLoadFlowControllerWillSendBidRequest:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (void)adLoadFlowControllerWillRequestPrimaryAd:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (BOOL)adLoadFlowControllerShouldContinue:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController SWIFT_WARN_UNUSED_RESULT;
@end

enum PBMTrackingEvent : NSInteger;
@class PBMVideoVerificationParameters;

/// This protocol defines methods for tracking ad’s lifesycle.
/// This protocol declares methods that needed for ad tracking in PrebidMobile. For now, we have two implementations:
/// <ul>
///   <li>
///     AdModelEventTracker
///   </li>
///   <li>
///     PBMOpenMeasurementEventTracker
///   </li>
/// </ul>
SWIFT_PROTOCOL_NAMED("EventTrackerProtocol")
@protocol PBMEventTrackerProtocol
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
@end

@class PBMCreativeModel;
@protocol PrebidServerConnectionProtocol;

SWIFT_CLASS_NAMED("AdModelEventTracker")
@interface PBMAdModelEventTracker : NSObject <PBMEventTrackerProtocol>
- (nonnull instancetype)initWithCreativeModel:(PBMCreativeModel * _Nonnull)creativeModel serverConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Ad position on screen. Refer to List 5.4:
/// The following table specifies the position of the ad as a relative measure of visibility or prominence. This
/// OpenRTB table has values derived from the Inventory Quality Guidelines (IQG). Practitioners should
/// keep in sync with updates to the IQG values as published on IAB.com. Values “4” - “7” apply to apps per
/// the mobile addendum to IQG version 2.1.
/// Value Description
/// 0 Unknown
/// 1 Above the Fold
/// 2 DEPRECATED - May or may not be initially visible depending on screen size/resolution.
/// 3 Below the Fold
/// 4 Header
/// 5 Footer
/// 6 Sidebar
/// 7 Full Screen
typedef SWIFT_ENUM_NAMED(NSInteger, PBMAdPosition, "AdPosition", open) {
/// 0 Unknown
  PBMAdPositionUndefined = 0,
/// 1 Above the Fold
  PBMAdPositionAboveTheFold = 1,
/// 2 Locked (i.e. fixed position)
  PBMAdPositionLocked = 2,
/// 3 Below the Fold
  PBMAdPositionBelowTheFold = 3,
/// 4 Header
  PBMAdPositionHeader = 4,
/// 5 Footer
  PBMAdPositionFooter = 5,
/// 6 Sidebar
  PBMAdPositionSidebar = 6,
/// 7 Full Screen
  PBMAdPositionFullScreen = 7,
};

@class PBMBidInfo;
enum ResultCode : NSInteger;

/// Base class for ad units built for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile6AdUnit")
@interface AdUnit : NSObject
/// ORTB: imp[].ext.data.pbadslot
@property (nonatomic, copy) NSString * _Nullable pbAdSlot;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Makes bid request  and provides the result as a <code>BidInfo</code> object.
/// \param completionBidInfo A closure called with a <code>BidInfo</code> object representing the fetched demand.
///
- (void)fetchDemandWithCompletionBidInfo:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completionBidInfo;
/// Makes bid request for a specific ad object and provides the result code. Setups targeting keywords into the adObject.
/// \param adObject The ad object for which demand is being fetched.
///
/// \param completion A closure called with the result code indicating the outcome of the demand fetch.
///
- (void)fetchDemandWithAdObject:(id _Nonnull)adObject completion:(void (^ _Nonnull)(enum ResultCode))completion;
/// Sets the GPID for the ad unit.
/// \param gpid The GPID string to set. Can be <code>nil</code> to clear the GPID.
///
- (void)setGPID:(NSString * _Nullable)gpid;
/// Retrieves the current GPID for the ad unit.
///
/// returns:
/// The GPID string, or <code>nil</code> if no GPID is set.
- (NSString * _Nullable)getGPID SWIFT_WARN_UNUSED_RESULT;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// This method allows to set the auto refresh period for the demand
/// \param time refresh time interval
///
- (void)setAutoRefreshMillisWithTime:(double)time;
/// This method stops the auto refresh of demand
- (void)stopAutoRefresh;
/// This method resumes the auto refresh of demand
- (void)resumeAutoRefresh;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSValue;
@class PBMNativeAdConfiguration;

SWIFT_CLASS("_TtC12PrebidMobile12AdUnitConfig")
@interface AdUnitConfig : NSObject <NSCopying>
@property (nonatomic, copy) NSString * _Nonnull configId;
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
@property (nonatomic) CGSize adSize;
@property (nonatomic, strong) NSValue * _Nullable minSizePerc;
@property (nonatomic) enum PBMAdPosition adPosition;
@property (nonatomic, strong) PBMNativeAdConfiguration * _Nullable nativeAdConfiguration;
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
@property (nonatomic) NSTimeInterval refreshInterval;
@property (nonatomic, copy) NSString * _Nullable gpid;
@property (nonatomic, copy) NSString * _Nullable impORTBConfig;
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId;
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
- (void)setPbAdSlot:(NSString * _Nullable)newElement;
- (NSString * _Nullable)getPbAdSlot 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

@class UIButton;
enum PBMPosition : NSInteger;
@class UIImage;
@class UIView;

SWIFT_CLASS_NAMED("AdViewButtonDecorator")
@interface PBMAdViewButtonDecorator : NSObject
@property (nonatomic, strong) UIButton * _Nonnull button;
@property (nonatomic) enum PBMPosition buttonPosition;
@property (nonatomic) CGRect customButtonPosition;
@property (nonatomic) double buttonArea;
@property (nonatomic) BOOL isMRAID;
@property (nonatomic, copy) void (^ _Nullable buttonTouchUpInsideBlock)(void);
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)setImage:(UIImage * _Nonnull)image;
- (void)addButtonTo:(UIView * _Nonnull)view displayView:(UIView * _Nonnull)displayView;
- (void)removeButtonFromSuperview;
- (void)bringButtonToFront;
- (void)sendSubviewToBack;
- (void)updateButtonConstraints;
- (CGFloat)getButtonConstraintConstant SWIFT_WARN_UNUSED_RESULT;
- (CGSize)getButtonSize SWIFT_WARN_UNUSED_RESULT;
- (void)buttonTappedAction;
@end

@class PBMAbstractCreative;

SWIFT_PROTOCOL_NAMED("CreativeViewDelegate")
@protocol PBMCreativeViewDelegate <NSObject>
- (void)creativeDidComplete:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeDidDisplay:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeWasClicked:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeViewWasClicked:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeClickthroughDidClose:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeInterstitialDidClose:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeInterstitialDidLeaveApp:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeFullScreenDidFinish:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeDidSendRewardedEvent:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeReadyToReimplant:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeMraidDidCollapse:(PBMAbstractCreative * _Nonnull)creative;
- (void)creativeMraidDidExpand:(PBMAbstractCreative * _Nonnull)creative;
@optional
- (void)videoCreativeDidComplete:(PBMAbstractCreative * _Nonnull)creative;
- (void)videoWasMuted:(PBMAbstractCreative * _Nonnull)creative;
- (void)videoWasUnmuted:(PBMAbstractCreative * _Nonnull)creative;
@end

@class PBMModalManager;
@protocol PBMAdViewManagerDelegate;
@protocol PBMModalManagerDelegate;
@protocol PBMTransaction;

SWIFT_PROTOCOL_NAMED("AdViewManager")
@protocol PBMAdViewManager <PBMCreativeViewDelegate>
@property (nonatomic, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, strong) PBMModalManager * _Nonnull modalManager;
@property (nonatomic, weak) id <PBMAdViewManagerDelegate> _Nullable adViewManagerDelegate;
@property (nonatomic) BOOL autoDisplayOnLoad;
@property (nonatomic, readonly) BOOL isCreativeOpened;
@property (nonatomic, readonly) BOOL isMuted;
- (nonnull instancetype)initWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection modalManagerDelegate:(id <PBMModalManagerDelegate> _Nullable)modalManagerDelegate;
- (NSString * _Nullable)revenueForNextCreative SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isAbleToShowCurrentCreative SWIFT_WARN_UNUSED_RESULT;
- (void)show;
- (void)pause;
- (void)resume;
- (void)mute;
- (void)unmute;
- (void)handleExternalTransaction:(id <PBMTransaction> _Nonnull)transaction;
@end


/// <code>AdViewUtils</code> provides utility methods for working with ad views, including finding creative sizes.
SWIFT_CLASS("_TtC12PrebidMobile11AdViewUtils")
@interface AdViewUtils : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Finds the creative size for a given ad view by searching for the <code>hb_size</code> attribute in the ad’s HTML content.
/// \param adView The ad view from which to extract the creative size.
///
/// \param success Closure called with the <code>CGSize</code> of the ad creative if found successfully.
///
/// \param failure Closure called with an <code>Error</code> if the size could not be determined.
///
+ (void)findPrebidCreativeSize:(UIView * _Nonnull)adView success:(void (^ _Nonnull)(CGSize))success failure:(void (^ _Nonnull)(NSError * _Nonnull))failure;
@end


SWIFT_CLASS_NAMED("ArbitraryORTBService")
@interface PBMArbitraryORTBService : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (NSDictionary<NSString *, id> * _Nonnull)mergeWithSdkORTB:(NSDictionary<NSString *, id> * _Nonnull)sdkORTB impORTB:(NSString * _Nullable)impORTB globalORTB:(NSString * _Nullable)globalORTB SWIFT_WARN_UNUSED_RESULT;
@end



/// Timer that stops in background and resumes in foreground. Fires callback on timer completion.
/// Can execute only one task at a time.
SWIFT_CLASS_NAMED("BackgroundAwareTimer")
@interface PBMBackgroundAwareTimer : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)startTimerWith:(NSTimeInterval)interval completion:(void (^ _Nonnull)(void))completion;
- (void)invalidateTimer;
@end

@protocol BannerEventHandler;
@class PBMBannerAdLoader;

SWIFT_PROTOCOL("_TtP12PrebidMobile22BannerAdLoaderDelegate_")
@protocol BannerAdLoaderDelegate <NSObject>
@property (nonatomic, readonly, strong) id <BannerEventHandler> _Nullable eventHandler;
- (void)bannerAdLoader:(PBMBannerAdLoader * _Nonnull)bannerAdLoader loadedAdView:(UIView * _Nonnull)adView adSize:(CGSize)adSize;
@end


SWIFT_PROTOCOL_NAMED("VideoBasedAdUnitProtocol")
@protocol PBMVideoBasedAdUnitProtocol
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
@end


SWIFT_PROTOCOL_NAMED("BannerBasedAdUnitProtocol")
@protocol PBMBannerBasedAdUnitProtocol
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
@end


/// A class representing a banner ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile12BannerAdUnit")
@interface BannerAdUnit : AdUnit <PBMBannerBasedAdUnitProtocol, PBMVideoBasedAdUnitProtocol>
/// The banner ad parameters used to configure the ad unit.
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// The video ad parameters used to configure the ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// The set of ad formats for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Initializes a new <code>BannerAdUnit</code> with the specified configuration ID and size.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param size The size of the banner ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
/// Adds additional sizes to the banner ad unit’s configuration.
/// \param sizes An array of <code>CGSize</code> objects representing additional sizes.
///
- (void)addAdditionalSizeWithSizes:(NSArray<NSValue *> * _Nonnull)sizes;
/// Sets the view in which Prebid will start tracking an impression.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView). This object will be used later for tracking <code>burl</code>.
///
- (void)activatePrebidImpressionTrackerWithAdView:(UIView * _Nonnull)adView;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow for the provided ad view.
/// Ensure this method is called within the Google Mobile Ads ad received method
/// (e.g., in the GADBannerViewDelegate’s <code>bannerViewDidReceiveAd</code> or similar callbacks).
/// This feature is not available for video ads.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView).
///
- (void)activatePrebidSKAdNetworkStoreKitAdsFlowWithAdView:(UIView * _Nonnull)adView;
@end


@class BidResponse;

SWIFT_PROTOCOL_NAMED("PrimaryAdRequesterProtocol")
@protocol PBMPrimaryAdRequesterProtocol <NSObject>
/// @abstract PBM SDK calls this method when it has valid bid/s to pass to the ad server.
/// @discussion Note that, if the PBM SDK does not have valid bids, <code>requestAdWithBidResponse:</code> will be called with a <code>nil</code> bid value.
/// @param bidResponse bid response object having useful information that can be passed to the ad server SDK
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
@end

@protocol BannerEventLoadingDelegate;
@protocol BannerEventInteractionDelegate;

/// A protocol for handling events related to banner ads in the PBM SDK.
/// This protocol defines methods and properties for managing events associated with banner ads, including loading events, user interactions, and ad sizes. Implementing this protocol allows for custom handling of these events within the PBM SDK.
SWIFT_PROTOCOL("_TtP12PrebidMobile18BannerEventHandler_")
@protocol BannerEventHandler <PBMPrimaryAdRequesterProtocol>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <BannerEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <BannerEventInteractionDelegate> _Nullable interactionDelegate;
/// The array of the CGRect entries for each valid ad sizes.
/// The first size is treated as a frame for related ad unit.
@property (nonatomic, readonly, copy) NSArray<NSValue *> * _Nonnull adSizes;
- (void)trackImpression;
@end


SWIFT_CLASS("_TtC12PrebidMobile28BannerEventHandlerStandalone")
@interface BannerEventHandlerStandalone : NSObject <BannerEventHandler>
@property (nonatomic, weak) id <BannerEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <BannerEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, copy) NSArray<NSValue *> * _Nonnull adSizes;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (void)trackImpression;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class UIViewController;

SWIFT_PROTOCOL("_TtP12PrebidMobile30BannerEventInteractionDelegate_")
@protocol BannerEventInteractionDelegate <NSObject>
- (void)willPresentModal;
- (void)didDismissModal;
- (void)willLeaveApp;
@property (nonatomic, readonly, strong) UIViewController * _Nullable viewControllerForPresentingModal;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile26BannerEventLoadingDelegate_")
@protocol BannerEventLoadingDelegate <NSObject>
- (void)prebidDidWin;
- (void)adServerDidWin:(UIView * _Nonnull)view adSize:(CGSize)adSize;
- (void)failedWithError:(NSError * _Nullable)error;
@end

@class PBApi;

/// Describes an <a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf">OpenRTB</a> banner object
SWIFT_CLASS("_TtC12PrebidMobile16BannerParameters")
@interface BannerParameters : NSObject
/// List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
@property (nonatomic, copy) NSArray<PBApi *> * _Nullable api;
/// Ad sizes of the ad
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable adSizes;
/// Helper for <code>api</code> values
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawAPI;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A protocol that defines methods for handling user interactions and lifecycle events related to ad display views.
SWIFT_PROTOCOL("_TtP12PrebidMobile30DisplayViewInteractionDelegate_")
@protocol DisplayViewInteractionDelegate <NSObject>
/// Tracks an impression for the specified display view.
/// \param forDisplayView The <code>UIView</code> instance associated with the ad impression.
///
- (void)trackImpressionForDisplayView:(UIView * _Nonnull)forDisplayView;
/// Notifies that the user has left the app after interacting with the ad.
/// \param displayView The <code>UIView</code> instance associated with the ad interaction.
///
- (void)didLeaveAppFrom:(UIView * _Nonnull)displayView;
/// Notifies that a modal view is about to be presented from the specified display view.
/// \param displayView The <code>UIView</code> instance associated with the modal presentation.
///
- (void)willPresentModalFrom:(UIView * _Nonnull)displayView;
/// Notifies the delegate that a modal view has been dismissed.
/// \param displayView The <code>UIView</code> instance associated with the dismissed modal.
///
- (void)didDismissModalFrom:(UIView * _Nonnull)displayView;
/// Requests the <code>UIViewController</code> to be used for presenting modals from the specified display view.
/// \param fromDisplayView The <code>UIView</code> instance from which the modal is to be presented.
///
- (UIViewController * _Nullable)viewControllerForModalPresentationFromDisplayView:(UIView * _Nonnull)fromDisplayView SWIFT_WARN_UNUSED_RESULT;
@end

@protocol BannerViewDelegate;
@class NSCoder;
@protocol PluginEventDelegate;

/// The view that will display the particular banner ad. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile10BannerView")
@interface BannerView : UIView <AdLoadFlowControllerDelegate, BannerAdLoaderDelegate, BannerEventInteractionDelegate, DisplayViewInteractionDelegate>
/// The ad unit configuration.
@property (nonatomic, readonly, strong) AdUnitConfig * _Nonnull adUnitConfig;
/// The event handler for banner view events.
@property (nonatomic, readonly, strong) id <BannerEventHandler> _Nullable eventHandler;
/// Banner-specific parameters.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Video-specific parameters.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The last bid response received.
@property (nonatomic, readonly, strong) BidResponse * _Nullable lastBidResponse;
/// ID of Stored Impression on the Prebid server
@property (nonatomic, readonly, copy) NSString * _Nonnull configID;
/// The interval for refreshing the ad.
@property (nonatomic) NSTimeInterval refreshInterval;
/// Additional sizes for the ad.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// The ad format (e.g., banner, video).
@property (nonatomic, strong) AdFormat * _Nonnull adFormat;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// ORTB configuration string.
@property (nonatomic, weak) id <BannerViewDelegate> _Nullable delegate;
/// Initializes a new <code>BannerView</code>.
/// \param frame The frame rectangle for the view.
///
/// \param configID The configuration ID for the ad unit.
///
/// \param adSize The size of the ad.
///
/// \param eventHandler The event handler for the banner view.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame configID:(NSString * _Nonnull)configID adSize:(CGSize)adSize eventHandler:(id <BannerEventHandler> _Nonnull)eventHandler OBJC_DESIGNATED_INITIALIZER;
/// Convenience initializer for creating a <code>BannerView</code> with a configuration ID and event handler.
/// \param configID The configuration ID for the ad unit.
///
/// \param eventHandler The event handler for the banner view.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id <BannerEventHandler> _Nonnull)eventHandler;
/// Convenience initializer for creating a <code>BannerView</code> with a frame, configuration ID, and ad size.
/// \param frame The frame rectangle for the view.
///
/// \param configID The configuration ID for the ad unit.
///
/// \param adSize The size of the ad.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame configID:(NSString * _Nonnull)configID adSize:(CGSize)adSize;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
/// Loads the ad for the banner view.
- (void)loadAd;
/// Sets the stored auction response.
/// \param storedAuction The stored auction response string.
///
- (void)setStoredAuctionResponseWithStoredAuction:(NSString * _Nonnull)storedAuction;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Stops the auto-refresh of the ad.
- (void)stopRefresh;
/// Subscribe to plugin renderer events
- (void)setPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate;
- (void)trackImpressionForDisplayView:(UIView * _Nonnull)forDisplayView;
- (UIViewController * _Nullable)viewControllerForModalPresentationFromDisplayView:(UIView * _Nonnull)fromDisplayView SWIFT_WARN_UNUSED_RESULT;
- (void)didLeaveAppFrom:(UIView * _Nonnull)displayView;
- (void)willPresentModalFrom:(UIView * _Nonnull)displayView;
- (void)didDismissModalFrom:(UIView * _Nonnull)displayView;
- (void)bannerAdLoader:(PBMBannerAdLoader * _Nonnull)bannerAdLoader loadedAdView:(UIView * _Nonnull)adView adSize:(CGSize)adSize;
- (void)adLoadFlowController:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController failedWithError:(NSError * _Nullable)error;
- (void)adLoadFlowControllerWillSendBidRequest:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (void)adLoadFlowControllerWillRequestPrimaryAd:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController;
- (BOOL)adLoadFlowControllerShouldContinue:(PBMAdLoadFlowController * _Nonnull)adLoadFlowController SWIFT_WARN_UNUSED_RESULT;
- (void)willPresentModal;
- (void)didDismissModal;
- (void)willLeaveApp;
@property (nonatomic, readonly, strong) UIViewController * _Nullable viewControllerForPresentingModal;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end


/// A protocol for handling events related to banner ads in the PBM SDK.
/// This protocol defines methods and properties for managing events associated with banner ads, including loading events, user interactions, and ad sizes. Implementing this protocol allows for custom handling of these events within the PBM SDK.
SWIFT_PROTOCOL("_TtP12PrebidMobile18BannerViewDelegate_")
@protocol BannerViewDelegate <NSObject>
/// Asks the delegate for a view controller instance to use for presenting modal views
/// as a result of user interaction on an ad. Usual implementation may simply return self,
/// if it is view controller class.
- (UIViewController * _Nullable)bannerViewPresentationController SWIFT_WARN_UNUSED_RESULT;
@optional
/// Notifies the delegate that an ad has been successfully loaded and rendered.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerView:(BannerView * _Nonnull)bannerView didReceiveAdWithAdSize:(CGSize)adSize;
/// Notifies the delegate of an error encountered while loading or rendering an ad.
/// \param bannerView The BannerView instance sending the message.
///
/// \param error The error encountered while attempting to receive or render the
///
- (void)bannerView:(BannerView * _Nonnull)bannerView didFailToReceiveAdWith:(NSError * _Nonnull)error;
/// Notifies the delegate whenever current app goes in the background due to user click.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerViewWillLeaveApplication:(BannerView * _Nonnull)bannerView;
/// Notifies delegate that the banner view will launch a modal
/// on top of the current view controller, as a result of user interaction.
/// \param bannerView The BannerView instance sending the message. 
///
- (void)bannerViewWillPresentModal:(BannerView * _Nonnull)bannerView;
/// Notifies delegate that the banner view has dismissed the modal on top of
/// the current view controller.
/// \param bannerView The BannerView instance sending the message.
///
- (void)bannerViewDidDismissModal:(BannerView * _Nonnull)bannerView;
@end

@class PBMORTBBidExtSkadn;
@class PBMORTBAdConfiguration;
@class PBMORTBRewardedConfiguration;
@class PBMORTBExtPrebidEvents;
@class PBMORTBBidExt;

SWIFT_CLASS("_TtC12PrebidMobile3Bid")
@interface Bid : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull KEY_RENDERER_NAME;)
+ (NSString * _Nonnull)KEY_RENDERER_NAME SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull KEY_RENDERER_VERSION;)
+ (NSString * _Nonnull)KEY_RENDERER_VERSION SWIFT_WARN_UNUSED_RESULT;
/// Bid price expressed as CPM although the actual transaction is for a unit impression only.
/// Note that while the type indicates float, integer math is highly recommended
/// when handling currencies (e.g., BigDecimal in Java).
@property (nonatomic, readonly) float price;
/// Billing notice URL called by the exchange when a winning bid
/// becomes billable based on exchange-specific business policy
/// (e.g., typically delivered, viewed, etc.).
@property (nonatomic, readonly, copy) NSString * _Nullable burl;
/// Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered,
/// viewed, or billable ad); optional means of serving ad markup.
/// Substitution macros (Section 4.4) may be included in both the URL and optionally returned markup.
@property (nonatomic, readonly, copy) NSString * _Nullable nurl;
/// Optional means of conveying ad markup in case the bid wins; supersedes the win notice
/// if markup is included in both.
/// Substitution macros (Section 4.4) may be included.
@property (nonatomic, readonly, copy) NSString * _Nullable adm;
/// Ad size
@property (nonatomic, readonly) CGSize size;
/// Targeting information that needs to be passed to the ad server SDK.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingInfo;
/// Targeting information that needs to be passed to the ad server SDK.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable meta;
/// SKAdNetwork parameters about an App Store product.
/// Used in the StoreKit
@property (nonatomic, readonly, strong) PBMORTBBidExtSkadn * _Nullable skadn;
/// Prebid ad format
@property (nonatomic, readonly, strong) AdFormat * _Nullable adFormat;
/// Prebid video ad configuration
@property (nonatomic, readonly, strong) PBMORTBAdConfiguration * _Nullable videoAdConfiguration;
/// Preffered plugin renderer name
@property (nonatomic, readonly, copy) NSString * _Nullable pluginRendererName;
/// Preffered plugin renderer version
@property (nonatomic, readonly, copy) NSString * _Nullable pluginRendererVersion;
@property (nonatomic, readonly, strong) PBMORTBRewardedConfiguration * _Nullable rewardedConfig;
/// Returns YES if this bid is intented for display.
@property (nonatomic, readonly) BOOL isWinning;
@property (nonatomic, readonly, strong) PBMORTBExtPrebidEvents * _Nullable events;
@property (nonatomic, readonly, strong) PBMORTBBid<PBMORTBBidExt *> * _Nonnull bid;
- (nonnull instancetype)initWithBid:(PBMORTBBid<PBMORTBBidExt *> * _Nonnull)bid OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@interface Bid (SWIFT_EXTENSION(PrebidMobile))
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull impressionTrackingURLs;
@end


/// Contains information about bid.
SWIFT_CLASS_NAMED("BidInfo")
@interface PBMBidInfo : NSObject
/// Key to get Prebid win event from <code>events</code>
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull EVENT_WIN;)
+ (NSString * _Nonnull)EVENT_WIN SWIFT_WARN_UNUSED_RESULT;
/// Key to get Prebid imp event from <code>events</code>
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull EVENT_IMP;)
+ (NSString * _Nonnull)EVENT_IMP SWIFT_WARN_UNUSED_RESULT;
/// The result code of the bid request
@property (nonatomic, readonly) enum ResultCode resultCode;
/// Targeting keywords associated with the bid
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingKeywords;
/// The cache ID for native ads
@property (nonatomic, readonly, copy) NSString * _Nullable nativeAdCacheId;
/// Events related to the bid
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nonnull events;
/// Retrieves the expiration time of the bid as an <code>NSNumber</code>.
- (NSNumber * _Nullable)getExp SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL_NAMED("BidRequesterProtocol")
@protocol PBMBidRequesterProtocol
- (void)requestBidsWithCompletion:(void (^ _Nonnull)(BidResponse * _Nullable, NSError * _Nullable))completion;
@end

@class Prebid;
@class Targeting;

SWIFT_PROTOCOL_NAMED("BidRequester")
@protocol PBMBidRequester <PBMBidRequesterProtocol>
- (nonnull instancetype)initWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection sdkConfiguration:(Prebid * _Nonnull)sdkConfiguration targeting:(Targeting * _Nonnull)targeting adUnitConfiguration:(AdUnitConfig * _Nonnull)adUnitConfiguration;
@end


@class PBMORTBBidResponseExt;

SWIFT_CLASS("_TtC12PrebidMobile11BidResponse")
@interface BidResponse : NSObject
@property (nonatomic, copy) NSString * _Nullable adUnitId;
@property (nonatomic, readonly, copy) NSArray<Bid *> * _Nullable allBids;
@property (nonatomic, readonly, strong) Bid * _Nullable winningBid;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable targetingInfo;
@property (nonatomic, readonly, strong) NSNumber * _Nullable tmaxrequest;
@property (nonatomic, readonly, strong) PBMORTBBidResponseExt * _Nullable ext;
- (nonnull instancetype)initWithAdUnitId:(NSString * _Nullable)adUnitId targetingInfo:(NSDictionary<NSString *, NSString *> * _Nullable)targetingInfo;
- (nonnull instancetype)initWithJsonDictionary:(JsonDictionary * _Nonnull)jsonDictionary;
- (void)setTargetingInfoWith:(NSDictionary<NSString *, NSString *> * _Nonnull)newValue;
- (void)addTargetingInfoValueWithKey:(NSString * _Nonnull)key value:(NSString * _Nonnull)value;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end




SWIFT_CLASS_NAMED("CacheManager")
@interface PBMCacheManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) NSTimeInterval cacheManagerExpireInterval;)
+ (NSTimeInterval)cacheManagerExpireInterval SWIFT_WARN_UNUSED_RESULT;
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMCacheManager * _Nonnull shared;)
+ (PBMCacheManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The initializer that needs to be created only once
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (NSString * _Nullable)saveWithContent:(NSString * _Nonnull)content expireInterval:(NSTimeInterval)expireInterval SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isValidWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, PBMClickbrowserType, "ClickbrowserType", open) {
  PBMClickbrowserTypeEmbedded = 0,
  PBMClickbrowserTypeNative = 1,
};


SWIFT_CLASS("_TtC12PrebidMobile18SingleContainerInt")
@interface SingleContainerInt : NSObject
@property (nonatomic, readonly) NSInteger value;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) NSUInteger hash;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Native context subtype asset.
SWIFT_CLASS("_TtC12PrebidMobile14ContextSubType")
@interface ContextSubType : SingleContainerInt
/// Represents a general context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull General;)
+ (ContextSubType * _Nonnull)General SWIFT_WARN_UNUSED_RESULT;
/// Represents an article context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Article;)
+ (ContextSubType * _Nonnull)Article SWIFT_WARN_UNUSED_RESULT;
/// Represents a video context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Video;)
+ (ContextSubType * _Nonnull)Video SWIFT_WARN_UNUSED_RESULT;
/// Represents an audio context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Audio;)
+ (ContextSubType * _Nonnull)Audio SWIFT_WARN_UNUSED_RESULT;
/// Represents an image context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Image;)
+ (ContextSubType * _Nonnull)Image SWIFT_WARN_UNUSED_RESULT;
/// Represents a user-generated content context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull UserGenerated;)
+ (ContextSubType * _Nonnull)UserGenerated SWIFT_WARN_UNUSED_RESULT;
/// Represents a social media context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Social;)
+ (ContextSubType * _Nonnull)Social SWIFT_WARN_UNUSED_RESULT;
/// Represents an email context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull email;)
+ (ContextSubType * _Nonnull)email SWIFT_WARN_UNUSED_RESULT;
/// Represents a chat or instant messaging context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull chatIM;)
+ (ContextSubType * _Nonnull)chatIM SWIFT_WARN_UNUSED_RESULT;
/// Represents a product selling context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull SellingProduct;)
+ (ContextSubType * _Nonnull)SellingProduct SWIFT_WARN_UNUSED_RESULT;
/// Represents an App Store context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull AppStore;)
+ (ContextSubType * _Nonnull)AppStore SWIFT_WARN_UNUSED_RESULT;
/// Represents a review site context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull ReviewSite;)
+ (ContextSubType * _Nonnull)ReviewSite SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextSubType * _Nonnull Custom;)
+ (ContextSubType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Native context type asset.
SWIFT_CLASS("_TtC12PrebidMobile11ContextType")
@interface ContextType : SingleContainerInt
/// Represents a content context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Content;)
+ (ContextType * _Nonnull)Content SWIFT_WARN_UNUSED_RESULT;
/// Represents a social media context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Social;)
+ (ContextType * _Nonnull)Social SWIFT_WARN_UNUSED_RESULT;
/// Represents a product context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Product;)
+ (ContextType * _Nonnull)Product SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom context type.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ContextType * _Nonnull Custom;)
+ (ContextType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("CreativeModel")
@interface PBMCreativeModel : NSObject
@property (nonatomic, strong) PBMAdConfiguration * _Nullable adConfiguration;
@property (nonatomic, strong) PBMAdModelEventTracker * _Nullable eventTracker;
@property (nonatomic, strong) NSNumber * _Nullable displayDurationInSeconds;
@property (nonatomic, strong) NSNumber * _Nullable skipOffset;
@property (nonatomic) NSInteger width;
@property (nonatomic) NSInteger height;
@property (nonatomic, copy) NSString * _Nullable html;
@property (nonatomic, copy) NSString * _Nullable targetURL;
@property (nonatomic, copy) NSString * _Nullable videoFileURL;
@property (nonatomic, copy) NSString * _Nullable revenue;
@property (nonatomic, strong) PBMVideoVerificationParameters * _Nullable verificationParameters;
@property (nonatomic, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull trackingURLs;
@property (nonatomic, copy) NSString * _Nullable adTrackingTemplateURL;
@property (nonatomic, strong) PBMAdDetails * _Nullable adDetails;
@property (nonatomic, copy) NSString * _Nullable clickThroughURL;
@property (nonatomic) BOOL isCompanionAd;
@property (nonatomic) BOOL hasCompanionAd;
@property (nonatomic) BOOL userHasEarnedReward;
@property (nonatomic) BOOL userPostRewardEventSent;
@property (nonatomic, strong) NSNumber * _Nullable rewardTime;
@property (nonatomic, strong) NSNumber * _Nullable postRewardTime;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithAdConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration OBJC_DESIGNATED_INITIALIZER;
@end


/// Enum representing different types of native data assets.
typedef SWIFT_ENUM(NSInteger, DataAsset, open) {
  DataAssetSponsored = 1,
  DataAssetDescription = 2,
  DataAssetRating = 3,
  DataAssetLikes = 4,
  DataAssetDownloads = 5,
  DataAssetPrice = 6,
  DataAssetSaleprice = 7,
  DataAssetPhone = 8,
  DataAssetAddress = 9,
  DataAssetDescription2 = 10,
  DataAssetDisplayurl = 11,
  DataAssetCtatext = 12,
/// Custom type for user-defined data assets
  DataAssetCustom = 13,
};

@class NSDate;

SWIFT_CLASS_NAMED("DateFormatService")
@interface PBMDateFormatService : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMDateFormatService * _Nonnull shared;)
+ (PBMDateFormatService * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (NSDate * _Nullable)formatISO8601For:(NSString * _Nullable)strDate SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile19PluginEventDelegate_")
@protocol PluginEventDelegate <NSObject>
- (NSString * _Nonnull)getPluginName SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile26DefaultPluginEventDelegate")
@interface DefaultPluginEventDelegate : NSObject <PluginEventDelegate>
- (NSString * _Nonnull)getPluginName SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC12PrebidMobile18DemandResponseInfo")
@interface DemandResponseInfo : NSObject
@property (nonatomic, readonly) enum ResultCode fetchDemandResult;
@property (nonatomic, readonly, strong) Bid * _Nullable bid;
- (nonnull instancetype)initWithFetchDemandResult:(enum ResultCode)fetchDemandResult bid:(Bid * _Nullable)bid configId:(NSString * _Nullable)configId winNotifierBlock:(void (^ _Nonnull)(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))winNotifierBlock bidResponse:(BidResponse * _Nullable)bidResponse OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// A protocol that defines methods for receiving loading events related to ad display views.
/// This protocol is used to notify the delegate when an ad has successfully loaded or if an error occurs during loading.
SWIFT_PROTOCOL("_TtP12PrebidMobile26DisplayViewLoadingDelegate_")
@protocol DisplayViewLoadingDelegate <NSObject>
/// Notifies that the ad has successfully loaded in the display view.
/// \param displayView The <code>UIView</code> instance in which the ad has been loaded.
///
- (void)displayViewDidLoadAd:(UIView * _Nonnull)displayView;
/// Notifies that an error occurred during the ad loading process.
/// \param displayView The <code>UIView</code> instance where the ad was intended to load.
///
/// \param error An <code>Error</code> instance describing the issue that occurred during the ad loading.
///
- (void)displayView:(UIView * _Nonnull)displayView didFailWithError:(NSError * _Nonnull)error;
@end


/// This class is a proxy container for event trackers.
/// You can add (and remove) any quantity of trackers.
/// Each tracker must correspond to EventTrackerProtocol the EventTracker Protocol.
/// EventManager implements EventTrackerProtocol.
/// It broadcasts protocol calls to the all registered trackers.
SWIFT_CLASS_NAMED("EventManager")
@interface PBMEventManager : NSObject <PBMEventTrackerProtocol>
- (void)registerTracker:(id <PBMEventTrackerProtocol> _Nonnull)tracker;
- (void)unregisterTracker:(id <PBMEventTrackerProtocol> _Nonnull)tracker;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



/// Native event tracking type.
SWIFT_CLASS("_TtC12PrebidMobile13EventTracking")
@interface EventTracking : SingleContainerInt
/// Represents image-based event tracking.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull Image;)
+ (EventTracking * _Nonnull)Image SWIFT_WARN_UNUSED_RESULT;
/// Represents JavaScript-based event tracking.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull js;)
+ (EventTracking * _Nonnull)js SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom event tracking method.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventTracking * _Nonnull Custom;)
+ (EventTracking * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Class representing different event types.
SWIFT_CLASS("_TtC12PrebidMobile9EventType")
@interface EventType : SingleContainerInt
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull Impression;)
+ (EventType * _Nonnull)Impression SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableImpression50;)
+ (EventType * _Nonnull)ViewableImpression50 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableImpression100;)
+ (EventType * _Nonnull)ViewableImpression100 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull ViewableVideoImpression50;)
+ (EventType * _Nonnull)ViewableVideoImpression50 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) EventType * _Nonnull Custom;)
+ (EventType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end

@class UserUniqueID;

/// Defines the User Id Object from an External Thrid Party Source
/// https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/2.x_official_extensions/eids.md
SWIFT_CLASS("_TtC12PrebidMobile14ExternalUserId")
@interface ExternalUserId : NSObject
/// The source of the external user ID.
@property (nonatomic, copy) NSString * _Nonnull source;
/// Array of extended ID UID objects from the given source.
@property (nonatomic, copy) NSArray<UserUniqueID *> * _Nonnull uids;
/// Additional attributes related to the external user ID, represented as an optional dictionary.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new <code>ExternalUserId</code> object.
/// \param source The source of the external user ID (e.g., a third-party provider).
///
/// \param uids A list of <code>UserUniqueID</code> objects representing the user’s unique identifiers.
///
/// \param ext Optional dictionary for additional attributes related to the external user ID. Default is <code>nil</code>.
///
- (nonnull instancetype)initWithSource:(NSString * _Nonnull)source uids:(NSArray<UserUniqueID *> * _Nonnull)uids ext:(NSDictionary<NSString *, id> * _Nullable)ext OBJC_DESIGNATED_INITIALIZER;
/// Converts the <code>ExternalUserId</code> instance to a JSON dictionary.
- (NSDictionary<NSString *, id> * _Nonnull)toJSONDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol PBMWinNotifier;
@protocol PBMViewExposure;
@protocol PBMModalState;
@class PBMInterstitialDisplayProperties;
@protocol PBMInterstitialAdLoader;
@protocol PBMInterstitialAdLoaderDelegate;

SWIFT_CLASS_NAMED("Factory")
@interface PBMFactory : NSObject
+ (id <PBMBidRequester> _Nonnull)createBidRequesterWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection sdkConfiguration:(Prebid * _Nonnull)sdkConfiguration targeting:(Targeting * _Nonnull)targeting adUnitConfiguration:(AdUnitConfig * _Nonnull)adUnitConfiguration SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMWinNotifier> _Nonnull WinNotifierType;)
+ (Class <PBMWinNotifier> _Nonnull)WinNotifierType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMWinNotifier> _Nonnull)createWinNotifier SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMAdViewManager> _Nonnull AdViewManagerType;)
+ (Class <PBMAdViewManager> _Nonnull)AdViewManagerType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMAdViewManager> _Nonnull)createAdViewManagerWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection modalManagerDelegate:(id <PBMModalManagerDelegate> _Nullable)modalManagerDelegate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMTransaction> _Nonnull TransactionType;)
+ (Class <PBMTransaction> _Nonnull)TransactionType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMTransaction> _Nonnull)createTransactionWithServerConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection adConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration models:(NSArray<PBMCreativeModel *> * _Nonnull)models SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMViewExposure> _Nonnull ViewExposureType;)
+ (Class <PBMViewExposure> _Nonnull)ViewExposureType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMViewExposure> _Nonnull)createViewExposureWithExposureFactor:(float)exposureFactor visibleRectangle:(CGRect)visibleRectangle occlusionRectangles:(NSArray<NSValue *> * _Nullable)occlusionRectangles SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMModalState> _Nonnull ModalStateType;)
+ (Class <PBMModalState> _Nonnull)ModalStateType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMModalState> _Nonnull)createModalStateWithView:(UIView * _Nonnull)view adConfiguration:(PBMAdConfiguration * _Nullable)adConfiguration displayProperties:(PBMInterstitialDisplayProperties * _Nullable)displayProperties onStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStatePopFinished onStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStateHasLeftApp nextOnStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStatePopFinished nextOnStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStateHasLeftApp onModalPushedBlock:(void (^ _Nullable)(void))onModalPushedBlock SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class <PBMInterstitialAdLoader> _Nonnull PBMInterstitialAdLoaderType;)
+ (Class <PBMInterstitialAdLoader> _Nonnull)PBMInterstitialAdLoaderType SWIFT_WARN_UNUSED_RESULT;
+ (id <PBMInterstitialAdLoader> _Nonnull)PBMInterstitialAdLoaderWithDelegate:(id <PBMInterstitialAdLoaderDelegate> _Nonnull)delegate eventHandler:(id <PBMPrimaryAdRequesterProtocol> _Nonnull)eventHandler SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSURL;

SWIFT_CLASS_NAMED("HiddenWebViewManager")
@interface PBMHiddenWebViewManager : NSObject
- (nonnull instancetype)initWithFrame:(CGRect)frame landingPageString:(NSURL * _Nonnull)landingPageString OBJC_DESIGNATED_INITIALIZER;
- (void)openHiddenWebView;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A singleton class that manages the Prebid server URL, including a custom URL.
SWIFT_CLASS("_TtC12PrebidMobile4Host")
@interface Host : NSObject
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Host * _Nonnull shared;)
+ (Host * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (BOOL)setHostURL:(NSString * _Nullable)urlString nonTrackingURLString:(NSString * _Nullable)nonTrackingURLString error:(NSError * _Nullable * _Nullable)error;
- (NSString * _Nullable)getHostURLAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function verifies if the prebid server URL is in the url format
- (BOOL)verifyUrlWithUrlString:(NSString * _Nullable)urlString SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile13IMAAdSlotSize")
@interface IMAAdSlotSize : SingleContainerInt
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size400x300;)
+ (IMAAdSlotSize * _Nonnull)Size400x300 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size640x480;)
+ (IMAAdSlotSize * _Nonnull)Size640x480 SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAAdSlotSize * _Nonnull Size320x480;)
+ (IMAAdSlotSize * _Nonnull)Size320x480 SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC12PrebidMobile8IMAUtils")
@interface IMAUtils : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMAUtils * _Nonnull shared;)
+ (IMAUtils * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (NSString * _Nullable)generateInstreamUriForGAMWithAdUnitID:(NSString * _Nonnull)adUnitID adSlotSizes:(NSArray<IMAAdSlotSize *> * _Nonnull)adSlotSizes customKeywords:(NSDictionary<NSString *, NSString *> * _Nullable)customKeywords error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


/// Native image asset type.
SWIFT_CLASS("_TtC12PrebidMobile10ImageAsset")
@interface ImageAsset : SingleContainerInt
/// Represents an icon image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Icon;)
+ (ImageAsset * _Nonnull)Icon SWIFT_WARN_UNUSED_RESULT;
/// Represents the main image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Main;)
+ (ImageAsset * _Nonnull)Main SWIFT_WARN_UNUSED_RESULT;
/// Represents a custom image asset.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ImageAsset * _Nonnull Custom;)
+ (ImageAsset * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents an instream video ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile19InstreamVideoAdUnit")
@interface InstreamVideoAdUnit : AdUnit <PBMVideoBasedAdUnitProtocol>
/// The video parameters for this ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// Initializes a new instream video ad unit.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param size The size of the ad.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId size:(CGSize)size OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("InterstitialAd")
@protocol PBMInterstitialAd <PBMPrimaryAdRequesterProtocol>
/// @abstract Return whether an interstitial is ready for display
@property (nonatomic, readonly) BOOL isReady;
/// @abstract PBM SDK calls this method to show the interstitial ad from the ad server SDK
/// @param controller view controller to be used for presenting the interstitial ad
- (void)showFromViewController:(UIViewController * _Nullable)viewController;
@optional
/// @abstract Called by PBM SDK to notify primary ad server.
- (void)trackImpression;
@end

@class InterstitialController;

SWIFT_PROTOCOL_NAMED("InterstitialAdLoaderDelegate")
@protocol PBMInterstitialAdLoaderDelegate
- (void)interstitialAdLoader:(id <PBMInterstitialAdLoader> _Nonnull)interstitialAdLoader loadedAd:(void (^ _Nonnull)(UIViewController * _Nullable))showBlock isReadyBlock:(BOOL (^ _Nonnull)(void))isReadyBlock;
- (void)interstitialAdLoader:(id <PBMInterstitialAdLoader> _Nonnull)interstitialAdLoader createdInterstitialController:(InterstitialController * _Nonnull)interstitialController;
@end


/// Represents an interstitial ad unit built for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile18InterstitialAdUnit")
@interface InterstitialAdUnit : AdUnit <PBMBannerBasedAdUnitProtocol, PBMVideoBasedAdUnitProtocol>
/// The banner parameters for this ad unit.
@property (nonatomic, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters for this ad unit.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// The ad formats for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// Initializes a new interstitial ad unit with a unique configuration identifier.
/// \param configId The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new interstitial ad unit with a minimum width and height percentage.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param minWidthPerc The minimum width percentage of the ad.
///
/// \param minHeightPerc The minimum height percentage of the ad.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId minWidthPerc:(NSInteger)minWidthPerc minHeightPerc:(NSInteger)minHeightPerc;
/// Sets the view in which Prebid will start tracking an impression.
- (void)activatePrebidImpressionTracker;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow.
/// Ensure this method is called before presenting interstitials.
/// This feature is not available for video ads.
- (void)activatePrebidSKAdNetworkStoreKitAdsFlow;
/// Attempts to display an <code>SKOverlay</code> if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented.
- (void)dismissSKOverlayIfAvailable;
@end

@class InterstitialRenderingAdUnit;

/// Protocol for interaction with the InterstitialAdUnit .
/// All messages will be invoked on the main thread.
SWIFT_PROTOCOL("_TtP12PrebidMobile26InterstitialAdUnitDelegate_")
@protocol InterstitialAdUnitDelegate <NSObject>
@optional
/// Called when an ad is loaded and ready for display
- (void)interstitialDidReceiveAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when the load process fails to produce a viable ad
- (void)interstitial:(InterstitialRenderingAdUnit * _Nonnull)interstitial didFailToReceiveAdWithError:(NSError * _Nullable)error;
/// Called when the interstitial view will be launched,  as a result of show() method.
- (void)interstitialWillPresentAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when the interstitial is dismissed by the user
- (void)interstitialDidDismissAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when an ad causes the sdk to leave the app
- (void)interstitialWillLeaveApplication:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
/// Called when user clicked the ad
- (void)interstitialDidClickAd:(InterstitialRenderingAdUnit * _Nonnull)interstitial;
@end


/// A protocol that defines the interface for controlling and interacting with interstitial ads.
/// This protocol allows loading and displaying interstitial ads, as well as managing interactions with them.
SWIFT_PROTOCOL("_TtP12PrebidMobile42PrebidMobileInterstitialControllerProtocol_")
@protocol PrebidMobileInterstitialControllerProtocol <NSObject>
/// Loads the ad content for the interstitial.
/// important:
/// This method is expected to call the <code>loadingDelegate</code> once the ad is successfully loaded or if any error occurred.
- (void)loadAd;
/// Displays the interstitial ad.
- (void)show;
@end

@protocol InterstitialControllerLoadingDelegate;
@protocol InterstitialControllerInteractionDelegate;

SWIFT_CLASS("_TtC12PrebidMobile22InterstitialController")
@interface InterstitialController : NSObject <PBMAdViewManagerDelegate, PrebidMobileInterstitialControllerProtocol>
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Sets an ad unit as a rewarded
@property (nonatomic) BOOL isRewarded;
@property (nonatomic, strong) PBMVideoControlsConfiguration * _Nonnull videoControlsConfig;
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
@property (nonatomic, weak) id <InterstitialControllerLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <InterstitialControllerInteractionDelegate> _Nullable interactionDelegate;
- (nonnull instancetype)initWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithBid:(Bid * _Nonnull)bid configId:(NSString * _Nonnull)configId;
- (void)loadAd;
- (void)show;
- (UIViewController * _Nullable)viewControllerForModalPresentation SWIFT_WARN_UNUSED_RESULT;
- (void)adLoaded:(PBMAdDetails * _Nonnull)pbmAdDetails;
- (void)failedToLoad:(NSError * _Nonnull)error;
- (void)adDidComplete;
- (void)adDidDisplay;
- (void)adWasClicked;
- (void)adViewWasClicked;
- (void)adDidLeaveApp;
- (void)adDidClose;
- (void)adDidSendRewardedEvent;
- (PBMInterstitialDisplayProperties * _Nonnull)interstitialDisplayProperties SWIFT_WARN_UNUSED_RESULT;
- (void)adClickthroughDidClose;
- (void)adDidExpand;
- (void)adDidCollapse;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)reportFailureWithError:(NSError * _Nullable)error;
@end

@class PrebidReward;

/// A protocol that defines methods for handling user interactions and lifecycle events related to interstitial ads.
SWIFT_PROTOCOL("_TtP12PrebidMobile41InterstitialControllerInteractionDelegate_")
@protocol InterstitialControllerInteractionDelegate <NSObject>
/// Tracks an impression for the specified interstitial ad controller.
/// \param forInterstitialController The interstitial ad controller associated with the impression.
///
- (void)trackImpressionForInterstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)forInterstitialController;
/// Notifies that the interstitial ad was clicked by the user.
/// \param interstitialController The interstitial ad controller associated with the click.
///
- (void)interstitialControllerDidClickAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has been closed by the user.
/// \param interstitialController The interstitial ad controller that was closed.
///
- (void)interstitialControllerDidCloseAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the user has left the app after interacting with the interstitial ad.
/// \param interstitialController The interstitial ad controller that was displayed when the user left the app.
///
- (void)interstitialControllerDidLeaveApp:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has been displayed to the user.
/// \param interstitialController The interstitial ad controller that displayed the ad.
///
- (void)interstitialControllerDidDisplay:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that the interstitial ad has completed its presentation.
/// \param interstitialController The interstitial ad controller associated with the completed ad.
///
- (void)interstitialControllerDidComplete:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Requests the <code>UIViewController</code> to be used for presenting modals from the interstitial ad controller.
/// \param fromInterstitialController The interstitial ad controller requesting the view controller.
///
- (UIViewController * _Nullable)viewControllerForModalPresentationFromInterstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)fromInterstitialController SWIFT_WARN_UNUSED_RESULT;
@optional
/// Notifies the delegate when a reward is granted to the user after interacting with a rewarded interstitial ad.
/// \param interstitialController The instance of the interstitial ad controller responsible for managing the ad.
///
/// \param reward An object containing details about the reward, such as the type and amount.
///
- (void)trackUserReward:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController :(PrebidReward * _Nonnull)reward;
@end


/// A protocol that defines methods for receiving loading events related to interstitial ad controllers.
SWIFT_PROTOCOL("_TtP12PrebidMobile37InterstitialControllerLoadingDelegate_")
@protocol InterstitialControllerLoadingDelegate <NSObject>
/// Notifies the delegate that the interstitial ad has successfully loaded.
/// \param interstitialController The interstitial ad controller that successfully loaded the ad.
///
- (void)interstitialControllerDidLoadAd:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController;
/// Notifies the delegate that an error occurred during the interstitial ad loading process.
/// \param interstitialController The interstitial ad controller that attempted to load the ad.
///
/// \param error An <code>Error</code> instance describing the issue that occurred during the ad loading.
///
- (void)interstitialController:(id <PrebidMobileInterstitialControllerProtocol> _Nonnull)interstitialController didFailWithError:(NSError * _Nonnull)error;
@end

@class UIColor;

SWIFT_CLASS_NAMED("InterstitialDisplayProperties")
@interface PBMInterstitialDisplayProperties : NSObject
@property (nonatomic) NSTimeInterval closeDelay;
@property (nonatomic) NSTimeInterval closeDelayLeft;
@property (nonatomic) CGRect contentFrame;
@property (nonatomic, strong) UIColor * _Nonnull contentViewColor;
@property (nonatomic) enum PBMInterstitialLayout interstitialLayout;
@property (nonatomic, readonly) BOOL rotationEnabled;
- (void)setButtonImageHidden;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (UIImage * _Nullable)getCloseButtonImage SWIFT_WARN_UNUSED_RESULT;
- (id _Nonnull)copy SWIFT_WARN_UNUSED_RESULT;
@end

@protocol InterstitialEventLoadingDelegate;
@protocol InterstitialEventInteractionDelegate;

SWIFT_PROTOCOL_NAMED("InterstitialEventHandlerProtocol")
@protocol PBMInterstitialEventHandlerProtocol <PBMInterstitialAd>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <InterstitialEventInteractionDelegate> _Nullable interactionDelegate;
@end


SWIFT_CLASS("_TtC12PrebidMobile34InterstitialEventHandlerStandalone")
@interface InterstitialEventHandlerStandalone : NSObject <PBMInterstitialEventHandlerProtocol>
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <InterstitialEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, readonly) BOOL isReady;
- (void)showFromViewController:(UIViewController * _Nullable)controller;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile36InterstitialEventInteractionDelegate_")
@protocol InterstitialEventInteractionDelegate <NSObject>
/// Call this when the ad server SDK is about to present a modal
- (void)willPresentAd;
/// Call this when the ad server SDK dissmisses a modal
- (void)didDismissAd;
/// Call this when the ad server SDK informs about app leave event as a result of user interaction.
- (void)willLeaveApp;
/// Call this when the ad server SDK informs about click event as a result of user interaction.
- (void)didClickAd;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile32InterstitialEventLoadingDelegate_")
@protocol InterstitialEventLoadingDelegate <NSObject>
- (void)prebidDidWin;
- (void)adServerDidWin;
- (void)failedWithError:(NSError * _Nullable)error;
@end

/// Determines the type of interstitial layout
typedef SWIFT_ENUM_NAMED(NSInteger, PBMInterstitialLayout, "InterstitialLayout", open) {
  PBMInterstitialLayoutUndefined = 0,
  PBMInterstitialLayoutPortrait = 1,
  PBMInterstitialLayoutLandscape = 2,
  PBMInterstitialLayoutAspectRatio = 3,
};


/// Represents an interstitial ad unit. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile27InterstitialRenderingAdUnit")
@interface InterstitialRenderingAdUnit : NSObject
/// A delegate for handling interactions with the ad unit.
@property (nonatomic, weak) id <InterstitialAdUnitDelegate> _Nullable delegate;
/// A Boolean value indicating whether the ad unit is ready to be displayed.
@property (nonatomic, readonly) BOOL isReady;
/// The set of ad formats supported by this ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// The banner parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// The area of the close button in the video controls as a percentage.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video controls.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// The area of the skip button in the video controls, specified as a percentage of the screen width.
@property (nonatomic) double skipButtonArea;
/// The position of the skip button in the video controls.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// The delay before the skip button appears, in seconds.
@property (nonatomic) double skipDelay;
/// A Boolean value indicating whether the video controls are muted.
@property (nonatomic) BOOL isMuted;
/// A Boolean value indicating whether the sound button is visible in the video controls.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Initializes a new <code>BaseInterstitialAdUnit</code> with the specified configuration ID.
/// \param configID The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and minimum size percentage.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id _Nullable)eventHandler;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID, minimum size percentage, and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage eventHandler:(id _Nonnull)eventHandler;
/// Loads a new ad.
- (void)loadAd;
/// Shows the ad from a specified view controller.
/// note:
/// This method must be called on the main thread.
/// \param controller The view controller from which the ad will be presented.
///
- (void)showFrom:(UIViewController * _Nonnull)controller;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("LocationManager")
@interface PBMLocationManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLocationManager * _Nonnull shared;)
+ (PBMLocationManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) BOOL locationUpdatesEnabled;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinates;
@property (nonatomic, readonly) BOOL coordinatesAreValid;
@property (nonatomic, readonly) CLLocationAccuracy horizontalAccuracy;
@property (nonatomic, readonly, copy) NSDate * _Nullable timestamp;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class CLLocationManager;
@class CLLocation;

@interface PBMLocationManager (SWIFT_EXTENSION(PrebidMobile)) <CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager * _Nonnull)manager didUpdateLocations:(NSArray<CLLocation *> * _Nonnull)locations;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nonnull)error;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

@class PBMLogLevel;
@protocol PrebidLogger;

/// This class serves as the central point for all logging operations within the SDK.
/// It allows for categorized logging based on severity levels (e.g., error, warning, debug) and offers options for both console and file-based logging.
/// It also provides the ability to set third-party logger.
SWIFT_CLASS_NAMED("Log")
@interface PBMLog : NSObject
/// The current logging level. Only messages at this level or higher will be logged.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) PBMLogLevel * _Nonnull logLevel;)
+ (PBMLogLevel * _Nonnull)logLevel SWIFT_WARN_UNUSED_RESULT;
+ (void)setLogLevel:(PBMLogLevel * _Nonnull)value;
/// Indicates whether logs should also be saved to a file.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL logToFile;)
+ (BOOL)logToFile SWIFT_WARN_UNUSED_RESULT;
+ (void)setLogToFile:(BOOL)value;
/// Sets a custom logger to handle log messages.
+ (void)setCustomLogger:(id <PrebidLogger> _Nonnull)logger;
+ (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
+ (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Writes a log message to the log file asynchronously.
/// \param message The log message to be written to the file.
///
+ (void)serialWriteToLog:(NSString * _Nonnull)message;
/// Reads the contents of the log file as a single string.
+ (NSString * _Nullable)getLogFileAsString SWIFT_WARN_UNUSED_RESULT;
/// Clears the contents of the log file.
+ (void)clearLogFile;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("LogLevel")
@interface PBMLogLevel : NSObject
@property (nonatomic) NSInteger rawValue;
@property (nonatomic, copy) NSString * _Nonnull stringValue;
- (nonnull instancetype)initWithStringValue:(NSString * _Nonnull)stringValue rawValue:(NSInteger)rawValue;
- (nonnull instancetype)initWithRawValue:(NSInteger)rawValue OBJC_DESIGNATED_INITIALIZER;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull debug;)
+ (PBMLogLevel * _Nonnull)debug SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull verbose;)
+ (PBMLogLevel * _Nonnull)verbose SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull info;)
+ (PBMLogLevel * _Nonnull)info SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull warn;)
+ (PBMLogLevel * _Nonnull)warn SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull error;)
+ (PBMLogLevel * _Nonnull)error SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMLogLevel * _Nonnull severe;)
+ (PBMLogLevel * _Nonnull)severe SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol PrebidMediationDelegate;

/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile21MediationBannerAdUnit")
@interface MediationBannerAdUnit : NSObject
/// Property that performs certain utilty work for the <code>MediationBannerAdUnit</code>
@property (nonatomic, readonly, strong) id <PrebidMediationDelegate> _Nonnull mediationDelegate;
/// The configuration ID for an ad unit
@property (nonatomic, readonly, copy) NSString * _Nonnull configID;
/// The ad format for the ad unit.
@property (nonatomic, strong) AdFormat * _Nonnull adFormat;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Parameters for configuring banner ads.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Parameters for configuring video ads.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The refresh interval for the ad.
@property (nonatomic) NSTimeInterval refreshInterval;
/// Additional sizes for the ad unit.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Initializes a new mediation banner ad unit with the specified configuration ID, size, and mediation delegate.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param size The size of the ad.
///
/// \param mediationDelegate The delegate for handling mediation.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID size:(CGSize)size mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
/// Makes bid request and setups mediation parameters.
/// \param completion The completion handler to call when the demand fetch is complete.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
/// Stops the auto-refresh for the ad unit.
- (void)stopRefresh;
/// Handles the event when the ad object fails to load an ad.
/// \param adObject The ad object that failed to load the ad.
///
/// \param error The error that occurred during the ad load.
///
- (void)adObjectDidFailToLoadAdWithAdObject:(UIView * _Nonnull)adObject with:(NSError * _Nonnull)error;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Base class for interstitial ads in Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile31MediationBaseInterstitialAdUnit")
@interface MediationBaseInterstitialAdUnit : NSObject
/// Parameters for configuring banner ads.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// Parameters for configuring video ads.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// Indicates whether the video ad is muted.
@property (nonatomic) BOOL isMuted;
/// Indicates whether the sound button is visible in the video ad.
@property (nonatomic) BOOL isSoundButtonVisible;
/// The area for the close button in the video ad.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video ad.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// The configuration ID for the ad unit.
@property (nonatomic, readonly, copy) NSString * _Nonnull configId;
/// Makes bid request and setups mediation parameters.
/// \param completion A closure called with the result code indicating the outcome of the demand fetch.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile23MediationBidInfoWrapper")
@interface MediationBidInfoWrapper : NSObject
@property (nonatomic, copy) NSString * _Nullable keywords;
@property (nonatomic, copy) NSDictionary * _Nullable localExtras;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile27MediationInterstitialAdUnit")
@interface MediationInterstitialAdUnit : MediationBaseInterstitialAdUnit
/// The ad format for the ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// Additional sizes for the ad unit.
@property (nonatomic, copy) NSArray<NSValue *> * _Nullable additionalSizes;
/// The area for the skip button in the video ad.
@property (nonatomic) double skipButtonArea;
/// The position of the skip button in the video ad.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// The delay before the skip button appears in the video ad.
@property (nonatomic) double skipDelay;
/// Convenience initializer for the mediation interstitial ad unit.
/// \param configId The unique identifier for the ad unit configuration.
///
/// \param mediationDelegate The delegate for handling mediation.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate;
/// The configuration ID for the ad unit.
@property (nonatomic, readonly, copy) NSString * _Nonnull configId;
@end

@class NativeRequest;
@class NativeEventTracker;
@class NativeAsset;
@class PlacementType;

/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile21MediationNativeAdUnit")
@interface MediationNativeAdUnit : NSObject
/// The native ad unit that makes native request.
@property (nonatomic, strong) NativeRequest * _Nonnull nativeAdUnit;
/// Initializes a new instance of the <code>MediationNativeAdUnit</code> with the specified configuration ID and mediation delegate.
/// \param configId The configuration ID for the ad unit.
///
/// \param mediationDelegate The delegate for mediation-related tasks.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
/// Adds event trackers to the native ad unit.
/// \param eventTrackers An array of <code>NativeEventTracker</code> objects to add.
///
- (void)addEventTracker:(NSArray<NativeEventTracker *> * _Nonnull)eventTrackers;
/// Adds native assets to the native ad unit.
/// \param assets An array of <code>NativeAsset</code> objects to add.
///
- (void)addNativeAssets:(NSArray<NativeAsset *> * _Nonnull)assets;
/// Sets the context type for the native ad unit.
/// \param contextType The context type to set.
///
- (void)setContextType:(ContextType * _Nonnull)contextType;
/// Sets the placement type for the native ad unit.
/// \param placementType The placement type to set.
///
- (void)setPlacementType:(PlacementType * _Nonnull)placementType;
/// Sets the placement count for the native ad unit.
/// \param placementCount The placement count to set.
///
- (void)setPlacementCount:(NSInteger)placementCount;
/// Sets the context subtype for the native ad unit.
/// \param contextSubType The context subtype to set.
///
- (void)setContextSubType:(ContextSubType * _Nonnull)contextSubType;
/// Sets the sequence for the native ad unit.
/// \param sequence The sequence to set.
///
- (void)setSequence:(NSInteger)sequence;
/// Sets the asset URL support for the native ad unit.
/// \param assetURLSupport The asset URL support value to set.
///
- (void)setAssetURLSupport:(NSInteger)assetURLSupport;
/// Sets the DURL support for the native ad unit.
/// \param dURLSupport The DURL support value to set.
///
- (void)setDURLSupport:(NSInteger)dURLSupport;
/// Sets the privacy value for the native ad unit.
/// \param privacy The privacy value to set.
///
- (void)setPrivacy:(NSInteger)privacy;
/// Sets the extended data for the native ad unit.
/// \param ext A dictionary containing the extended data to set.
///
- (void)setExt:(NSDictionary<NSString *, id> * _Nonnull)ext;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Makes bid request for the native ad unit and setups mediation parameters.
/// \param completion The completion handler to call with the result code.
///
- (void)fetchDemandWithCompletion:(void (^ _Nullable)(enum ResultCode))completion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("MediationNativeUtils")
@interface PBMMediationNativeUtils : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
/// This class is a part of Mediation API.
SWIFT_CLASS("_TtC12PrebidMobile23MediationRewardedAdUnit")
@interface MediationRewardedAdUnit : MediationBaseInterstitialAdUnit
/// Initializes a new instance of the <code>MediationRewardedAdUnit</code> with the specified configuration ID and mediation delegate.
/// \param configId The configuration ID for the ad unit.
///
/// \param mediationDelegate The delegate for mediation-related tasks.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId mediationDelegate:(id <PrebidMediationDelegate> _Nonnull)mediationDelegate OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("MediationUtils")
@interface PBMMediationUtils : NSObject
+ (BOOL)isServerParameterInTargetingInfo:(NSString * _Nonnull)serverParameter :(NSArray<NSString *> * _Nonnull)targetingInfo SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isServerParameterInTargetingInfoDict:(NSString * _Nonnull)serverParameter :(NSDictionary<NSString *, NSString *> * _Nonnull)targetingInfoDictionary SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isServerParameterDictInTargetingInfoDict:(NSDictionary<NSString *, NSString *> * _Nonnull)serverParametersDictionary :(NSDictionary<NSString *, NSString *> * _Nonnull)targetingInfoDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ModalState")
@protocol PBMModalState
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nullable adConfiguration;
@property (nonatomic, readonly, strong) PBMInterstitialDisplayProperties * _Nullable displayProperties;
@property (nonatomic, readonly, strong) UIView * _Nullable view;
@property (nonatomic) PBMMRAIDState _Nonnull mraidState;
@property (nonatomic, readonly, copy) void (^ _Nullable onStatePopFinished)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable onStateHasLeftApp)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable nextOnStatePopFinished)(id <PBMModalState> _Nullable);
@property (nonatomic, readonly, copy) void (^ _Nullable nextOnStateHasLeftApp)(id <PBMModalState> _Nullable);
@property (nonatomic, copy) PBMVoidBlock _Nullable onModalPushedBlock;
@property (nonatomic, readonly) BOOL isRotationEnabled;
- (nonnull instancetype)initWithView:(UIView * _Nonnull)view adConfiguration:(PBMAdConfiguration * _Nullable)adConfiguration displayProperties:(PBMInterstitialDisplayProperties * _Nullable)displayProperties onStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStatePopFinished onStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))onStateHasLeftApp nextOnStatePopFinished:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStatePopFinished nextOnStateHasLeftApp:(void (^ _Nullable)(id <PBMModalState> _Nullable))nextOnStateHasLeftApp onModalPushedBlock:(PBMVoidBlock _Nullable)onModalPushedBlock;
@end


@interface NSString (SWIFT_EXTENSION(PrebidMobile))
@property (nonatomic, readonly, strong) UIImage * _Nullable base64DecodedImage;
@end

@class NativeAdMarkup;
@protocol NativeAdEventDelegate;
@class NativeTitle;
@class NativeData;
@class NativeImage;
@class NativeEventTrackerResponse;
enum NativeDataAssetType : NSInteger;
enum NativeImageAssetType : NSInteger;

/// Represents a native ad and handles its various properties and functionalities.
SWIFT_CLASS("_TtC12PrebidMobile8NativeAd")
@interface NativeAd : NSObject
/// The native ad markup containing the ad assets.
@property (nonatomic, strong) NativeAdMarkup * _Nullable nativeAdMarkup;
/// The delegate to receive native ad events.
@property (nonatomic, weak) id <NativeAdEventDelegate> _Nullable delegate;
/// Returns an array of titles from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeTitle *> * _Nonnull titles;
/// Returns an array of data objects from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeData *> * _Nonnull dataObjects;
/// Returns an array of images from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeImage *> * _Nonnull images;
/// Returns an array of event trackers from the native ad markup.
@property (nonatomic, readonly, copy) NSArray<NativeEventTrackerResponse *> * _Nullable eventTrackers;
@property (nonatomic, copy) NSString * _Nullable privacyUrl;
/// Returns an array of data objects filtered by the specified data type.
- (NSArray<NativeData *> * _Nonnull)dataObjectsOf:(enum NativeDataAssetType)dataType SWIFT_WARN_UNUSED_RESULT;
/// Returns an array of images filtered by the specified image type.
- (NSArray<NativeImage *> * _Nonnull)imagesOf:(enum NativeImageAssetType)imageType SWIFT_WARN_UNUSED_RESULT;
/// Returns the first title text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable title;
/// Returns the URL of the main image from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable imageUrl;
/// Returns the URL of the icon image from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable iconUrl;
/// Returns the sponsored by text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable sponsoredBy;
/// Returns the description text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable text;
/// Returns the call-to-action text from the native ad markup.
@property (nonatomic, readonly, copy) NSString * _Nullable callToAction;
/// Returns landing URL of the clickable link.
@property (nonatomic, readonly, copy) NSString * _Nullable clickURL;
/// Creates a <code>NativeAd</code> instance from the given cache ID.
/// \param cacheId The cache ID to retrieve the bid response.
///
///
/// returns:
/// A <code>NativeAd</code> instance if successful, otherwise <code>nil</code>.
+ (NativeAd * _Nullable)createWithCacheId:(NSString * _Nonnull)cacheId SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Registers a view for tracking viewability and click events.
/// \param view The view to register.
///
/// \param clickableViews An array of views that should be clickable.
///
///
/// returns:
/// <code>true</code> if the view was successfully registered, otherwise <code>false</code>.
- (BOOL)registerViewWithView:(UIView * _Nullable)view clickableViews:(NSArray<UIView *> * _Nullable)clickableViews;
@end

@class PBMNativeMarkupRequestObject;

/// Represents the configuration for a native ad, including markup and version information.
SWIFT_CLASS_NAMED("NativeAdConfiguration")
@interface PBMNativeAdConfiguration : NSObject
/// Version of the Native Markup version in use.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The object containing the request details for the native markup.
@property (nonatomic, strong) PBMNativeMarkupRequestObject * _Nonnull markupRequestObject;
/// Initializes a new instance of <code>NativeAdMarkup</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile16NativeAdDelegate_")
@protocol NativeAdDelegate
/// A successful Prebid Native ad is returned
/// <ul>
///   <li>
///     Parameter:  A successful Prebid Native ad is returned
///   </li>
/// </ul>
- (void)nativeAdLoadedWithAd:(NativeAd * _Nonnull)ad;
/// Prebid Native was not found in the server returned response,
/// Please display the ad as regular ways
- (void)nativeAdNotFound;
/// Prebid Native ad was returned, however, the bid is not valid for displaying
/// Should be treated as on ad load failed
- (void)nativeAdNotValid;
@end


/// A protocol for handling events related to native ads.
/// This protocol defines optional methods that can be implemented to handle various events associated with native ads, such as expiration, clicks, and impressions. Implementing this protocol allows for custom handling of these events within the native ad lifecycle.
SWIFT_PROTOCOL("_TtP12PrebidMobile21NativeAdEventDelegate_")
@protocol NativeAdEventDelegate
@optional
/// Sent when the native ad is expired.
- (void)adDidExpireWithAd:(NativeAd * _Nonnull)ad;
/// Sent when the native view is clicked by the user.
- (void)adWasClickedWithAd:(NativeAd * _Nonnull)ad;
/// Sent when  an impression is recorded for an native ad
- (void)adDidLogImpressionWithAd:(NativeAd * _Nonnull)ad;
@end

@class NativeAdMarkupAsset;
@class NativeLink;

/// Represents the markup for a native ad, including assets, tracking URLs, and other metadata.
SWIFT_CLASS("_TtC12PrebidMobile14NativeAdMarkup")
@interface NativeAdMarkup : NSObject
/// Version of the Native Markup version in use.
@property (nonatomic, copy) NSString * _Nullable version;
/// List of native ad’s assets.
/// Required if no assetsurl.
/// Recommended as fallback even if assetsurl is provided.
@property (nonatomic, copy) NSArray<NativeAdMarkupAsset *> * _Nullable assets;
/// URL of an alternate source for the assets object.
/// The expected response is a JSON object mirroring the assets object in the bid response,
/// subject to certain requirements as specified in the individual objects.
/// Where present, overrides the asset object in the response.
@property (nonatomic, copy) NSString * _Nullable assetsurl;
/// URL where a dynamic creative specification may be found for populating this ad, per the Dynamic Content Ads Specification.
/// Note this is a beta option as the interpretation of the Dynamic Content Ads Specification and how to assign those elements
/// into a native ad is outside the scope of this spec and must be agreed offline between the parties
/// or as may be specified in a future revision of the Dynamic Content Ads spec.
/// Where present, overrides the asset object in the response.
@property (nonatomic, copy) NSString * _Nullable dcourl;
/// Destination Link.
/// This is default link object for the ad.
/// Individual assets can also have a link object which applies if the asset is activated(clicked).
/// If the asset doesn’t have a link object, the parent link object applies.
/// See LinkObject Definition
@property (nonatomic, strong) NativeLink * _Nullable link;
/// Array of impression tracking URLs, expected to return a 1x1 image or 204 response - typically only passed when using 3rd party trackers.
/// To be deprecated - replaced with eventtrackers.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable imptrackers;
/// Optional JavaScript impression tracker.
/// This is a valid HTML, Javascript is already wrapped in <script> tags.
/// It should be executed at impression time where it can be supported.
/// To be deprecated - replaced with eventtrackers.
@property (nonatomic, copy) NSString * _Nullable jstracker;
/// Array of tracking objects to run with the ad, in response to the declared supported methods in the request.
/// Replaces imptrackers and jstracker, to be deprecated.
@property (nonatomic, copy) NSArray<NativeEventTrackerResponse *> * _Nullable eventtrackers;
/// If support was indicated in the request, URL of a page informing the user about the buyer’s targeting activity.
@property (nonatomic, copy) NSString * _Nullable privacy;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new instance of <code>NativeAdMarkup</code> from a JSON string.
/// \param jsonString A JSON string representing the native ad markup.
///
- (nullable instancetype)initWithJsonString:(NSString * _Nullable)jsonString;
/// Initializes a new instance of <code>NativeAdMarkup</code> from a JSON dictionary.
/// \param jsonDictionary A dictionary representing the native ad markup.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new instance of <code>NativeAdMarkup</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents an asset in the native ad markup, which can be a title, image, data, or link.
SWIFT_CLASS("_TtC12PrebidMobile19NativeAdMarkupAsset")
@interface NativeAdMarkupAsset : NSObject
/// Title object for title assets.
/// See TitleObject definition.
@property (nonatomic, strong) NativeTitle * _Nullable title;
/// Image object for image assets.
/// See ImageObject definition.
@property (nonatomic, strong) NativeImage * _Nullable img;
/// Data object for ratings, prices etc.
@property (nonatomic, strong) NativeData * _Nullable data;
/// Link object for call to actions.
/// The link object applies if the asset item is activated (clicked).
/// If there is no link object on the asset, the parent link object on the bid response applies.
@property (nonatomic, strong) NativeLink * _Nullable link;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new instance of <code>NativeAdMarkupAsset</code> from a JSON dictionary.
/// \param jsonDictionary A dictionary representing the asset in the native ad markup.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new instance of <code>NativeAdMarkupAsset</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a generic native ad asset which could be a title, image, or data.
SWIFT_CLASS("_TtC12PrebidMobile11NativeAsset")
@interface NativeAsset : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Represents a data asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile15NativeAssetData")
@interface NativeAssetData : NativeAsset
/// Additional custom properties for the data asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetData</code>.
/// \param type The type of the data asset.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithType:(enum DataAsset)type required:(BOOL)required OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired SWIFT_UNAVAILABLE;
@end


/// Represents an image asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile16NativeAssetImage")
@interface NativeAssetImage : NativeAsset
/// The type of the image asset.
@property (nonatomic, strong) ImageAsset * _Nullable type;
/// The MIME types supported for the image asset.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable mimes;
/// Additional custom properties for the image asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetImage</code>.
/// \param minimumWidth The minimum width of the image.
///
/// \param minimumHeight The minimum height of the image.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithMinimumWidth:(NSInteger)minimumWidth minimumHeight:(NSInteger)minimumHeight required:(BOOL)required;
/// Initializes a new instance of <code>NativeAssetImage</code>.
/// \param isRequired A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a title asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile16NativeAssetTitle")
@interface NativeAssetTitle : NativeAsset
/// Additional custom properties for the title asset.
@property (nonatomic, strong) id _Nullable ext;
/// Initializes a new instance of <code>NativeAssetTitle</code>.
/// \param length The maximum length of the title.
///
/// \param required A boolean indicating whether the asset is required.
///
- (nonnull instancetype)initWithLength:(NSInteger)length required:(BOOL)required OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithIsRequired:(BOOL)isRequired SWIFT_UNAVAILABLE;
@end


/// Class representing native data elements in the ad markup.
SWIFT_CLASS("_TtC12PrebidMobile10NativeData")
@interface NativeData : NSObject
/// The formatted string of data to be displayed.
/// Can contain a formatted value such as “5 stars” or “$10” or “3.4 stars out of 5”.
@property (nonatomic, copy) NSString * _Nullable value;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new <code>NativeData</code> object with the provided JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing various types of native data assets that can be used in ads.
/// Each case represents a different type of data that can be provided in a native ad response.
/// Values are defined according to the type of data they represent, such as descriptive text, ratings, or pricing information.
typedef SWIFT_ENUM(NSInteger, NativeDataAssetType, open) {
  NativeDataAssetTypeUndefined = 0,
/// Sponsored By message where response should contain the brand name of the sponsor.
  NativeDataAssetTypeSponsored = 1,
/// Descriptive text associated with the product or service being advertised. Longer length of text in response may be truncated or ellipsed by the exchange.
  NativeDataAssetTypeDesc = 2,
/// Rating of the product being offered to the user. For example an app’s rating in an app store from 0-5.
  NativeDataAssetTypeRating = 3,
/// Number of social ratings or “likes” of the product being offered to the user.
  NativeDataAssetTypeLikes = 4,
/// Number downloads/installs of this product
  NativeDataAssetTypeDownloads = 5,
/// Price for product / app / in-app purchase. Value should include currency symbol in localised format.
  NativeDataAssetTypePrice = 6,
/// Sale price that can be used together with price to indicate a discounted price compared to a regular price. Value should include currency symbol in localised format.
  NativeDataAssetTypeSalePrice = 7,
/// Phone number
  NativeDataAssetTypePhone = 8,
/// Address
  NativeDataAssetTypeAddress = 9,
/// Additional descriptive text associated text with the product or service being advertised
  NativeDataAssetTypeDesc2 = 10,
/// Display URL for the text ad. To be used when sponsoring entity doesn’t own the content. IE sponsored by BRAND on SITE (where SITE is transmitted in this field).
  NativeDataAssetTypeDisplayURL = 11,
/// CTA description - descriptive text describing a ‘call to action’ button for the destination URL.
  NativeDataAssetTypeCtaText = 12,
/// Reserved for Exchange specific usage numbered above 500
  NativeDataAssetTypeCustom = 500,
};


/// Class representing an event tracker for native ads.
SWIFT_CLASS("_TtC12PrebidMobile18NativeEventTracker")
@interface NativeEventTracker : NSObject
/// Initializes a new <code>NativeEventTracker</code> instance.
/// \param event The event type to track.
///
/// \param methods The methods used for tracking the event.
///
- (nonnull instancetype)initWithEvent:(EventType * _Nonnull)event methods:(NSArray<EventTracking *> * _Nonnull)methods OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Class representing a response for a native event tracker.
SWIFT_CLASS("_TtC12PrebidMobile26NativeEventTrackerResponse")
@interface NativeEventTrackerResponse : NSObject
/// The URL of the image or js.
/// Required for image or js, optional for custom.
@property (nonatomic, copy) NSString * _Nullable url;
/// To be agreed individually with the exchange, an array of key:value objects for custom tracking,
/// for example the account number of the DSP with a tracking company. IE {“accountnumber”:”123”}.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable customdata;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeEventTrackerResponse</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Class representing an image asset in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile11NativeImage")
@interface NativeImage : NSObject
/// URL of the image asset.
@property (nonatomic, copy) NSString * _Nullable url;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeImage</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing various types of native image assets used in ads.
/// Each case corresponds to a different type of image asset that can be used in native ads.
/// Values are defined according to the role or importance of the image in the ad.
typedef SWIFT_ENUM(NSInteger, NativeImageAssetType, open) {
/// Represents an icon image, which is typically a small image used as a visual representation of the product or service.
  NativeImageAssetTypeIcon = 1,
/// Represents the main image of the ad, which is usually the primary visual element and central to the ad’s presentation.
  NativeImageAssetTypeMain = 3,
/// Reserved for exchange-specific usage.
  NativeImageAssetTypeCustom = 500,
};


/// Class representing a  link in a native ad.
SWIFT_CLASS("_TtC12PrebidMobile10NativeLink")
@interface NativeLink : NSObject
/// Landing URL of the clickable link.
@property (nonatomic, copy) NSString * _Nullable url;
/// List of third-party tracker URLs to be fired on click of the URL.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable clicktrackers;
/// Fallback URL for deeplink.
/// To be used if the URL given in url is not supported by the device.
@property (nonatomic, copy) NSString * _Nullable fallback;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeLink</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON data to initialize the object.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents a request object for native markup, including details about the ad’s context, placement, and supported features.
SWIFT_CLASS_NAMED("NativeMarkupRequestObject")
@interface PBMNativeMarkupRequestObject : NSObject <NSCopying, PBMJsonCodable>
/// [Recommended]
/// [Integer]
/// The context in which the ad appears.
/// See NativeContextType
@property (nonatomic, strong) ContextType * _Nullable context;
/// [Integer]
/// A more detailed context in which the ad appears.
/// See NativeContextSubtype
@property (nonatomic, strong) ContextSubType * _Nullable contextsubtype;
/// [Recommended]
/// [Integer]
/// The design/format/layout of the ad unit being offered.
/// See NativePlacementType
@property (nonatomic, strong) PlacementType * _Nullable plcmttype;
/// [Integer]
/// The number of identical placements in this Layout. Refer Section 8.1 Multiplacement Bid Requests for further detail.
@property (nonatomic) NSInteger plcmtcnt;
/// [Integer]
/// 0 for the first ad, 1 for the second ad, and so on.
/// Note this would generally NOT be used in combination with plcmtcnt -
/// either you are auctioning multiple identical placements (in which case plcmtcnt>1, seq=0)
/// or you are holding separate auctions for distinct items in the feed (in which case plcmtcnt=1, seq=>=1)
@property (nonatomic) NSInteger seq;
/// [Required]
/// An array of Asset Objects. Any objects bid response must comply with the array of elements expressed in the bid request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// [Integer]
/// Whether the supply source / impression supports returning an assetsurl instead of an asset object. 0 or the absence of the field indicates no such support.
@property (nonatomic) NSInteger aurlsupport;
/// [Integer]
/// Whether the supply source / impression supports returning a dco url instead of an asset object. 0 or the absence of the field indicates no such support.
/// Beta feature.
@property (nonatomic) NSInteger durlsupport;
/// Specifies what type of event objects tracking is supported - see Event Trackers Request Object
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// [Recommended]
/// [Integer]
/// Set to 1 when the native ad supports buyer-specific privacy notice. Set to 0 (or field absent) when the native ad doesn’t support custom privacy links or if support is unknown.
@property (nonatomic) NSInteger privacy;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeMarkupRequestObject</code> with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Creates a copy of the current <code>NativeMarkupRequestObject</code> instance.
/// \param zone An optional zone for the copy operation.
///
///
/// returns:
/// A copy of the <code>NativeMarkupRequestObject</code> instance.
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Converts the <code>NativeMarkupRequestObject</code> instance to a JSON dictionary.
///
/// returns:
/// A dictionary representation of the <code>NativeMarkupRequestObject</code> instance.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable jsonDictionary;
/// Converts the <code>NativeMarkupRequestObject</code> instance to a JSON string.
///
/// throws:
/// An error if the conversion to JSON string fails.
///
/// returns:
/// A JSON string representation of the <code>NativeMarkupRequestObject</code> instance.
- (NSString * _Nullable)toJsonStringWithError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


/// Represents parameters for a native ad request, including assets, event trackers, and configuration settings.
SWIFT_CLASS("_TtC12PrebidMobile16NativeParameters")
@interface NativeParameters : NSObject
/// An array of <code>NativeAsset</code> objects representing the assets required for the native ad request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// An array of <code>NativeEventTracker</code> objects specifying the event tracking settings for the native ad.
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// The version of the native ad specification being used. Defaults to “1.2”.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The context in which the ad appears. See <code>ContextType</code> for possible values.
@property (nonatomic, strong) ContextType * _Nullable context;
/// A more detailed context in which the ad appears. See <code>ContextSubType</code> for possible values.
@property (nonatomic, strong) ContextSubType * _Nullable contextSubType;
/// The design/format/layout of the ad unit being offered. See <code>PlacementType</code> for possible values.
@property (nonatomic, strong) PlacementType * _Nullable placementType;
/// The number of identical placements in the ad layout. Defaults to 1.
@property (nonatomic) NSInteger placementCount;
/// The sequence number of the ad. Defaults to 0.
@property (nonatomic) NSInteger sequence;
/// Indicates whether the supply source/impression supports returning an <code>assetsurl</code> instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger asseturlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger durlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0, indicating no support.
@property (nonatomic) NSInteger privacy;
/// A placeholder for custom JSON agreed to by the parties to support flexibility beyond the standard specification.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A class representing a native request for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile13NativeRequest")
@interface NativeRequest : AdUnit
/// The version of the native ad specification being used. Defaults to “1.2” if not set.
@property (nonatomic, copy) NSString * _Nonnull version;
/// The context in which the ad appears. See <code>ContextType</code> for possible values.
@property (nonatomic, strong) ContextType * _Nullable context;
/// A more detailed context in which the ad appears. See <code>ContextSubType</code> for possible values.
@property (nonatomic, strong) ContextSubType * _Nullable contextSubType;
/// The design/format/layout of the ad unit being offered. See <code>PlacementType</code> for possible values.
@property (nonatomic, strong) PlacementType * _Nullable placementType;
/// The number of identical placements in the ad layout. Defaults to 1 if not set.
@property (nonatomic) NSInteger placementCount;
/// The sequence number of the ad. Defaults to 0 if not set.
@property (nonatomic) NSInteger sequence;
/// An array of <code>NativeAsset</code> objects representing the assets required for the native ad request.
@property (nonatomic, copy) NSArray<NativeAsset *> * _Nullable assets;
/// Indicates whether the supply source/impression supports returning an <code>assetsurl</code> instead of an asset object.
/// Defaults to 0 if not set.
@property (nonatomic) NSInteger asseturlsupport;
/// Indicates whether the supply source/impression supports returning a <code>dco</code> URL instead of an asset object.
/// Defaults to 0 if not set.
@property (nonatomic) NSInteger durlsupport;
/// An array of <code>NativeEventTracker</code> objects specifying the event tracking settings for the native ad.
@property (nonatomic, copy) NSArray<NativeEventTracker *> * _Nullable eventtrackers;
/// Indicates whether the native ad supports a buyer-specific privacy notice. Defaults to 0 if not set.
@property (nonatomic) NSInteger privacy;
/// A placeholder for custom JSON agreed to by the parties to support flexibility beyond the standard specification.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// The configuration ID for the ad unit.
@property (nonatomic, copy) NSString * _Nonnull configId;
/// Initializes a <code>NativeRequest</code> with a specified configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>NativeRequest</code> with a specified configuration ID, assets, and event trackers.
/// \param configId The configuration ID for the ad unit.
///
/// \param assets An optional array of <code>NativeAsset</code> objects.
///
/// \param eventTrackers An optional array of <code>NativeEventTracker</code> objects.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId assets:(NSArray<NativeAsset *> * _Nullable)assets eventTrackers:(NSArray<NativeEventTracker *> * _Nullable)eventTrackers;
/// Adds an array of native assets to the request. If assets already exist, they will be appended.
/// \param assets An array of <code>NativeAsset</code> objects to add.
///
- (void)addNativeAssets:(NSArray<NativeAsset *> * _Nonnull)assets;
/// Adds an array of native event trackers to the request. If event trackers already exist, they will be appended.
/// \param eventTrackers An array of <code>NativeEventTracker</code> objects to add.
///
- (void)addNativeEventTracker:(NSArray<NativeEventTracker *> * _Nonnull)eventTrackers;
/// Retrieves the native request object as a JSON dictionary.
///
/// returns:
/// A dictionary representation of the native request object, or <code>nil</code> if an error occurs.
- (NSDictionary * _Nullable)getNativeRequestObject SWIFT_WARN_UNUSED_RESULT;
@end


/// Represents the title element in a native ad, including optional text and length.
SWIFT_CLASS("_TtC12PrebidMobile11NativeTitle")
@interface NativeTitle : NSObject
/// The text associated with the text element.
@property (nonatomic, copy) NSString * _Nullable text;
/// This object is a placeholder that may contain custom JSON agreed to by the parties to support
/// flexibility beyond the standard defined in this specification
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a <code>NativeTitle</code> object from a JSON dictionary.
/// \param jsonDictionary A dictionary containing the JSON representation of the title.
///
- (nonnull instancetype)initWithJsonDictionary:(NSDictionary<NSString *, id> * _Nonnull)jsonDictionary OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>NativeTitle</code> object with default values.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, PBMNetworkType, "NetworkType", open) {
  PBMNetworkTypeUnknown = 0,
  PBMNetworkTypeWifi = 2,
  PBMNetworkTypeCelluar = 3,
  PBMNetworkTypeOffline = 4,
};

@class PBMErrorType;
enum PBMErrorCode : NSInteger;

SWIFT_CLASS("_TtC12PrebidMobile8PBMError")
@interface PBMError : NSError
@property (nonatomic, readonly, copy) NSString * _Nullable message;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
+ (PBMError * _Nonnull)errorWithMessage:(NSString * _Nonnull)message type:(PBMErrorType * _Nonnull)type SWIFT_WARN_UNUSED_RESULT;
+ (PBMError * _Nonnull)errorWithDescription:(NSString * _Nonnull)description SWIFT_WARN_UNUSED_RESULT;
+ (PBMError * _Nonnull)errorWithDescription:(NSString * _Nonnull)description statusCode:(enum PBMErrorCode)statusCode SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error message:(NSString * _Nonnull)message type:(PBMErrorType * _Nonnull)type;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error description:(NSString * _Nonnull)description;
+ (BOOL)createError:(NSError * _Nullable * _Nullable)error description:(NSString * _Nonnull)description statusCode:(enum PBMErrorCode)statusCode;
+ (NSError * _Nonnull)requestInProgress SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidAccountId SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidConfigId SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidInvalidSize SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidServerURLInvalid:(NSString * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)serverError:(NSString * _Nonnull)errorBody SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)jsonDictNotFound SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)responseDeserializationFailed SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)blankResponse SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)noWinningBid SWIFT_WARN_UNUSED_RESULT;
+ (NSError * _Nonnull)prebidNoVastTagInMediaData SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithDomain:(NSString * _Nonnull)domain code:(NSInteger)code userInfo:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_UNAVAILABLE;
@end

typedef SWIFT_ENUM(NSInteger, PBMErrorCode, open) {
  PBMErrorCodeGeneralLinear = 400,
  PBMErrorCodeFileNotFound = 401,
  PBMErrorCodeGeneralNonLinearAds = 500,
  PBMErrorCodeGeneral = 700,
  PBMErrorCodeUndefined = 900,
};


SWIFT_CLASS("_TtC12PrebidMobile12PBMErrorType")
@interface PBMErrorType : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull rawValue;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull invalidRequest;)
+ (PBMErrorType * _Nonnull)invalidRequest SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull internalError;)
+ (PBMErrorType * _Nonnull)internalError SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull initError;)
+ (PBMErrorType * _Nonnull)initError SWIFT_METHOD_FAMILY(none) SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMErrorType * _Nonnull serverError;)
+ (PBMErrorType * _Nonnull)serverError SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile23PBMInterstitialAdLoader_")
@protocol PBMInterstitialAdLoader <InterstitialControllerLoadingDelegate, InterstitialEventLoadingDelegate, PBMAdLoaderProtocol>
- (nonnull instancetype)initWithDelegate:(id <PBMInterstitialAdLoaderDelegate> _Nonnull)delegate eventHandler:(id <PBMPrimaryAdRequesterProtocol> _Nonnull)eventHandler;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile23PBMSwiftMigrationHelper_")
@protocol PBMSwiftMigrationHelper
@end

@class NSURLQueryItem;

SWIFT_CLASS_NAMED("PathBuilder")
@interface PBMPathBuilder : NSObject
+ (NSString * _Nullable)buildURLFor:(NSString * _Nonnull)host path:(NSString * _Nonnull)path queryItems:(NSArray<NSURLQueryItem *> * _Nullable)queryItems SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Represents different types of placements for native ads.
SWIFT_CLASS("_TtC12PrebidMobile13PlacementType")
@interface PlacementType : SingleContainerInt
/// Placement type indicating the ad appears within feed content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull FeedContent;)
+ (PlacementType * _Nonnull)FeedContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears within atomic content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull AtomicContent;)
+ (PlacementType * _Nonnull)AtomicContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears outside of content.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull OutsideContent;)
+ (PlacementType * _Nonnull)OutsideContent SWIFT_WARN_UNUSED_RESULT;
/// Placement type indicating the ad appears within a recommendation widget.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull RecommendationWidget;)
+ (PlacementType * _Nonnull)RecommendationWidget SWIFT_WARN_UNUSED_RESULT;
/// Placement type for custom placements not predefined in the standard.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PlacementType * _Nonnull Custom;)
+ (PlacementType * _Nonnull)Custom SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// Enum representing various positions on the screen.
/// This enum defines positions that can be used for placing elements within an ad. The positions are typically used to determine where controls or components should be located within the ad’s user interface.
typedef SWIFT_ENUM_NAMED(NSInteger, PBMPosition, "Position", open) {
  PBMPositionUndefined = -1,
  PBMPositionTopLeft = 0,
  PBMPositionTopCenter = 1,
  PBMPositionTopRight = 2,
  PBMPositionCenter = 3,
  PBMPositionBottomLeft = 4,
  PBMPositionBottomCenter = 5,
  PBMPositionBottomRight = 6,
  PBMPositionCustom = 7,
};

@protocol PrebidEventDelegate;
enum PrebidInitializationStatus : NSInteger;
@protocol PrebidMobilePluginRenderer;

/// The <code>Prebid</code> class manages the configuration and initialization of the PrebidMobile SDK.
SWIFT_CLASS("_TtC12PrebidMobile6Prebid")
@interface Prebid : NSObject
/// Indicates whether the timeout value has been updated.
@property (nonatomic) BOOL timeoutUpdated;
/// The Prebid Server account ID.
@property (nonatomic, copy) NSString * _Nonnull prebidServerAccountId;
/// The Prebid auction settings ID.
@property (nonatomic, copy) NSString * _Nullable auctionSettingsId;
/// Enables or disables debug mode.
/// ORTB: bidRequest.test
@property (nonatomic) BOOL pbsDebug;
/// Custom HTTP headers to be sent with requests.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull customHeaders;
/// Stored bid responses identified by bidder names.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull storedBidResponses;
/// Optional Delegate which returns Request and Response Data for further processing
@property (nonatomic, weak) id <PrebidEventDelegate> _Nullable eventDelegate;
/// This property is set by the developer when he is willing to assign the assetID for Native ad.
@property (nonatomic) BOOL shouldAssignNativeAssetID;
/// This property is set by the developer when he is willing to share the location for better ad targeting
@property (nonatomic) BOOL shareGeoLocation;
/// Set the desidered verbosity of the logs
@property (nonatomic, strong) PBMLogLevel * _Nonnull logLevel;
/// The singleton instance of the <code>Prebid</code> class.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Prebid * _Nonnull shared;)
+ (Prebid * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The version of the PrebidMobile SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// The version of the OM SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull omsdkVersion;
/// Custom status endpoint for the Prebid Server.
@property (nonatomic, copy) NSString * _Nullable customStatusEndpoint;
/// Timeout for Prebid requests in milliseconds.
@property (nonatomic) NSInteger timeoutMillis;
/// Dynamic timeout value.
@property (nonatomic, strong) NSNumber * _Nullable timeoutMillisDynamic;
/// Stored auction response.
@property (nonatomic, copy) NSString * _Nullable storedAuctionResponse;
/// Indicates whether the PBS should cache the bid for the rendering API.
/// If the value is true the SDK will make the cache request in order to report
/// the impression event respectively to the legacy analytic setup.
@property (nonatomic) BOOL useCacheForReportingWithRenderingAPI;
/// Controls how long each creative has to load before it is considered a failure.
@property (nonatomic) NSTimeInterval creativeFactoryTimeout;
/// Controls how long video and interstitial creatives have to load before it is considered a failure.
@property (nonatomic) NSTimeInterval creativeFactoryTimeoutPreRenderContent;
/// If set to true, the output of PrebidMobile’s internal logger is written to a text file. This can be helpful for debugging. Defaults to false.
@property (nonatomic) BOOL debugLogFileEnabled;
/// If true, the SDK will periodically try to listen for location updates in order to request location-based ads.
@property (nonatomic) BOOL locationUpdatesEnabled;
/// If true, the sdk will add <code>includewinners</code> flag inside the targeting object described in <a href="https://docs.prebid.org/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting">PBS Documentation</a>
@property (nonatomic) BOOL includeWinners;
/// If true, the sdk will add <code>includebidderkeys</code> flag inside the targeting object described in <a href="https://docs.prebid.org/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting">PBS Documentation</a>
@property (nonatomic) BOOL includeBidderKeys;
/// If true, the SDK will not check the PBS status during initialization. This will save initialization time
/// if the PBS endpoint is always live and handled client side
@property (nonatomic) BOOL shouldDisableStatusCheck;
/// Adds a stored bid response.
/// \param bidder The name of the bidder.
///
/// \param responseId The response ID.
///
- (void)addStoredBidResponseWithBidder:(NSString * _Nonnull)bidder responseId:(NSString * _Nonnull)responseId;
/// Clears all stored bid responses.
- (void)clearStoredBidResponses;
/// Retrieves stored bid responses.
///
/// returns:
/// An array of dictionaries containing stored bid responses, or nil if there are none.
- (NSArray<NSDictionary<NSString *, NSString *> *> * _Nullable)getStoredBidResponses SWIFT_WARN_UNUSED_RESULT;
/// Adds a custom HTTP header.
/// \param name The name of the header.
///
/// \param value The value of the header.
///
- (void)addCustomHeaderWithName:(NSString * _Nonnull)name value:(NSString * _Nonnull)value;
/// Clears all custom HTTP headers.
- (void)clearCustomHeaders;
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param gadMobileAdsObject GADMobileAds object
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL :(id _Nullable)gadMobileAdsObject error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param gadMobileAdsObject GADMobileAds object
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString :(id _Nullable)gadMobileAdsObject error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param gadMobileAdsVersion GADMobileAds version string, use <code>GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)</code> to get it
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL gadMobileAdsVersion:(NSString * _Nullable)gadMobileAdsVersion error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Checks the version of GMA SDK. If the version is not supported - logs warning.
/// Use this SDK initializer if you’re using PrebidMobile with GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param gadMobileAdsVersion GADMobileAds version string, use <code>GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)</code> to get it
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString gadMobileAdsVersion:(NSString * _Nullable)gadMobileAdsVersion error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Use this SDK initializer if you’re using PrebidMobile without GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
/// Initializes PrebidMobile SDK.
/// Checks the status of Prebid Server. The <code>customStatusEndpoint</code> property is used as server status endpoint.
/// If <code>customStatusEndpoint</code> property is not provided, the SDK will use default endpoint - <code>host</code> + <code>/status</code>.
/// Use this SDK initializer if you’re using PrebidMobile without GMA SDK.
/// \param serverURL The custom Prebid Server URL, used when a user allowed the app to track
///
/// \param nonTrackingURL The custom Prebid Server URL, used when a user rejected the app to track
///
/// \param completion returns initialization status and optional error
///
+ (BOOL)initializeSDKWithServerURL:(NSString * _Nonnull)serverURL nonTrackingURLString:(NSString * _Nonnull)nonTrackingURLString error:(NSError * _Nullable * _Nullable)error :(void (^ _Nullable)(enum PrebidInitializationStatus, NSError * _Nullable))completion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (void)registerPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer;
+ (void)unregisterPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer;
+ (BOOL)containsPluginRenderer:(id <PrebidMobilePluginRenderer> _Nonnull)pluginRenderer SWIFT_WARN_UNUSED_RESULT;
@end

@class NSData;

@interface Prebid (SWIFT_EXTENSION(PrebidMobile))
- (void)callEventDelegateAsync_prebidBidRequestDidFinishWithRequestData:(NSData * _Nullable)requestData responseData:(NSData * _Nullable)responseData;
@end

@class PrebidRequest;

/// Multiformat ad unit. Built for original API.
SWIFT_CLASS("_TtC12PrebidMobile12PrebidAdUnit")
@interface PrebidAdUnit : NSObject
/// The ad slot identifier for the Prebid ad unit.
@property (nonatomic, copy) NSString * _Nullable pbAdSlot;
/// Initializes a new <code>PrebidAdUnit</code> with the given configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Makes bid request for the specified ad object and request config. Setups targeting keywords into the adObject.
/// \param adObject The ad object to fetch demand for.
///
/// \param request The <code>PrebidRequest</code> containing the demand request parameters.
///
/// \param completion A closure to be called with the <code>BidInfo</code> result.
///
- (void)fetchDemandWithAdObject:(id _Nonnull)adObject request:(PrebidRequest * _Nonnull)request completion:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completion;
/// Makes bid request for the specified request config.
/// \param request The <code>PrebidRequest</code> containing the demand request parameters.
///
/// \param completion A closure to be called with the <code>BidInfo</code> result.
///
- (void)fetchDemandWithRequest:(PrebidRequest * _Nonnull)request completion:(void (^ _Nonnull)(PBMBidInfo * _Nonnull))completion;
/// Sets the view in which Prebid will start tracking an impression and activates the impression tracker.
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView). This object will be used later for tracking <code>burl</code>.
///
- (void)activatePrebidAdViewImpressionTrackerWithAdView:(UIView * _Nonnull)adView;
/// Activates interstitial impression tracker.
- (void)activatePrebidInterstitialImpressionTracker;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow for the provided ad view.
/// Note: Ensure this method is called within the Google Mobile Ads ad received method
/// (e.g., in the GADBannerViewDelegate’s bannerViewDidReceiveAd or similar callbacks).
/// \param adView The ad view that contains ad creative(f.e. GAMBannerView).
///
- (void)activatePrebidBannerSKAdNetworkStoreKitAdsFlowWithAdView:(UIView * _Nonnull)adView;
/// Activates Prebid’s SKAdNetwork StoreKit ads flow.
/// Note: Ensure this method is called before presenting interstitials.
- (void)activatePrebidInterstitialSKAdNetworkStoreKitAdsFlow;
/// This method allows to set the auto refresh period for the demand
/// \param time refresh time interval
///
- (void)setAutoRefreshMillisWithTime:(double)time;
/// This method stops the auto refresh of demand
- (void)stopAutoRefresh;
/// This method resumes the auto refresh of demand
- (void)resumeAutoRefresh;
/// Attempts to display an <code>SKOverlay</code> over interstitial if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented
- (void)dismissSKOverlayIfAvailable;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile15PrebidConstants")
@interface PrebidConstants : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSArray<PBApi *> * _Nonnull supportedRenderingBannerAPISignals;)
+ (NSArray<PBApi *> * _Nonnull)supportedRenderingBannerAPISignals SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull companionHTMLTemplate;)
+ (NSString * _Nonnull)companionHTMLTemplate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull PREBID_VERSION;)
+ (NSString * _Nonnull)PREBID_VERSION SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull SDK_NAME;)
+ (NSString * _Nonnull)SDK_NAME SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile19PrebidEventDelegate_")
@protocol PrebidEventDelegate
/// Notifies the delegate when a Prebid bid request has finished.
/// This method is called on a global background thread.
/// \param requestData The Prebid Server request data that was sent.
///
/// \param responseData The Prebid Server response data that was received.
///
- (void)prebidBidRequestDidFinishWithRequestData:(NSData * _Nullable)requestData responseData:(NSData * _Nullable)responseData;
@end


SWIFT_CLASS("_TtC12PrebidMobile22PrebidImagesRepository")
@interface PrebidImagesRepository : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull muteDisabled;)
+ (NSString * _Nonnull)muteDisabled SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull muteEnabled;)
+ (NSString * _Nonnull)muteEnabled SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull closeButton;)
+ (NSString * _Nonnull)closeButton SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull skipButton;)
+ (NSString * _Nonnull)skipButton SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum representing the initialization status of the Prebid SDK.
/// This enum provides various statuses that indicate the result of the Prebid SDK initialization process. It helps in understanding whether the SDK was successfully initialized or if there were issues during the initialization.
typedef SWIFT_ENUM(NSInteger, PrebidInitializationStatus, open) {
/// Prebid SDK successfully initialized.
  PrebidInitializationStatusSucceeded = 0,
/// Prebid SDK is not able to work.
  PrebidInitializationStatusFailed = 1,
/// Something went wrong during PBS status checking.
  PrebidInitializationStatusServerStatusWarning = 2,
/// Prebid SDK skipped status checking.
  PrebidInitializationStatusServerStatusSkipped = 3,
};


SWIFT_CLASS("_TtC12PrebidMobile15PrebidJSLibrary")
@interface PrebidJSLibrary : NSObject
@property (nonatomic, copy) NSString * _Nullable downloadURLString;
@property (nonatomic, copy) NSString * _Nonnull name;
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name downloadURLString:(NSString * _Nullable)downloadURLString OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile22PrebidJSLibraryManager")
@interface PrebidJSLibraryManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidJSLibraryManager * _Nonnull shared;)
+ (PrebidJSLibraryManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (void)downloadLibraries;
- (NSString * _Nullable)getMRAIDLibrary SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getOMSDKLibrary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A protocol defining methods for logging messages at various levels.
/// Implement this protocol to handle logging in a customizable way.
SWIFT_PROTOCOL("_TtP12PrebidMobile12PrebidLogger_")
@protocol PrebidLogger
/// Logs an error message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs an informational message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a debug message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a verbose message, typically used for detailed or low-level information.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a warning message.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs a severe error message, indicating a critical issue.
/// \param object The object or message to log.
///
/// \param filename The name of the file where the log was generated.
///
/// \param line The line number where the log was generated.
///
/// \param function The function name where the log was generated.
///
- (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
/// Logs the current location in the code.
/// \param filename The name of the file where this method was called.
///
/// \param line The line number where this method was called.
///
/// \param function The function name where this method was called.
///
- (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
@end


/// This protocol is dedicated to manage the work with Mediation SDKs.
SWIFT_PROTOCOL("_TtP12PrebidMobile23PrebidMediationDelegate_")
@protocol PrebidMediationDelegate
/// Puts to ad object’s localExtra the ad object (winning bid or native ad) and configId
/// and populates adObject’s keywords by targeting info
/// @return YES on success and NO otherwise (when the passed ad has wrong type)
- (BOOL)setUpAdObjectWith:(NSDictionary<NSString *, id> * _Nonnull)values SWIFT_WARN_UNUSED_RESULT;
/// Removes an bid info from ad object’s localExtra
/// and prebid-specific keywords from ad object’s keywords
- (void)cleanUpAdObject;
/// Returns ad view that was passed into PrebidMediationDelegate earlier.
/// Returns nil if there was no view passed.
- (UIView * _Nullable)getAdView SWIFT_WARN_UNUSED_RESULT;
@end



/// Global singleton responsible to store plugin renderer instances
SWIFT_CLASS("_TtC12PrebidMobile26PrebidMobilePluginRegister")
@interface PrebidMobilePluginRegister : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidMobilePluginRegister * _Nonnull shared;)
+ (PrebidMobilePluginRegister * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// Default PrebidMobile SDK renderer
@property (nonatomic, readonly, strong) id <PrebidMobilePluginRenderer> _Nonnull sdkRenderer;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Register plugin as renderer
- (void)registerPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer;
- (void)unregisterPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer;
/// Contains plugin
- (BOOL)containsPlugin:(id <PrebidMobilePluginRenderer> _Nonnull)renderer SWIFT_WARN_UNUSED_RESULT;
/// Register event delegate
- (void)registerEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Unregister event delegate
- (void)unregisterEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Returns the registered renderer according to the preferred renderer name in the bid response.
/// If no preferred renderer is found, it returns PrebidRenderer to perform default behavior.
/// Once bid is win we want to resolve the best PluginRenderer candidate to render the ad.
- (id <PrebidMobilePluginRenderer> _Nonnull)getPluginForPreferredRendererWithBid:(Bid * _Nonnull)bid SWIFT_WARN_UNUSED_RESULT;
- (NSArray<id <PrebidMobilePluginRenderer>> * _Nonnull)getAllPlugins SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSDictionary<NSString *, id> *> * _Nonnull)getAllPluginsJSONRepresentation SWIFT_WARN_UNUSED_RESULT;
@end

@protocol PrebidMobileDisplayViewProtocol;

/// A protocol for the plugin renderer, defining the basic interface that any renderer should implement.
/// This protocol provides the ability to retrieve plugin details, support rendering formats, and manage event delegates and
/// methods for creating custom banner view and insterstitial controller.
SWIFT_PROTOCOL("_TtP12PrebidMobile26PrebidMobilePluginRenderer_")
@protocol PrebidMobilePluginRenderer
/// The name of the plugin renderer. This is used to identify the plugin.
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The version of the plugin renderer.
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// Custom data to be included in the ORTB request.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable data;
@optional
/// Register a listener related to a specific ad unit config fingerprint in order to dispatch specific ad events.
- (void)registerEventDelegateWithPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
/// Unregister a listener related to a specific ad unit config fingerprint in order to dispatch specific ad events.
- (void)unregisterEventDelegateWithPluginEventDelegate:(id <PluginEventDelegate> _Nonnull)pluginEventDelegate adUnitConfigFingerprint:(NSString * _Nonnull)adUnitConfigFingerprint;
@required
/// Creates and returns an ad view conforming to <code>PrebidMobileDisplayViewManagerProtocol</code> for a given bid response.
/// Returns nil in the case of an internal error or if no renderer is provided.
/// \param frame The frame specifying the initial size and position of the ad view.
///
/// \param bid The <code>Bid</code> object containing the bid response used for rendering the ad.
///
/// \param adConfiguration The <code>AdUnitConfig</code> instance providing configuration details for the ad unit.
///
/// \param loadingDelegate The delegate conforming to <code>DisplayViewLoadingDelegate</code> for handling ad loading events.
///
/// \param interactionDelegate The  delegate conforming to <code>DisplayViewInteractionDelegate</code> for handling ad interaction events.
///
- (UIView <PrebidMobileDisplayViewProtocol> * _Nullable)createBannerViewWith:(CGRect)frame bid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <DisplayViewLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <DisplayViewInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
/// Creates and returns an implementation of <code>PrebidMobileInterstitialControllerProtocol</code> for a given bid response.
/// Returns nil in the case of an internal error or if no renderer is provided.
/// \param bid The <code>Bid</code> object containing the bid response used for rendering the interstitial ad.
///
/// \param adConfiguration The <code>AdUnitConfig</code> instance providing configuration details for the ad unit.
///
/// \param loadingDelegate The delegate for handling interstitial ad loading events.
///
/// \param interactionDelegate The delegate for handling user interactions with the interstitial ad.
///
- (id <PrebidMobileInterstitialControllerProtocol> _Nullable)createInterstitialControllerWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <InterstitialControllerLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <InterstitialControllerInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC12PrebidMobile14PrebidRenderer")
@interface PrebidRenderer : NSObject <PrebidMobilePluginRenderer>
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable data;
- (UIView <PrebidMobileDisplayViewProtocol> * _Nullable)createBannerViewWith:(CGRect)frame bid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <DisplayViewLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <DisplayViewInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
- (id <PrebidMobileInterstitialControllerProtocol> _Nullable)createInterstitialControllerWithBid:(Bid * _Nonnull)bid adConfiguration:(AdUnitConfig * _Nonnull)adConfiguration loadingDelegate:(id <InterstitialControllerLoadingDelegate> _Nonnull)loadingDelegate interactionDelegate:(id <InterstitialControllerInteractionDelegate> _Nonnull)interactionDelegate SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Class that contains properties and methods to configure Prebid request.
SWIFT_CLASS("_TtC12PrebidMobile13PrebidRequest")
@interface PrebidRequest : NSObject
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// A flag that determines whether SKOverlay should be supported for interstitials
@property (nonatomic) BOOL supportSKOverlayForInterstitial;
/// Initializes a new <code>PrebidRequest</code> with the given parameters.
/// \param bannerParameters The banner parameters for the ad request.
///
/// \param videoParameters The video parameters for the ad request.
///
/// \param nativeParameters The native parameters for the ad request.
///
/// \param isInterstitial Indicates if the request is for an interstitial ad.
///
/// \param isRewarded Indicates if the request is for a rewarded ad.
///
- (nonnull instancetype)initWithBannerParameters:(BannerParameters * _Nullable)bannerParameters videoParameters:(VideoParameters * _Nullable)videoParameters nativeParameters:(NativeParameters * _Nullable)nativeParameters isInterstitial:(BOOL)isInterstitial isRewarded:(BOOL)isRewarded OBJC_DESIGNATED_INITIALIZER;
/// Sets the GPID for the ad request.
/// \param gpid The GPID to set.
///
- (void)setGPID:(NSString * _Nullable)gpid;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The  impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile12PrebidReward")
@interface PrebidReward : NSObject
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic, strong) NSNumber * _Nullable count;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class PBMUserAgentService;
@class PrebidServerResponse;

SWIFT_PROTOCOL("_TtP12PrebidMobile30PrebidServerConnectionProtocol_")
@protocol PrebidServerConnectionProtocol
@property (nonatomic, readonly, strong) PBMUserAgentService * _Nonnull userAgentService;
- (void)fireAndForget:(NSString * _Nullable)resourceURL;
- (void)head:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)get:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL contentType:(NSString * _Nullable)contentType data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)download:(NSString * _Nullable)resourceURL callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
@end

@class NSURLProtocol;

SWIFT_CLASS("_TtC12PrebidMobile22PrebidServerConnection")
@interface PrebidServerConnection : NSObject <NSURLSessionDelegate, PrebidServerConnectionProtocol>
@property (nonatomic, readonly, strong) PBMUserAgentService * _Nonnull userAgentService;
@property (nonatomic, copy) NSArray<SWIFT_METATYPE(NSURLProtocol)> * _Nonnull protocolClasses;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PrebidServerConnection * _Nonnull shared;)
+ (PrebidServerConnection * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull userAgentHeaderKey;)
+ (NSString * _Nonnull)userAgentHeaderKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull contentTypeKey;)
+ (NSString * _Nonnull)contentTypeKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull contentTypeVal;)
+ (NSString * _Nonnull)contentTypeVal SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull internalIDKey;)
+ (NSString * _Nonnull)internalIDKey SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull isPBMRequestKey;)
+ (NSString * _Nonnull)isPBMRequestKey SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithUserAgentService:(PBMUserAgentService * _Nonnull)userAgentService;
- (void)fireAndForget:(NSString * _Nullable)resourceURL;
- (void)head:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)get:(NSString * _Nullable)resourceURL timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)post:(NSString * _Nullable)resourceURL contentType:(NSString * _Nullable)contentType data:(NSData * _Nullable)data timeout:(NSTimeInterval)timeout callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (void)download:(NSString * _Nullable)resourceURL callback:(void (^ _Nonnull)(PrebidServerResponse * _Nonnull))callback;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@class PBMServerEvent;

SWIFT_CLASS("_TtC12PrebidMobile24PrebidServerEventTracker")
@interface PrebidServerEventTracker : NSObject <PBMEventTrackerProtocol>
@property (nonatomic, readonly, copy) NSArray<PBMServerEvent *> * _Nonnull serverEvents;
- (nonnull instancetype)initWithServerEvents:(NSArray<PBMServerEvent *> * _Nonnull)serverEvents OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (void)addServerEvents:(NSArray<PBMServerEvent *> * _Nonnull)serverEvents;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC12PrebidMobile20PrebidServerResponse")
@interface PrebidServerResponse : NSObject
@property (nonatomic, readonly) BOOL isOKStatusCode;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable jsonDict;
@property (nonatomic, copy) NSData * _Nullable rawData;
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable requestHeaders;
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable responseHeaders;
@property (nonatomic, copy) NSString * _Nullable requestURL;
@property (nonatomic) NSError * _Nullable error;
@property (nonatomic) NSInteger statusCode;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS_NAMED("Reachability")
@interface PBMReachability : NSObject
/// Shared instance for checking whether the default route is available.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMReachability * _Nonnull shared;)
+ (PBMReachability * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) enum PBMNetworkType currentReachabilityStatus;
/// Returns true is network is reachable otherwise returns false
@property (nonatomic, readonly) BOOL isNetworkReachable;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)stopNotifier;
/// Starts monitoring of the network status.
/// Calls the reachableBlock when network is restored
- (void)onNetworkRestored:(void (^ _Nonnull)(PBMReachability * _Nullable))reachableBlock;
@end

/// Enum representing the result codes for various operations within the Prebid SDK.
/// This enum provides a range of result codes indicating different outcomes or errors that may occur during SDK operations. Each case corresponds to a specific result or error, which helps in diagnosing issues and understanding the status of SDK operations.
typedef SWIFT_ENUM(NSInteger, ResultCode, open) {
/// The demand fetch request was successful.
  ResultCodePrebidDemandFetchSuccess = 0,
/// The Prebid server was not specified in the request.
  ResultCodePrebidServerNotSpecified = 1,
/// The account ID provided is not recognized by the Prebid server.
  ResultCodePrebidInvalidAccountId = 2,
/// The config ID provided is not recognized by the Prebid server.
  ResultCodePrebidInvalidConfigId = 3,
/// The size requested is not recognized by the Prebid server.
  ResultCodePrebidInvalidSize = 4,
/// There was a network error during the operation.
  ResultCodePrebidNetworkError = 5,
/// The Prebid server encountered an error while processing the request.
  ResultCodePrebidServerError = 6,
/// The Prebid server did not return any bids.
  ResultCodePrebidDemandNoBids = 7,
/// The demand request timed out.
  ResultCodePrebidDemandTimedOut = 8,
/// The URL of the Prebid server is invalid.
  ResultCodePrebidServerURLInvalid = 9,
/// An unknown error occurred within the Prebid SDK.
  ResultCodePrebidUnknownError = 10,
/// The structure of the response received is invalid.
  ResultCodePrebidInvalidResponseStructure = 1000,
/// An internal error occurred within the SDK.
  ResultCodePrebidInternalSDKError = 7000,
/// Incorrect arguments were provided to the SDK.
  ResultCodePrebidWrongArguments = 7001,
/// No VAST tag was found in the media data.
  ResultCodePrebidNoVastTagInMediaData = 7002,
/// Misuse of the SDK was detected.
  ResultCodePrebidSDKMisuse = 8000,
/// SDK misuse due to a previous fetch operation not being completed yet.
  ResultCodePrebidSDKMisusePreviousFetchNotCompletedYet = 8001,
/// The Prebid request does not contain any parameters.
  ResultCodePrebidInvalidRequest = 8002,
};

@protocol RewardedAdUnitDelegate;

/// Represents an rewarded ad unit. Built for rendering type of integration.
SWIFT_CLASS("_TtC12PrebidMobile14RewardedAdUnit")
@interface RewardedAdUnit : NSObject
/// A delegate for handling interactions with the ad unit.
@property (nonatomic, weak) id <RewardedAdUnitDelegate> _Nullable delegate;
/// A Boolean value indicating whether the ad unit is ready to be displayed.
@property (nonatomic, readonly) BOOL isReady;
/// The set of ad formats supported by this ad unit.
@property (nonatomic, copy) NSSet<AdFormat *> * _Nonnull adFormats;
/// The position of the ad on the screen.
@property (nonatomic) enum PBMAdPosition adPosition;
/// The banner parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) BannerParameters * _Nonnull bannerParameters;
/// The video parameters used for configuring ad unit.
@property (nonatomic, readonly, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// The area of the close button in the video controls as a percentage.
@property (nonatomic) double closeButtonArea;
/// The position of the close button in the video controls.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// A Boolean value indicating whether the video controls are muted.
@property (nonatomic) BOOL isMuted;
/// A Boolean value indicating whether the sound button is visible in the video controls.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Initializes a new <code>BaseInterstitialAdUnit</code> with the specified configuration ID.
/// \param configID The unique identifier for the ad unit configuration.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and minimum size percentage.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID eventHandler:(id _Nullable)eventHandler;
/// Initializes a new <code>InterstitialRenderingAdUnit</code> with the specified configuration ID, minimum size percentage, and event handler.
/// \param configID The unique identifier for the ad unit configuration.
///
/// \param minSizePercentage The minimum size percentage for the ad unit.
///
/// \param eventHandler An object for handling ad events.
///
- (nonnull instancetype)initWithConfigID:(NSString * _Nonnull)configID minSizePercentage:(CGSize)minSizePercentage eventHandler:(id _Nonnull)eventHandler;
/// Loads a new ad.
- (void)loadAd;
/// Shows the ad from a specified view controller.
/// note:
/// This method must be called on the main thread.
/// \param controller The view controller from which the ad will be presented.
///
- (void)showFrom:(UIViewController * _Nonnull)controller;
/// Sets the impression-level OpenRTB configuration string for the ad unit.
/// \param ortbObject The impression-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setImpORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the impression-level OpenRTB configuration string.
- (NSString * _Nullable)getImpORTBConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Protocol for interaction with the RewardedAdUnit
/// All messages will be invoked on the main thread.
SWIFT_PROTOCOL("_TtP12PrebidMobile22RewardedAdUnitDelegate_")
@protocol RewardedAdUnitDelegate <NSObject>
@optional
/// Called when an ad is loaded and ready for display
- (void)rewardedAdDidReceiveAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when user is able to receive a reward from the app
- (void)rewardedAdUserDidEarnReward:(RewardedAdUnit * _Nonnull)rewardedAd reward:(PrebidReward * _Nonnull)reward;
/// Called when the load process fails to produce a viable ad
- (void)rewardedAd:(RewardedAdUnit * _Nonnull)rewardedAd didFailToReceiveAdWithError:(NSError * _Nullable)error;
/// Called when the interstitial view will be launched,  as a result of show() method.
- (void)rewardedAdWillPresentAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when the interstial is dismissed by the user
- (void)rewardedAdDidDismissAd:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when an ad causes the sdk to leave the app
- (void)rewardedAdWillLeaveApplication:(RewardedAdUnit * _Nonnull)rewardedAd;
/// Called when user clicked the ad
- (void)rewardedAdDidClickAd:(RewardedAdUnit * _Nonnull)rewardedAd;
@end


SWIFT_CLASS_NAMED("RewardedConfig")
@interface PBMRewardedConfig : NSObject
@property (nonatomic, readonly, strong) PrebidReward * _Nullable reward;
@property (nonatomic, readonly, strong) NSNumber * _Nullable bannerTime;
@property (nonatomic, readonly, copy) NSString * _Nullable bannerEvent;
@property (nonatomic, readonly, strong) NSNumber * _Nullable videoTime;
@property (nonatomic, readonly, copy) NSString * _Nullable videoPlaybackevent;
@property (nonatomic, readonly, strong) NSNumber * _Nullable endcardTime;
@property (nonatomic, readonly, copy) NSString * _Nullable endcardEvent;
@property (nonatomic, readonly, copy) NSString * _Nullable closeAction;
@property (nonatomic, readonly, strong) NSNumber * _Nullable postRewardTime;
/// The timeout duration for rewarded completion, measured in seconds.
@property (nonatomic, readonly, strong) NSNumber * _Nonnull defaultCompletionTime;
/// The playback event when the SDK should send a signal to the application that the user has earned the reward
@property (nonatomic, readonly, copy) NSString * _Nonnull defaultVideoPlaybackEvent;
- (nonnull instancetype)initWithOrtbRewarded:(PBMORTBRewardedConfiguration * _Nullable)ortbRewarded OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol RewardedEventInteractionDelegate;

/// A protocol for handling events related to rewarded ads.
/// This protocol extends <code>PBMInterstitialAd</code> and defines properties for delegates that handle events related to the ad server communication and user interactions with rewarded ads. Implementing this protocol allows for custom handling of these events within the rewarded ad lifecycle.
SWIFT_PROTOCOL("_TtP12PrebidMobile28RewardedEventHandlerProtocol_")
@protocol RewardedEventHandlerProtocol <PBMInterstitialAd>
/// Delegate for custom event handler to inform the PBM SDK about the events related to the ad server communication.
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
/// Delegate for custom event handler to inform the PBM SDK about the events related to the user’s interaction with the ad.
@property (nonatomic, weak) id <RewardedEventInteractionDelegate> _Nullable interactionDelegate;
@end


SWIFT_CLASS("_TtC12PrebidMobile30RewardedEventHandlerStandalone")
@interface RewardedEventHandlerStandalone : NSObject <RewardedEventHandlerProtocol>
@property (nonatomic, weak) id <InterstitialEventLoadingDelegate> _Nullable loadingDelegate;
@property (nonatomic, weak) id <RewardedEventInteractionDelegate> _Nullable interactionDelegate;
@property (nonatomic, readonly) BOOL isReady;
- (void)showFromViewController:(UIViewController * _Nullable)controller;
- (void)requestAdWithBidResponse:(BidResponse * _Nullable)bidResponse;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP12PrebidMobile32RewardedEventInteractionDelegate_")
@protocol RewardedEventInteractionDelegate <InterstitialEventInteractionDelegate>
/// Call this when the ad server SDK decides the user has earned reward
- (void)userDidEarnReward:(PrebidReward * _Nullable)reward;
@end


/// Represents an rewarded ad unit for original type of integration.
SWIFT_CLASS("_TtC12PrebidMobile19RewardedVideoAdUnit")
@interface RewardedVideoAdUnit : AdUnit <PBMVideoBasedAdUnitProtocol>
/// Property for video parameters.
@property (nonatomic, strong) VideoParameters * _Nonnull videoParameters;
/// A flag that determines whether SKOverlay should be supported
@property (nonatomic) BOOL supportSKOverlay;
/// Initializes a <code>RewardedVideoAdUnit</code> with the given configuration ID.
/// \param configId The configuration ID for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId OBJC_DESIGNATED_INITIALIZER;
/// Initializes a <code>RewardedVideoAdUnit</code> with the given configuration ID and minimum size percentages.
/// \param configId The configuration ID for the ad unit.
///
/// \param minWidthPerc The minimum width percentage for the ad unit.
///
/// \param minHeightPerc The minimum height percentage for the ad unit.
///
- (nonnull instancetype)initWithConfigId:(NSString * _Nonnull)configId minWidthPerc:(NSInteger)minWidthPerc minHeightPerc:(NSInteger)minHeightPerc;
/// Attempts to display an <code>SKOverlay</code> if a valid configuration is available.
- (void)activateSKOverlayIfAvailable;
/// Dismisses the SKOverlay if presented
- (void)dismissSKOverlayIfAvailable;
@end


/// A logger implementation for Prebid SDK that logs messages to the console.
SWIFT_CLASS("_TtC12PrebidMobile16SDKConsoleLogger")
@interface SDKConsoleLogger : NSObject <PrebidLogger>
- (void)error:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)info:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)debug:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)verbose:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)warn:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)severe:(id _Nonnull)object filename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (void)whereAmIWithFilename:(NSString * _Nonnull)filename line:(NSInteger)line function:(NSString * _Nonnull)function;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SKOverlayManager")
@interface PBMSKOverlayManager : NSObject
- (nonnull instancetype)initWithViewControllerForPresentation:(UIViewController * _Nonnull)viewControllerForPresentation OBJC_DESIGNATED_INITIALIZER;
- (void)presentSKOverlayWith:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo isCompanionAd:(BOOL)isCompanionAd;
- (void)dismissSKOverlay;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("ServerEvent")
@interface PBMServerEvent : NSObject
- (nonnull instancetype)initWithUrl:(NSString * _Nonnull)url expectedEventType:(enum PBMTrackingEvent)expectedEventType OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A class containing constants related to OpenRTB signals.
/// This class provides static constants and values representing different
/// API frameworks, playback methods, protocols, start delays, and video
/// placement types as defined in the OpenRTB specification.
SWIFT_CLASS("_TtC12PrebidMobile7Signals")
@interface Signals : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - API Frameworks</h1>
/// \code
/// | Value | Description |
/// |-------|-------------|
/// | 1     | VPAID 1.0   |
/// | 2     | VPAID 2.0   |
/// | 3     | MRAID-1     |
/// | 4     | ORMMA       |
/// | 5     | MRAID-2     |
/// | 6     | MRAID-3     |
/// | 7     | OMID-1      |
///
/// \endcode
SWIFT_CLASS_NAMED("Api")
@interface PBApi : SingleContainerInt
/// VPAID 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull VPAID_1;)
+ (PBApi * _Nonnull)VPAID_1 SWIFT_WARN_UNUSED_RESULT;
/// VPAID 2.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull VPAID_2;)
+ (PBApi * _Nonnull)VPAID_2 SWIFT_WARN_UNUSED_RESULT;
/// MRAID-1
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_1;)
+ (PBApi * _Nonnull)MRAID_1 SWIFT_WARN_UNUSED_RESULT;
/// ORMMA
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull ORMMA;)
+ (PBApi * _Nonnull)ORMMA SWIFT_WARN_UNUSED_RESULT;
/// MRAID-2
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_2;)
+ (PBApi * _Nonnull)MRAID_2 SWIFT_WARN_UNUSED_RESULT;
/// MRAID-3
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull MRAID_3;)
+ (PBApi * _Nonnull)MRAID_3 SWIFT_WARN_UNUSED_RESULT;
/// OMID-1
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBApi * _Nonnull OMID_1;)
+ (PBApi * _Nonnull)OMID_1 SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Playback Methods</h1>
/// \code
/// | Value | Description                                              |
/// |-------|----------------------------------------------------------|
/// | 1     | Initiates on Page Load with Sound On                     |
/// | 2     | Initiates on Page Load with Sound Off by Default         |
/// | 3     | Initiates on Click with Sound On                         |
/// | 4     | Initiates on Mouse-Over with Sound On                    |
/// | 5     | Initiates on Entering Viewport with Sound On             |
/// | 6     | Initiates on Entering Viewport with Sound Off by Default |
///
/// \endcode
SWIFT_CLASS_NAMED("PlaybackMethod")
@interface PBPlaybackMethod : SingleContainerInt
/// Initiates on Page Load with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull AutoPlaySoundOn;)
+ (PBPlaybackMethod * _Nonnull)AutoPlaySoundOn SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Page Load with Sound Off by Default
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull AutoPlaySoundOff;)
+ (PBPlaybackMethod * _Nonnull)AutoPlaySoundOff SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Click with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull ClickToPlay;)
+ (PBPlaybackMethod * _Nonnull)ClickToPlay SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Mouse-Over with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull MouseOver;)
+ (PBPlaybackMethod * _Nonnull)MouseOver SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Entering Viewport with Sound On
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull EnterSoundOn;)
+ (PBPlaybackMethod * _Nonnull)EnterSoundOn SWIFT_WARN_UNUSED_RESULT;
/// Initiates on Entering Viewport with Sound Off by Default
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlaybackMethod * _Nonnull EnterSoundOff;)
+ (PBPlaybackMethod * _Nonnull)EnterSoundOff SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Protocols</h1>
/// \code
/// | Value | Description       |
/// |-------|-------------------|
/// | 1     | VAST 1.0          |
/// | 2     | VAST 2.0          |
/// | 3     | VAST 3.0          |
/// | 4     | VAST 1.0 Wrapper  |
/// | 5     | VAST 2.0 Wrapper  |
/// | 6     | VAST 3.0 Wrapper  |
/// | 7     | VAST 4.0          |
/// | 8     | VAST 4.0 Wrapper  |
/// | 9     | DAAST 1.0         |
/// | 10    | DAAST 1.0 Wrapper |
///
/// \endcode
SWIFT_CLASS_NAMED("Protocols")
@interface PBProtocols : SingleContainerInt
/// VAST 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_1_0;)
+ (PBProtocols * _Nonnull)VAST_1_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 2.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_2_0;)
+ (PBProtocols * _Nonnull)VAST_2_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 3.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_3_0;)
+ (PBProtocols * _Nonnull)VAST_3_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 1.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_1_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_1_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 2.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_2_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_2_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 3.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_3_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_3_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// VAST 4.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_4_0;)
+ (PBProtocols * _Nonnull)VAST_4_0 SWIFT_WARN_UNUSED_RESULT;
/// VAST 4.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull VAST_4_0_Wrapper;)
+ (PBProtocols * _Nonnull)VAST_4_0_Wrapper SWIFT_WARN_UNUSED_RESULT;
/// DAAST 1.0
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull DAAST_1_0;)
+ (PBProtocols * _Nonnull)DAAST_1_0 SWIFT_WARN_UNUSED_RESULT;
/// DAAST 1.0 Wrapper
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBProtocols * _Nonnull DAAST_1_0_WRAPPER;)
+ (PBProtocols * _Nonnull)DAAST_1_0_WRAPPER SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Start Delay</h1>
/// \code
/// | Value | Description                                      |
/// |-------|--------------------------------------------------|
/// | > 0   | Mid-Roll (value indicates start delay in second) |
/// | 0     | Pre-Roll                                         |
/// | -1    | Generic Mid-Roll                                 |
/// | -2    | Generic Post-Roll                                |
///
/// \endcode
SWIFT_CLASS_NAMED("StartDelay")
@interface PBStartDelay : SingleContainerInt
/// Pre-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull PreRoll;)
+ (PBStartDelay * _Nonnull)PreRoll SWIFT_WARN_UNUSED_RESULT;
/// Generic Mid-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull GenericMidRoll;)
+ (PBStartDelay * _Nonnull)GenericMidRoll SWIFT_WARN_UNUSED_RESULT;
/// Generic Post-Roll
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBStartDelay * _Nonnull GenericPostRoll;)
+ (PBStartDelay * _Nonnull)GenericPostRoll SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Video Placement Types</h1>
/// \code
/// | Value | Description                  |
/// |-------|------------------------------|
/// | 1     | In-Stream                    |
/// | 2     | In-Banner                    |
/// | 3     | In-Article                   |
/// | 4     | In-Feed                      |
/// | 5     | Interstitial/Slider/Floating |
///
/// \endcode
SWIFT_CLASS_NAMED("Placement")
@interface PBPlacement : SingleContainerInt
/// In-Stream
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InStream;)
+ (PBPlacement * _Nonnull)InStream SWIFT_WARN_UNUSED_RESULT;
/// In-Banner
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InBanner;)
+ (PBPlacement * _Nonnull)InBanner SWIFT_WARN_UNUSED_RESULT;
/// In-Article
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InArticle;)
+ (PBPlacement * _Nonnull)InArticle SWIFT_WARN_UNUSED_RESULT;
/// In-Feed
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull InFeed;)
+ (PBPlacement * _Nonnull)InFeed SWIFT_WARN_UNUSED_RESULT;
/// Interstitial
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Interstitial;)
+ (PBPlacement * _Nonnull)Interstitial SWIFT_WARN_UNUSED_RESULT;
/// Slider
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Slider;)
+ (PBPlacement * _Nonnull)Slider SWIFT_WARN_UNUSED_RESULT;
/// Floating
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlacement * _Nonnull Floating;)
+ (PBPlacement * _Nonnull)Floating SWIFT_WARN_UNUSED_RESULT;
/// Helper function
+ (PBPlacement * _Nullable)getPlacementByRawValue:(NSInteger)value SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Updated Video Placement Types</h1>
/// \code
/// | Value | Description                  |
/// |-------|------------------------------|
/// | 1     | Instream                     |
/// | 2     | Accompanying Content         |
/// | 3     | Interstitial                 |
/// | 4     | No Content/Standalone        |
///
/// \endcode
SWIFT_CLASS_NAMED("Plcmnt")
@interface PBPlcmnt : SingleContainerInt
/// Instream
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Instream;)
+ (PBPlcmnt * _Nonnull)Instream SWIFT_WARN_UNUSED_RESULT;
/// AccompanyingContent
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull AccompanyingContent;)
+ (PBPlcmnt * _Nonnull)AccompanyingContent SWIFT_WARN_UNUSED_RESULT;
/// Interstitial
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Interstitial;)
+ (PBPlcmnt * _Nonnull)Interstitial SWIFT_WARN_UNUSED_RESULT;
/// NoContent
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull NoContent;)
+ (PBPlcmnt * _Nonnull)NoContent SWIFT_WARN_UNUSED_RESULT;
/// Standalone
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBPlcmnt * _Nonnull Standalone;)
+ (PBPlcmnt * _Nonnull)Standalone SWIFT_WARN_UNUSED_RESULT;
/// Helper function
+ (PBPlcmnt * _Nullable)getPlacementByRawValue:(NSInteger)value SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


/// <h1>OpenRTB - Creative Attributes</h1>
/// \code
/// | Value | Description                                                                |
/// |-------|----------------------------------------------------------------------------|
/// | 1     | Audio Ad (Autoplay)                                                        |
/// | 2     | Audio Ad (User Initiated)                                                  |
/// | 3     | Expandable (Automatic)                                                     |
/// | 4     | Expandable (User Initiated - Click)                                        |
/// | 5     | Expandable (User Initiated - Rollover)                                     |
/// | 6     | In-Banner Video Ad (Autoplay)                                              |
/// | 7     | In-Banner Video Ad (User Initiated)                                        |
/// | 8     | Pop (e.g., Over, Under, or Upon Exit)                                      |
/// | 9     | Provocative or Suggestive Imagery                                          |
/// | 10    | Shaky, Flashing, Flickering, Extreme Animation, Smileys                    |
/// | 11    | Surveys                                                                    |
/// | 12    | Text Only                                                                  |
/// | 13    | User Interactive (e.g., Embedded Games)                                    |
/// | 14    | Windows Dialog or Alert Style                                              |
/// | 15    | Has Audio On/Off Button                                                    |
/// | 16    | Ad Provides Skip Button (e.g. VPAID-rendered skip button on pre-roll video)|
/// | 17    | Adobe Flash                                                                |
///
/// \endcode
SWIFT_CLASS_NAMED("CreativeAttribute")
@interface PBCreativeAttribute : SingleContainerInt
/// Audio Ad (Autoplay)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioAd_Autoplay;)
+ (PBCreativeAttribute * _Nonnull)AudioAd_Autoplay SWIFT_WARN_UNUSED_RESULT;
/// Audio Ad (User Initiated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioAd_UserInitiated;)
+ (PBCreativeAttribute * _Nonnull)AudioAd_UserInitiated SWIFT_WARN_UNUSED_RESULT;
/// Expandable (Automatic)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Automatic;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Automatic SWIFT_WARN_UNUSED_RESULT;
/// Expandable (User Initiated - Click)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Click;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Click SWIFT_WARN_UNUSED_RESULT;
/// Expandable (User Initiated - Rollover)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Expandable_Rollover;)
+ (PBCreativeAttribute * _Nonnull)Expandable_Rollover SWIFT_WARN_UNUSED_RESULT;
/// In-Banner Video Ad (Autoplay)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull InBanner_Autoplay;)
+ (PBCreativeAttribute * _Nonnull)InBanner_Autoplay SWIFT_WARN_UNUSED_RESULT;
/// In-Banner Video Ad (User Initiated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull InBanner_UserInitiated;)
+ (PBCreativeAttribute * _Nonnull)InBanner_UserInitiated SWIFT_WARN_UNUSED_RESULT;
/// Pop (e.g., Over, Under, or Upon Exit)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Pop;)
+ (PBCreativeAttribute * _Nonnull)Pop SWIFT_WARN_UNUSED_RESULT;
/// Provocative
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Provocative;)
+ (PBCreativeAttribute * _Nonnull)Provocative SWIFT_WARN_UNUSED_RESULT;
/// Suggestive Imagery
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull SuggestiveImagery;)
+ (PBCreativeAttribute * _Nonnull)SuggestiveImagery SWIFT_WARN_UNUSED_RESULT;
/// Shaky
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Shaky;)
+ (PBCreativeAttribute * _Nonnull)Shaky SWIFT_WARN_UNUSED_RESULT;
/// Flashing
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Flashing;)
+ (PBCreativeAttribute * _Nonnull)Flashing SWIFT_WARN_UNUSED_RESULT;
/// Flickering
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Flickering;)
+ (PBCreativeAttribute * _Nonnull)Flickering SWIFT_WARN_UNUSED_RESULT;
/// Extreme Animation
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull ExtremeAnimation;)
+ (PBCreativeAttribute * _Nonnull)ExtremeAnimation SWIFT_WARN_UNUSED_RESULT;
/// Smileys
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Smileys;)
+ (PBCreativeAttribute * _Nonnull)Smileys SWIFT_WARN_UNUSED_RESULT;
/// Surveys
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull Surveys;)
+ (PBCreativeAttribute * _Nonnull)Surveys SWIFT_WARN_UNUSED_RESULT;
/// Text Only
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull TextOnly;)
+ (PBCreativeAttribute * _Nonnull)TextOnly SWIFT_WARN_UNUSED_RESULT;
/// User Interactive (e.g., Embedded Games)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull UserInteractive;)
+ (PBCreativeAttribute * _Nonnull)UserInteractive SWIFT_WARN_UNUSED_RESULT;
/// Windows Dialog
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull WindowsDialog;)
+ (PBCreativeAttribute * _Nonnull)WindowsDialog SWIFT_WARN_UNUSED_RESULT;
/// Alert Style
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AlertStyle;)
+ (PBCreativeAttribute * _Nonnull)AlertStyle SWIFT_WARN_UNUSED_RESULT;
/// Has Audio On/Off Button
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AudioButton;)
+ (PBCreativeAttribute * _Nonnull)AudioButton SWIFT_WARN_UNUSED_RESULT;
/// Ad Provides Skip Button (e.g. VPAID-rendered skip button on pre-roll video)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull SkipButton;)
+ (PBCreativeAttribute * _Nonnull)SkipButton SWIFT_WARN_UNUSED_RESULT;
/// Adobe Flash
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBCreativeAttribute * _Nonnull AdobeFlash;)
+ (PBCreativeAttribute * _Nonnull)AdobeFlash SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithIntegerLiteral:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
@end


@class SKAdImpression;

SWIFT_CLASS_NAMED("SkadnEventTracker") SWIFT_AVAILABILITY(ios,introduced=14.5)
@interface PBMSkadnEventTracker : NSObject <PBMEventTrackerProtocol>
- (nonnull instancetype)initWith:(SKAdImpression * _Nonnull)imp OBJC_DESIGNATED_INITIALIZER;
- (void)trackEvent:(enum PBMTrackingEvent)event;
- (void)trackVideoAdLoaded:(PBMVideoVerificationParameters * _Nonnull)parameters;
- (void)trackStartVideoWithDuration:(NSTimeInterval)duration volume:(double)volume;
- (void)trackVolumeChanged:(double)playerVolume deviceVolume:(double)deviceVolume;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("SkadnParametersManager")
@interface PBMSkadnParametersManager : NSObject
+ (SKAdImpression * _Nullable)getSkadnImpressionFor:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(ios,introduced=14.5);
+ (NSDictionary<NSString *, id> * _Nullable)getSkadnProductParametersFor:(PBMORTBBidExtSkadn * _Nonnull)skadnInfo SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A class that manages targeting information for ads.
/// This class provides properties and methods for setting and retrieving
/// user-specific targeting information, such as user ID, and custom
/// data. It also includes details for OMID (Open Measurement Interface Definition)
/// partner and supports managing user identity links and custom extensions.
SWIFT_CLASS("_TtC12PrebidMobile9Targeting")
@interface Targeting : NSObject
/// A shared instance of the <code>Targeting</code> class.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) Targeting * _Nonnull shared;)
+ (Targeting * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
+ (void)setShared:(Targeting * _Nonnull)value;
/// The name of the OMID partner.
@property (nonatomic, copy) NSString * _Nullable omidPartnerName;
/// The version of the OMID partner.
@property (nonatomic, copy) NSString * _Nullable omidPartnerVersion;
/// Placeholder for exchange-specific extensions to OpenRTB.
@property (nonatomic, copy) NSDictionary<NSString *, NSObject *> * _Nullable userExt;
/// Objective C analog of subjectToCOPPA
@property (nonatomic, strong) NSNumber * _Nullable coppa;
/// Objective-C API
- (void)setSubjectToGDPR:(NSNumber * _Nullable)newValue;
/// Objective-C API
- (NSNumber * _Nullable)getSubjectToGDPR SWIFT_WARN_UNUSED_RESULT;
/// The consent string for sending the GDPR consent
@property (nonatomic, copy) NSString * _Nullable gdprConsentString;
/// The consent string for purposes consent as per TCFv2.
@property (nonatomic, copy) NSString * _Nullable purposeConsents;
/// Returns whether the user has consented to access device data as an <code>NSNumber</code>.
- (NSNumber * _Nullable)getDeviceAccessConsentObjc SWIFT_WARN_UNUSED_RESULT;
/// Checks if access to device data is allowed.
- (BOOL)isAllowedAccessDeviceData SWIFT_WARN_UNUSED_RESULT;
/// This value forces SDK to choose targeting info of the winning bid
@property (nonatomic) BOOL forceSdkToChooseWinner;
/// Sets the external user ID.
- (void)setExternalUserIds:(NSArray<ExternalUserId *> * _Nonnull)externalUserIds;
/// Retrieves the external user IDs in a dictionary format suitable for use in JSON.
- (NSArray<NSDictionary<NSString *, id> *> * _Nullable)getExternalUserIds SWIFT_WARN_UNUSED_RESULT;
/// When true, the SharedID external user id is added to outgoing auction requests.  App developers are
/// encouraged to consult with their legal team before enabling this feature.
/// See <code>Targeting.sharedId</code> for details.
@property (nonatomic) BOOL sendSharedId;
/// A randomly generated Prebid-owned first-party identifier
/// Unless reset, SharedID remains consistent throughout the current app session. The same id may also persist
/// indefinitely across multiple app sessions if local storage access is allowed. SharedID values are NOT consistent
/// across different apps on the same device.
/// note:
/// SharedId is only sent with auction requests if <code>Targeting.sendSharedId</code> is set to true.
@property (nonatomic, readonly, strong) ExternalUserId * _Nonnull sharedId;
/// Resets and clears out of local storage the existing SharedID value, after which <code>Targeting.sharedId</code> will
/// return a new randomized value.
- (void)resetSharedId;
/// This is the deep-link URL for the app screen that is displaying the ad. This can be an iOS universal link.
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// App’s publisher name.
@property (nonatomic, copy) NSString * _Nullable publisherName;
/// ID of publisher app in Apple’s App Store.
@property (nonatomic, copy) NSString * _Nullable sourceapp;
/// App store URL for an installed app
@property (nonatomic, copy) NSString * _Nullable storeURL;
/// Domain name of the app
@property (nonatomic, copy) NSString * _Nullable domain;
/// The itunes app id for targeting
@property (nonatomic, copy) NSString * _Nullable itunesID;
/// The application location for targeting
@property (nonatomic, strong) CLLocation * _Nullable location;
/// CLLocationCoordinate2D.
/// See CoreLocation framework documentation.
@property (nonatomic, strong) NSValue * _Nullable coordinate;
/// Sets the global-level OpenRTB configuration string.
/// \param ortbObject The global-level OpenRTB configuration string to set. Can be <code>nil</code> to clear the configuration.
///
- (void)setGlobalORTBConfig:(NSString * _Nullable)ortbConfig;
/// Returns the global-level OpenRTB configuration string.
- (NSString * _Nullable)getGlobalORTBConfig SWIFT_WARN_UNUSED_RESULT;
/// Adds a parameter to the parameter dictionary with a specified name.
/// \param value The value of the parameter.
///
/// \param withName The name of the parameter. If <code>nil</code>, the parameter is not added.
///
- (void)addParam:(NSString * _Nonnull)value withName:(NSString * _Nullable)withName;
/// Store location in the user’s section
- (void)setLatitude:(double)latitude longitude:(double)longitude;
/// Adds a bidder to the access control list.
/// \param bidderName The name of the bidder to add.
///
- (void)addBidderToAccessControlList:(NSString * _Nonnull)bidderName;
/// Removes a bidder from the access control list.
/// \param bidderName The name of the bidder to remove.
///
- (void)removeBidderFromAccessControlList:(NSString * _Nonnull)bidderName;
/// Clears all bidders from the access control list.
- (void)clearAccessControlList;
/// Retrieves the current access control list.
///
/// returns:
/// An array of bidder names in the access control list.
- (NSArray<NSString *> * _Nonnull)getAccessControlList SWIFT_WARN_UNUSED_RESULT;
/// Access control list for external use.
///
/// returns:
/// An array of bidder names in the access control list.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull accessControlList;
/// Adds a user keyword.
/// \param newElement The keyword to add.
///
- (void)addUserKeyword:(NSString * _Nonnull)newElement;
/// Adds multiple user keywords.
/// \param newElements A set of keywords to add.
///
- (void)addUserKeywords:(NSSet<NSString *> * _Nonnull)newElements;
/// Removes a user keyword.
/// \param element The keyword to remove.
///
- (void)removeUserKeyword:(NSString * _Nonnull)element;
/// Clears all user keywords.
- (void)clearUserKeywords;
/// Retrieves all user keywords.
///
/// returns:
/// An array of user keywords.
- (NSArray<NSString *> * _Nonnull)getUserKeywords SWIFT_WARN_UNUSED_RESULT;
/// Adds application-specific data for a specified key.
/// \param key The key for the application data.
///
/// \param value The value to add for the specified key.
///
- (void)addAppExtDataWithKey:(NSString * _Nonnull)key value:(NSString * _Nonnull)value;
/// Updates application-specific data for a specified key with a new set of values.
/// \param key The key for the application data.
///
/// \param value The set of values to update for the specified key.
///
- (void)updateAppExtDataWithKey:(NSString * _Nonnull)key value:(NSSet<NSString *> * _Nonnull)value;
/// Removes application-specific data for a specified key.
/// \param key The key for the application data to remove.
///
- (void)removeAppExtDataFor:(NSString * _Nonnull)key;
/// Clears all application-specific data.
- (void)clearAppExtData;
/// Retrieves all application-specific data.
///
/// returns:
/// A dictionary mapping keys to arrays of values.
- (NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull)getAppExtData SWIFT_WARN_UNUSED_RESULT;
/// Adds an application keyword.
/// \param newElement The keyword to add.
///
- (void)addAppKeyword:(NSString * _Nonnull)newElement;
/// Adds multiple application keywords.
/// \param newElements A set of keywords to add.
///
- (void)addAppKeywords:(NSSet<NSString *> * _Nonnull)newElements;
/// Removes an application keyword.
/// \param element The keyword to remove.
///
- (void)removeAppKeyword:(NSString * _Nonnull)element;
/// Clears all application keywords.
- (void)clearAppKeywords;
/// Retrieves all application keywords.
///
/// returns:
/// An array of application keywords.
- (NSArray<NSString *> * _Nonnull)getAppKeywords SWIFT_WARN_UNUSED_RESULT;
/// Dictionary of parameters.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nonnull parameterDictionary;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ThreadProtocol")
@protocol PBMThreadProtocol
@property (nonatomic, readonly) BOOL isMainThread;
@end


@interface NSThread (SWIFT_EXTENSION(PrebidMobile)) <PBMThreadProtocol>
@end


typedef SWIFT_ENUM_NAMED(NSInteger, PBMTrackingEvent, "TrackingEvent", open) {
  PBMTrackingEventRequest = 0,
  PBMTrackingEventImpression = 1,
  PBMTrackingEventClick = 2,
  PBMTrackingEventOverlayClick = 3,
  PBMTrackingEventCompanionClick = 4,
  PBMTrackingEventPlay = 5,
  PBMTrackingEventPause = 6,
  PBMTrackingEventResume = 7,
  PBMTrackingEventRewind = 8,
  PBMTrackingEventSkip = 9,
  PBMTrackingEventCreativeView = 10,
  PBMTrackingEventStart = 11,
  PBMTrackingEventFirstQuartile = 12,
  PBMTrackingEventMidpoint = 13,
  PBMTrackingEventThirdQuartile = 14,
  PBMTrackingEventComplete = 15,
  PBMTrackingEventMute = 16,
  PBMTrackingEventUnmute = 17,
  PBMTrackingEventFullscreen = 18,
  PBMTrackingEventExitFullscreen = 19,
  PBMTrackingEventNormal = 20,
  PBMTrackingEventExpand = 21,
  PBMTrackingEventCollapse = 22,
  PBMTrackingEventCloseLinear = 23,
  PBMTrackingEventCloseOverlay = 24,
  PBMTrackingEventAcceptInvitation = 25,
  PBMTrackingEventError = 26,
  PBMTrackingEventLoaded = 27,
  PBMTrackingEventPrebidWin = 28,
  PBMTrackingEventUnknown = 29,
};


SWIFT_CLASS_NAMED("TrackingEventDescription")
@interface PBMTrackingEventDescription : NSObject
+ (NSString * _Nonnull)getDescription:(enum PBMTrackingEvent)event SWIFT_WARN_UNUSED_RESULT;
+ (enum PBMTrackingEvent)getEventWith:(NSString * _Nonnull)description SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class PBMOpenMeasurementSession;
@class PBMOpenMeasurementWrapper;
@protocol PBMTransactionDelegate;

SWIFT_PROTOCOL_NAMED("Transaction")
@protocol PBMTransaction <NSObject>
@property (nonatomic, readonly, strong) PBMAdConfiguration * _Nonnull adConfiguration;
@property (nonatomic, copy) NSArray<PBMAbstractCreative *> * _Nonnull creatives;
@property (nonatomic, copy) NSArray<PBMCreativeModel *> * _Nonnull creativeModels;
@property (nonatomic, strong) PBMOpenMeasurementSession * _Nonnull measurementSession;
@property (nonatomic, strong) PBMOpenMeasurementWrapper * _Nonnull measurementWrapper;
@property (nonatomic, strong) Bid * _Nullable bid;
@property (nonatomic, weak) id <PBMTransactionDelegate> _Nullable delegate;
- (nonnull instancetype)initWithServerConnection:(id <PrebidServerConnectionProtocol> _Nonnull)serverConnection adConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration models:(NSArray<PBMCreativeModel *> * _Nonnull)models;
- (void)startCreativeFactory;
- (PBMAdDetails * _Nullable)getAdDetails SWIFT_WARN_UNUSED_RESULT;
- (PBMAbstractCreative * _Nullable)getFirstCreative SWIFT_WARN_UNUSED_RESULT;
- (PBMAbstractCreative * _Nullable)getCreativeAfter:(PBMAbstractCreative * _Nonnull)after SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)revenueForCreativeAfter:(PBMAbstractCreative * _Nonnull)after SWIFT_WARN_UNUSED_RESULT;
- (void)resetAdConfiguration:(PBMAdConfiguration * _Nonnull)adConfiguration;
@end


SWIFT_PROTOCOL_NAMED("TransactionDelegate")
@protocol PBMTransactionDelegate
- (void)transactionReadyForDisplay:(id <PBMTransaction> _Nonnull)transaction;
- (void)transactionFailedToLoad:(id <PBMTransaction> _Nonnull)transaction error:(NSError * _Nonnull)error;
@end







SWIFT_CLASS_NAMED("UserAgentService")
@interface PBMUserAgentService : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PBMUserAgentService * _Nonnull shared;)
+ (PBMUserAgentService * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull userAgent;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)fetchUserAgentWithCompletion:(void (^ _Nullable)(NSString * _Nonnull))completion;
@end



/// Extended ID UID objects from the given source.
SWIFT_CLASS("_TtC12PrebidMobile12UserUniqueID")
@interface UserUniqueID : NSObject
/// Cookie or platform-native identifier.
@property (nonatomic, copy) NSString * _Nonnull id;
/// Type of user agent the match is from. It is highly recommended to set this, as many DSPs separate app-native IDs from browser-based IDs and require a type value for ID resolution.
@property (nonatomic, strong) NSNumber * _Nonnull aType;
/// Optional vendor-specific extensions.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable ext;
/// Initializes a new UserUniqueID object.
/// \param id Cookie or platform-native identifier.
///
/// \param aType Type of user agent the match is from. Recommended for DSP ID resolution.
///
/// \param ext Optional vendor-specific extensions. Default is <code>nil</code>.
///
- (nonnull instancetype)initWithId:(NSString * _Nonnull)id aType:(NSNumber * _Nonnull)aType ext:(NSDictionary<NSString *, id> * _Nullable)ext OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A utility class for handling various ad-related operations and conversions.
SWIFT_CLASS("_TtC12PrebidMobile5Utils")
@interface Utils : NSObject
/// The class is created as a singleton object & used
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Utils * _Nonnull shared;)
+ (Utils * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// The initializer that needs to be created only once
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// A delegate to handle native ad events.
@property (nonatomic, weak) id <NativeAdDelegate> _Nullable delegate;
/// Finds a native ad object within a given object.
/// \param adObject The object to search within.
///
- (void)findNativeWithAdObject:(id _Nonnull)adObject;
@end


SWIFT_CLASS_NAMED("VastTrackingEvents")
@interface PBMVastTrackingEvents : NSObject
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSArray<NSString *> *> * _Nonnull trackingEvents;
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nonnull progressOffsets;
- (void)addTrackingURL:(NSString * _Nullable)url event:(NSString * _Nullable)event attributes:(NSDictionary<NSString *, NSString *> * _Nullable)attributes;
- (NSArray<NSString *> * _Nullable)trackingURLsForEvent:(NSString * _Nullable)event SWIFT_WARN_UNUSED_RESULT;
- (void)addTrackingEvents:(PBMVastTrackingEvents * _Nullable)events;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



/// A class representing the configuration for video controls in an ad.
/// This includes properties for video duration, mute status, and button positioning and visibility.
/// Configuration values can be initialized from bid response or set directly by the user.
SWIFT_CLASS_NAMED("VideoControlsConfiguration")
@interface PBMVideoControlsConfiguration : NSObject
/// This property indicates maximum video duration.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.maxvideoduration.
@property (nonatomic, readonly, strong) NSNumber * _Nullable maxVideoDuration;
/// This property indicates whether the ad should run playback with sound or not.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.ismuted or set by user.
@property (nonatomic) BOOL isMuted;
/// This property indicates the area which the close button should occupy on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.closebuttonarea or set by user.
@property (nonatomic) double closeButtonArea;
/// This property indicates the position of the close button on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.closebuttonposition or set by user.
@property (nonatomic) enum PBMPosition closeButtonPosition;
/// This property indicates the area which the skip button should occupy on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipbuttonarea or set by user.
@property (nonatomic) double skipButtonArea;
/// This property indicates the position of the skip button on the screen.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipbuttonposition or set by user.
@property (nonatomic) enum PBMPosition skipButtonPosition;
/// This property indicates the number of seconds which should be passed from the start of playback until the skip or close button should be shown.
/// Obtained from the field ext,prebid.passthrough[].adConfiguration.skipdelay or set by user.
@property (nonatomic) double skipDelay;
/// This property indicates whether mute controls is visible on the screen.
@property (nonatomic) BOOL isSoundButtonVisible;
/// Use to initialize video controls with server values.
- (void)initializeWith:(PBMORTBAdConfiguration * _Nullable)ortbAdConfiguration;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Describes an <a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf">OpenRTB</a> video object
SWIFT_CLASS("_TtC12PrebidMobile15VideoParameters")
@interface VideoParameters : NSObject
/// List of supported API frameworks for this impression. If an API is not explicitly listed, it is assumed not to be supported.
@property (nonatomic, copy) NSArray<PBApi *> * _Nullable api;
/// Maximum bit rate in Kbps.
@property (nonatomic, strong) SingleContainerInt * _Nullable maxBitrate;
/// Maximum bit rate in Kbps.
@property (nonatomic, strong) SingleContainerInt * _Nullable minBitrate;
/// Maximum video ad duration in seconds.
@property (nonatomic, strong) SingleContainerInt * _Nullable maxDuration;
/// Minimum video ad duration in seconds.
@property (nonatomic, strong) SingleContainerInt * _Nullable minDuration;
/// <h1>Example</h1>
/// “video/mp4”
/// “video/x-ms-wmv”
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull mimes;
/// Allowed playback methods. If none specified, assume all are allowed.
@property (nonatomic, copy) NSArray<PBPlaybackMethod *> * _Nullable playbackMethod;
/// Array of supported video bid response protocols.
@property (nonatomic, copy) NSArray<PBProtocols *> * _Nullable protocols;
/// Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements.
@property (nonatomic, strong) PBStartDelay * _Nullable startDelay;
/// Placement type for the impression.
@property (nonatomic, strong) PBPlacement * _Nullable placement;
/// Placement type for the impression.
@property (nonatomic, strong) PBPlcmnt * _Nullable plcmnt;
/// Indicates if the impression must be linear, nonlinear, etc. If none specified, assume all are allowed.
@property (nonatomic, strong) SingleContainerInt * _Nullable linearity;
/// List of blocked creative attributes.
@property (nonatomic, copy) NSArray<PBCreativeAttribute *> * _Nullable battr;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawAPI;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawPlaybackMethod;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawProtocols;
/// Helper property
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nullable rawBattrs;
@property (nonatomic, readonly, strong) NSNumber * _Nullable rawSkippable;
/// \param mimes supported MIME types
///
- (nonnull instancetype)initWithMimes:(NSArray<NSString *> * _Nonnull)mimes OBJC_DESIGNATED_INITIALIZER;
/// Objective-C API
- (void)setSize:(NSValue * _Nonnull)size;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class PBMVideoVerificationResource;

SWIFT_CLASS_NAMED("VideoVerificationParameters")
@interface PBMVideoVerificationParameters : NSObject
@property (nonatomic, copy) NSArray<PBMVideoVerificationResource *> * _Nonnull verificationResources;
@property (nonatomic) BOOL autoPlay;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("VideoVerificationResource")
@interface PBMVideoVerificationResource : NSObject
@property (nonatomic, copy) NSString * _Nullable url;
@property (nonatomic, copy) NSString * _Nullable vendorKey;
@property (nonatomic, copy) NSString * _Nullable params;
@property (nonatomic, copy) NSString * _Nullable apiFramework;
@property (nonatomic, strong) PBMVastTrackingEvents * _Nullable trackingEvents;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSNumberFormatter;

SWIFT_PROTOCOL_NAMED("ViewExposure")
@protocol PBMViewExposure <NSObject, PBMSwiftMigrationHelper>
+ (id <PBMViewExposure> _Nonnull)zeroExposure SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) float exposureFactor;
@property (nonatomic, readonly) float exposedPercentage;
@property (nonatomic, readonly) CGRect visibleRectangle;
@property (nonatomic, readonly, copy) NSArray<NSValue *> * _Nullable occlusionRectangles;
- (nonnull instancetype)initWithExposureFactor:(float)exposureFactor visibleRectangle:(CGRect)visibleRectangle occlusionRectangles:(NSArray<NSValue *> * _Nullable)occlusionRectangles;
- (NSString * _Nonnull)serializeWithFormatter:(NSNumberFormatter * _Nonnull)formatter SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL_NAMED("WinNotifier")
@protocol PBMWinNotifier
- (nonnull instancetype)init;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) void (^ _Nonnull (^ _Nonnull factoryBlock)(id <PrebidServerConnectionProtocol> _Nonnull))(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable));)
+ (void (^ _Nonnull (^ _Nonnull)(id <PrebidServerConnectionProtocol> _Nonnull))(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))factoryBlock SWIFT_WARN_UNUSED_RESULT;
+ (void)notifyThroughConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection winningBid:(Bid * _Nonnull)winningBid callback:(void (^ _Nonnull)(NSString * _Nullable))callback;
+ (void (^ _Nonnull)(Bid * _Nonnull, void (^ _Nonnull)(NSString * _Nullable)))winNotifierBlockWithConnection:(id <PrebidServerConnectionProtocol> _Nonnull)connection SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)cacheUrlFromTargeting:(NSDictionary<NSString *, NSString *> * _Nonnull)targeting idKey:(NSString * _Nonnull)idKey SWIFT_WARN_UNUSED_RESULT;
@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
