#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 INMOBISDK_SWIFT_H
#define INMOBISDK_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 Foundation;
@import ObjectiveC;
@import UIKit;
#endif

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"

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

#if defined(__OBJC__)
@class NSString;

SWIFT_CLASS("_TtC9InMobiSDK14AdChoiceConfig")
@interface AdChoiceConfig : NSObject
@property (nonatomic) NSInteger width;
@property (nonatomic) NSInteger height;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic, copy) NSString * _Nonnull landingPage;
@property (nonatomic, copy) NSString * _Nonnull openMode;
@property (nonatomic) NSInteger loadTimeout;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK15AdQualityConfig")
@interface AdQualityConfig : NSObject
@property (nonatomic) NSInteger maxImageSize;
@property (nonatomic) NSInteger resizedPercentage;
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) NSInteger maxRetries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK14AdReportConfig")
@interface AdReportConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger cridls;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK14AdsAudioConfig")
@interface AdsAudioConfig : NSObject
@property (nonatomic) BOOL isAudioEnabled;
@property (nonatomic) NSInteger minDeviceVolume;
@property (nonatomic) NSInteger minRefreshInterval;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP9InMobiSDK9IMConfigP_")
@protocol IMConfigP <NSObject>
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC9InMobiSDK12IMConfigBase")
@interface IMConfigBase : NSObject <IMConfigP>
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class ContextualDataConfig;
@class ImaiConfig;
@class ViewabilityConfig;
@class TimeoutsConfig;
@class VastVideoConfig;
@class AssetCacheConfig;
@class IMIncludeIds;
@class SkanConfig;
@class RenderingConfig;
@class SilenceDetectionConfig;
@class MraidConfig;
@class NativeConfig;
@class JSDownloaderConfig;
@class Mraid3Config;
@class PingV2Config;
@class WebViewModeConfig;

SWIFT_CLASS("_TtC9InMobiSDK9AdsConfig")
@interface AdsConfig : IMConfigBase
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) NSInteger minimumRefreshInterval;
@property (nonatomic) NSInteger defaultRefreshInterval;
@property (nonatomic, strong) ContextualDataConfig * _Nonnull contextualData;
@property (nonatomic, strong) AdsAudioConfig * _Nonnull audio;
@property (nonatomic, strong) AdReportConfig * _Nonnull adReport;
@property (nonatomic, strong) ImaiConfig * _Nonnull imai;
@property (nonatomic) BOOL mediaVolumeCollectionEnabled;
@property (nonatomic) BOOL applyGzipReq;
@property (nonatomic, strong) ViewabilityConfig * _Nonnull viewability;
@property (nonatomic, strong) AdQualityConfig * _Nonnull adQuality;
@property (nonatomic) BOOL watermarkEnabled;
@property (nonatomic) BOOL showIntWithoutVC;
@property (nonatomic, strong) TimeoutsConfig * _Nonnull timeouts;
@property (nonatomic, strong) VastVideoConfig * _Nonnull vastVideo;
@property (nonatomic, strong) AssetCacheConfig * _Nonnull assetCache;
@property (nonatomic, strong) IMIncludeIds * _Nonnull includeIds;
@property (nonatomic, strong) SkanConfig * _Nonnull skan;
@property (nonatomic, strong) RenderingConfig * _Nonnull rendering;
@property (nonatomic, strong) SilenceDetectionConfig * _Nonnull silenceDetection;
@property (nonatomic, strong) MraidConfig * _Nonnull mraid;
@property (nonatomic, strong) NativeConfig * _Nonnull native;
@property (nonatomic, strong) JSDownloaderConfig * _Nonnull jsDownloader;
@property (nonatomic, strong) Mraid3Config * _Nonnull mraid3;
@property (nonatomic, strong) PingV2Config * _Nonnull pingV2;
- (NSString * _Nonnull)getAdServerUrl SWIFT_WARN_UNUSED_RESULT;
- (WebViewModeConfig * _Nonnull)getWebviewConfigFor:(NSString * _Nonnull)type SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


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



SWIFT_CLASS("_TtC9InMobiSDK16AssetCacheConfig")
@interface AssetCacheConfig : NSObject
@property (nonatomic) double timeToLive;
@property (nonatomic) double maxCacheSize;
@property (nonatomic) NSInteger maxRetries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK20AssetReportingConfig")
@interface AssetReportingConfig : NSObject
@property (nonatomic) BOOL video;
@property (nonatomic) BOOL image;
@property (nonatomic) BOOL gif;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK21AudioImpressionConfig")
@interface AudioImpressionConfig : NSObject
@property (nonatomic) NSInteger impressionMinPercentageViewed;
@property (nonatomic) NSInteger impressionType;
@property (nonatomic) NSInteger impressionMinTimeViewed;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK9BTSConfig")
@interface BTSConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSTimeInterval expiry;
@property (nonatomic) NSInteger maxEntries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10BaseConfig")
@interface BaseConfig : NSObject
@property (nonatomic) BOOL enabled;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13BitRateConfig")
@interface BitRateConfig : NSObject
@property (nonatomic) NSInteger headerTimeout;
@property (nonatomic) BOOL bitrate_mandatory;
@property (nonatomic) BOOL useBitRate;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK24BloomFilterServiceConfig")
@interface BloomFilterServiceConfig : NSObject
@property (nonatomic) NSInteger maxFetchPerDay;
@property (nonatomic) NSInteger timeout;
@property (nonatomic) BOOL enabled;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic) int64_t maxBloomFileSize;
@property (nonatomic) int64_t hashIdMaxAge;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK7CConfig")
@interface CConfig : NSObject
@property (nonatomic) NSInteger cof;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13ConfigManager")
@interface ConfigManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) ConfigManager * _Nonnull shared;)
+ (ConfigManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)updateConfigWith:(NSString * _Nonnull)configType;
- (IMConfigBase * _Nullable)validateConfigWithConfigType:(NSString * _Nonnull)configType dictionary:(NSDictionary<NSString *, id> * _Nullable)dictionary SWIFT_WARN_UNUSED_RESULT;
@end


typedef SWIFT_ENUM(NSInteger, ConfigMuteIconPosition, open) {
  ConfigMuteIconPositionTopLeft = 0,
  ConfigMuteIconPositionTopRight = 1,
  ConfigMuteIconPositionBottomLeft = 2,
  ConfigMuteIconPositionBottomRight = 3,
};

@class RootConfig;
@class TelemetryConfig;
@class SignalConfig;
@class CrashConfig;

SWIFT_CLASS("_TtC9InMobiSDK14ConfigProvider")
@interface ConfigProvider : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RootConfig * _Nonnull rootConfig;)
+ (RootConfig * _Nonnull)rootConfig SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) TelemetryConfig * _Nonnull telemetryConfig;)
+ (TelemetryConfig * _Nonnull)telemetryConfig SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AdsConfig * _Nonnull adsConfig;)
+ (AdsConfig * _Nonnull)adsConfig SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SignalConfig * _Nonnull signalConfig;)
+ (SignalConfig * _Nonnull)signalConfig SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) CrashConfig * _Nonnull crashConfig;)
+ (CrashConfig * _Nonnull)crashConfig SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK20ContextualDataConfig")
@interface ContextualDataConfig : NSObject
@property (nonatomic) NSInteger maxAdRecords;
@property (nonatomic) NSInteger expiryTime;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull skipFields;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class CrashNetworkTypeConfig;
@class CrashReportingConfig;

SWIFT_CLASS("_TtC9InMobiSDK11CrashConfig")
@interface CrashConfig : IMConfigBase
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic) NSInteger maxRetryCount;
@property (nonatomic) NSInteger eventTTL;
@property (nonatomic) NSInteger maxEventsToPersist;
@property (nonatomic, strong) CrashNetworkTypeConfig * _Nonnull networkType;
@property (nonatomic, strong) CrashReportingConfig * _Nonnull crashConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK18CrashNetworkConfig")
@interface CrashNetworkConfig : NSObject
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) NSInteger minBatchSize;
@property (nonatomic) NSInteger maxBatchSize;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK22CrashNetworkTypeConfig")
@interface CrashNetworkTypeConfig : NSObject
@property (nonatomic, strong) CrashNetworkConfig * _Nonnull wifi;
@property (nonatomic, strong) CrashNetworkConfig * _Nonnull others;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK20CrashReportingConfig")
@interface CrashReportingConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) float samplingPercent;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK14DatabaseConfig")
@interface DatabaseConfig : NSObject
@property (nonatomic) NSInteger dbWALFrameSize;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK15DimensionConfig")
@interface DimensionConfig : NSObject
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull dimensions;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK14ErrorLogConfig")
@interface ErrorLogConfig : NSObject
@property (nonatomic) double samplePercent;
@property (nonatomic) NSInteger maxEntries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK17ExperimentsConfig")
@interface ExperimentsConfig : NSObject
@property (nonatomic) BOOL networkRevamp;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13GestureConfig")
@interface GestureConfig : NSObject
@property (nonatomic) BOOL isHTEnable;
@property (nonatomic) NSTimeInterval htThrottlingTime;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK12IMAdMetaInfo")
@interface IMAdMetaInfo : NSObject
/// CreativeID of the ad.
@property (nonatomic, readonly, copy) NSString * _Nullable creativeID;
/// Bid info Dictionary of the ad.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull bidInfo;
/// Bidvalue of the ad.
- (double)getBid SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol IMAudioDelegate;
@class NSCoder;

/// Class to integrate audio ads in your application
/// Adding audio ads is demonstrated in the code fragment below.
/// Implement the following in the view controller.
/// Swift code snippet:
/// \code
/// let audio = IMAudio(frame: CGRect(x:0, y:0, width:70, height:70), placementId: 11203280001, delegate: self)
/// audio.load()
/// self.view.addSubview(audio)
///
/// \endcodeObjective-C code snippet:
/// \code
/// self.audio = [[IMAudio alloc] initWithFrame:CGRectMake(0, 0, 70, 70) placementId:11203280001 delegate:self];
/// [self.audio load];
/// [self.view addSubview:self.audio];
///
/// \endcodeThe code snippet above demonstrates a dead simple integration. Your application code can additionally listen for lifecycle events on the audio ad by implementing the <code>IMAudioDelegate</code>.
/// On <code>audioDidFinishLoading</code> call the <code>show</code> function
/// Swift code snippet:
/// \code
/// audio.show()
///
/// \endcodeObjective-C code snippet:
/// \code
/// [self.audio show];
///
/// \endcode
SWIFT_CLASS("_TtC9InMobiSDK7IMAudio")
@interface IMAudio : UIView
@property (nonatomic, weak) id <IMAudioDelegate> _Nullable delegate;
/// The placement ID for this audio ad.
@property (nonatomic) int64_t placementId;
/// A free form set of keywords, separated by ‘,’ to be sent with the ad request.
/// E.g: “sports,cars,bikes”
@property (nonatomic, copy) NSString * _Nullable keywords;
/// Any additional information to be passed to InMobi.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extras;
/// The transition animation to be performed between refreshes.
@property (nonatomic) enum UIViewAnimationTransition transitionAnimation;
/// contentUrl for OMSDK
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// A unique identifier for the creative.
@property (nonatomic, readonly, copy) NSString * _Nullable creativeId;
/// Initializes an <code>IMAudio</code> instance with the specified frame and default placementId.
/// \param frame CGRect for this view, according to the requested size.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame;
/// Initializes an <code>IMAudio</code> instance with the specified placementId
/// \param frame CGRect for this view, according to the requested size.
///
/// \param placementId the placement Id registered on the InMobi portal.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame placementId:(int64_t)placementId;
/// Initializes an <code>IMAudio</code> instance with the specified <code>placementId</code> and delegate.
/// \param frame CGRect for this view, according to the requested size.
///
/// \param placementId the placement Id registered on the InMobi portal.
///
/// \param delegate The delegate to receive callbacks.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame placementId:(int64_t)placementId delegate:(id <IMAudioDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
/// Contains additional information of ad.
- (NSDictionary<NSString *, id> * _Nullable)getAdMetaInfo SWIFT_WARN_UNUSED_RESULT;
@end

@class UIWindow;

@interface IMAudio (SWIFT_EXTENSION(InMobiSDK))
- (void)load;
- (void)show;
/// Releases memory and remove ad from screen.
- (void)cancel;
/// overridden <code>UIView</code> method
- (void)willMoveToWindow:(UIWindow * _Nullable)newWindow;
@end




@class IMRequestStatus;
enum IMAudioStatus : NSInteger;

/// Audio icon provides the playback state. These states are playing, paused and completed
/// For Swift:
/// \code
/// func audioAd(_ audioAd: IMAudio, audioStatusChanged status: IMAudioStatus)
///
/// \endcodeFor Objective-C
/// \code
/// -(void)audioAd:(IMAudio *)audioAd audioStatusChanged:(enum IMAudioStatus)status
///
/// \endcode
SWIFT_PROTOCOL("_TtP9InMobiSDK15IMAudioDelegate_")
@protocol IMAudioDelegate
@optional
/// Notifies the delegate that the audioAd has finished loading
- (void)audioAdDidFinishLoading:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audioAd is now visible
- (void)audioAdDidBecomeVisible:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audioAd has recieved the ad with the meta/transaction info.
- (void)audioAd:(IMAudio * _Nonnull)audioAd didReceiveWithMetaInfo:(IMAdMetaInfo * _Nonnull)info;
/// Notifies the delegate that the audioAd has failed to load with some error.
- (void)audioAd:(IMAudio * _Nonnull)audioAd didFailToLoadWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the audioAd has failed to show with some error.
- (void)audioAd:(IMAudio * _Nonnull)audioAd didFailToShowWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the audioAd ad impression has been tracked
- (void)audioAdImpressed:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audioAd was interacted with.
- (void)audioAd:(IMAudio * _Nonnull)audioAd didInteractWithParams:(NSDictionary<NSString *, id> * _Nullable)params;
/// Notifies the delegate that the audio would be presenting a full screen content.
- (void)audioAdWillPresentScreen:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audio has finished presenting screen.
- (void)audioAdDidPresentScreen:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audio will start dismissing the presented screen.
- (void)audioAdWillDismissScreen:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the audio has dismissed the presented screen.
- (void)audioAdDidDismissScreen:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the user would be taken out of the application context.
- (void)userWillLeaveApplicationFromAudioAd:(IMAudio * _Nonnull)audioAd;
/// Notifies the delegate that the user has completed the action to be incentivised with.
- (void)audioAd:(IMAudio * _Nonnull)audioAd rewardActionCompletedWithRewards:(NSDictionary<NSString *, id> * _Nonnull)rewards;
/// Notifies the delegate that audio state has changed.
- (void)audioAd:(IMAudio * _Nonnull)audioAd audioStatusChanged:(enum IMAudioStatus)status;
@end

/// An enum representing the status of audio playing in IMAudio
typedef SWIFT_ENUM(NSInteger, IMAudioStatus, closed) {
  IMAudioStatusPlaying = 1,
  IMAudioStatusPaused = 2,
  IMAudioStatusCompleted = 3,
};

@protocol IMBannerDelegate;
@protocol IMBannerAudioDelegate;
@class IMBannerPreloadManager;
@class NSData;
@class IMWatermark;

/// Class to integrate banner ads in your application
/// Adding banner ads is demonstrated in the code fragment below.
/// Implement the following in the view controller.
/// Swift code snippet:
/// \code
/// let banner = IMBanner(frame: CGRect(x:0, y:50, width:320, height:50), placementId: 11203280001, delegate: self)
/// banner.load()
/// self.view.addSubview(banner)
///
/// \endcodeObjective-C code snippet:
/// \code
/// self.banner = [[IMBanner alloc] initWithFrame:CGRectMake(0, 400, 320, 50) placementId:11203280001 delegate:self];
/// [self.banner load];
/// [self.view addSubview:self.banner];
///
/// \endcodeThe code snippet above demonstrates a dead simple integration. Your application code can additionally listen for lifecycle events on the banner ad by implementing the <code>IMBannerDelegate</code>.
SWIFT_CLASS("_TtC9InMobiSDK8IMBanner")
@interface IMBanner : UIView
/// The placement ID for this banner.
@property (nonatomic) int64_t placementId;
/// The delegate for the banner to notify of events.
@property (nonatomic, weak) id <IMBannerDelegate> _Nullable delegate;
/// The delegate for the banner to notify of audio related events.
@property (nonatomic, weak) id <IMBannerAudioDelegate> _Nullable audioDelegate;
/// The refresh interval for the banner specified in seconds.
@property (nonatomic) NSInteger refreshInterval;
/// A free form set of keywords, separated by ‘,’ to be sent with the ad request.
/// E.g: “sports,cars,bikes”
@property (nonatomic, copy) NSString * _Nullable keywords;
/// Any additional information to be passed to InMobi.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extras;
/// The transition animation to be performed between refreshes.
@property (nonatomic) enum UIViewAnimationTransition transitionAnimation;
/// contentUrl for OMSDK
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// A unique identifier for the creative.
@property (nonatomic, readonly, copy) NSString * _Nullable creativeId;
/// The preload Manager for Preload flow.
@property (nonatomic, readonly, strong) IMBannerPreloadManager * _Nonnull preloadManager;
/// A boolean to indicate whether the banner is of type audio
@property (nonatomic, readonly) BOOL isAudioAd;
/// Initializes an <code>IMBanner</code> instance with the specified frame and default placementId.
/// \param frame CGRect for this view, according to the requested size.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame;
/// Initializes an <code>IMBanner</code> instance with the specified placementId
/// \param frame CGRect for this view, according to the requested size.
///
/// \param placementId the placement Id registered on the InMobi portal.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame placementId:(int64_t)placementId;
/// Initializes an <code>IMBanner</code> instance with the specified <code>placementId</code> and delegate.
/// \param frame CGRect for this view, according to the requested size.
///
/// \param placementId the placement Id registered on the InMobi portal.
///
/// \param delegate The delegate to receive callbacks.
///
- (nonnull instancetype)initWithFrame:(CGRect)frame placementId:(int64_t)placementId delegate:(id <IMBannerDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
/// Loads a banner with default values.
- (void)load;
/// Loads a Banner Ad with a response Object. This is used for Open Auction use cases
/// \param response An NSData object which contains the InMobi Banner Ad.
///
- (void)load:(NSData * _Nonnull)response;
/// Specifies if the banner should auto refresh
/// \param shouldAutoRefresh if the banner should be refreshed.
///
- (void)shouldAutoRefresh:(BOOL)shouldAutoRefresh;
/// Contains additional information of ad.
- (NSDictionary<NSString *, id> * _Nullable)getAdMetaInfo SWIFT_WARN_UNUSED_RESULT;
/// The watermark which is added as overlay in Ad
- (void)setWatermarkWith:(IMWatermark * _Nonnull)watermark;
/// Releases memory and remove ad from screen.
- (void)cancel SWIFT_DEPRECATED_MSG("Deprecated with no replacement");
/// overridden <code>UIView</code> method
- (void)willMoveToWindow:(UIWindow * _Nullable)newWindow;
@end





enum IMBannerAudioStatus : NSInteger;

/// A listener for receiving notifications during the lifecycle of a banner audio ad.
SWIFT_PROTOCOL("_TtP9InMobiSDK21IMBannerAudioDelegate_")
@protocol IMBannerAudioDelegate
@optional
/// Notifies the delegate that audio state has changed.
- (void)banner:(IMBanner * _Nonnull)banner audioStatusChanged:(enum IMBannerAudioStatus)status;
@end


/// A public class to listen to Audio changes on <code>IMBanner</code> object by passing the Parent view of <code>IMBanner</code> i.e with Mediation.
SWIFT_CLASS("_TtC9InMobiSDK20IMBannerAudioHandler")
@interface IMBannerAudioHandler : NSObject
/// Set this boolean to indicating whether banner audio ads
/// should be served in the current session.
+ (void)setAudioEnabled:(BOOL)isEnabled;
/// Use this function to set the delegate and <code>IMBanner</code> instance by sending the Parent view, i.e the Mediation Banner view.
/// \param view Parent view of <code>IMBanner</code> instance
///
/// \param delegate A delegate object to recieve callbacks on
///
- (void)onView:(UIView * _Nonnull)view addBannerAudioDelegate:(id <IMBannerAudioDelegate> _Nonnull)delegate;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// An enum representing the status of audio playing in banner
typedef SWIFT_ENUM(NSInteger, IMBannerAudioStatus, closed) {
  IMBannerAudioStatusPlaying = 1,
  IMBannerAudioStatusPaused = 2,
  IMBannerAudioStatusCompleted = 3,
};


/// A listener for receiving notifications during the lifecycle of a banner ad.
/// <blockquote>
/// Note: All the events in this listener will be invoked on your application’s UI thread.
/// In most cases your application will need to listen for the following events on a banner ad.
///
/// </blockquote>
/// The outcome of an ad request (if the request succeeded or failed): see
/// For Swift:
/// \code
/// func bannerDidFinishLoading(_ banner: IMBanner)
/// func banner(_ banner: IMBanner, didFailToLoadWithError error: IMRequestStatus)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) bannerDidFinishLoading: (IMBanner*)banner;
/// - (void) banner: (IMBanner*)banner didFailToLoadWithError:(IMRequestStatus*)error;
///
/// \endcodeThe ad opened an overlay that covered the screen. This means that the user can no longer interact with your application; see
/// For Swift:
/// \code
/// func bannerDidPresentScreen(_ banner: IMBanner)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) bannerDidPresentScreen: (IMBanner*)banner;
///
/// \endcodeThe ad overlay opened was dismissed. The user is now free to interact with your application; see
/// For Swift:
/// \code
/// func bannerDidDismissScreen(_ banner: IMBanner)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) bannerDidDismissScreen: (IMBanner*)banner;
///
/// \endcodeA user interaction with the ad will result in the User leaving your application context; see
/// For Swift:
/// \code
/// func userWillLeaveApplicationFromBanner(_ banner: IMBanner)
///
/// \endcodeFor Objective-C:
/// \code
/// -(void) userWillLeaveApplicationFromBanner:(IMBanner*)banner;
///
/// \endcode
SWIFT_PROTOCOL("_TtP9InMobiSDK16IMBannerDelegate_")
@protocol IMBannerDelegate
@optional
/// Notifies the delegate that the banner has finished loading
- (void)bannerDidFinishLoading:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner has recieved the ad with the meta/transaction info.
- (void)banner:(IMBanner * _Nonnull)banner didReceiveWithMetaInfo:(IMAdMetaInfo * _Nonnull)info;
/// Notifies the delegate that the banner has failed to preload with some error.
/// It will only be recieved when preload is called.
- (void)banner:(IMBanner * _Nonnull)banner didFailToReceiveWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the banner has failed to load with some error.
- (void)banner:(IMBanner * _Nonnull)banner didFailToLoadWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the banner ad impression has been tracked
- (void)bannerAdImpressed:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner was interacted with.
- (void)banner:(IMBanner * _Nonnull)banner didInteractWithParams:(NSDictionary<NSString *, id> * _Nullable)params;
/// Notifies the delegate that the user would be taken out of the application context.
- (void)userWillLeaveApplicationFromBanner:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner would be presenting a full screen content.
- (void)bannerWillPresentScreen:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner has finished presenting screen.
- (void)bannerDidPresentScreen:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner will start dismissing the presented screen.
- (void)bannerWillDismissScreen:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the banner has dismissed the presented screen.
- (void)bannerDidDismissScreen:(IMBanner * _Nonnull)banner;
/// Notifies the delegate that the user has completed the action to be incentivised with.
- (void)banner:(IMBanner * _Nonnull)banner rewardActionCompletedWithRewards:(NSDictionary<NSString *, id> * _Nonnull)rewards;
@end


SWIFT_CLASS("_TtC9InMobiSDK22IMBannerPreloadManager")
@interface IMBannerPreloadManager : NSObject
/// Preloads a Banner ad
/// It returns the following callback.
/// <ul>
///   <li>
///     Meta Information will be recieved from the callback <code>banner:didReceiveWithMetaInfo</code>
///   </li>
///   <li>
///     Failure of Preload will be recieved from the callback <code>banner:didFailToReceiveWithError</code>
///   </li>
/// </ul>
- (void)preload;
/// Loads a Preloaded Banner ad.
- (void)load;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// https://inmobi.atlassian.net/browse/DI-17445
SWIFT_CLASS("_TtC9InMobiSDK18IMCTServiceManager")
@interface IMCTServiceManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) IMCTServiceManager * _Nonnull shared;)
+ (IMCTServiceManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (NSString * _Nullable)getConnectionTypeValue SWIFT_WARN_UNUSED_RESULT;
@end



SWIFT_CLASS("_TtC9InMobiSDK17IMCommonConstants")
@interface IMCommonConstants : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull IM_GDPR_CONSENT_AVAILABLE;)
+ (NSString * _Nonnull)IM_GDPR_CONSENT_AVAILABLE SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull IM_GDPR_CONSENT_IAB;)
+ (NSString * _Nonnull)IM_GDPR_CONSENT_IAB SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull IM_SUBJECT_TO_GDPR;)
+ (NSString * _Nonnull)IM_SUBJECT_TO_GDPR SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull IM_PARTNER_GDPR_CONSENT_AVAILABLE;)
+ (NSString * _Nonnull)IM_PARTNER_GDPR_CONSENT_AVAILABLE SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull IM_PARTNER_GDPR_APPLIES;)
+ (NSString * _Nonnull)IM_PARTNER_GDPR_APPLIES SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK11IMComponent")
@interface IMComponent : NSObject
@property (nonatomic, copy) NSString * _Nonnull type;
@property (nonatomic) int64_t expiry;
@property (nonatomic, copy) NSString * _Nonnull url;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end




SWIFT_CLASS("_TtC9InMobiSDK10IMDepthPPS")
@interface IMDepthPPS : NSObject
@property (nonatomic) BOOL enabled;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol IMExposureTrackerDelegate;

/// Tracks an ad view’s exposure metrics at a configurable polling rate.
/// The calculations account for:
/// <ul>
///   <li>
///     Cumulative clipping (by intersecting the bounds of all superviews, in window coordinates)
///   </li>
///   <li>
///     Occlusions from sibling views drawn on top (via a recursive approach)
///     The final metrics include:
///   </li>
///   <li>
///     exposedPercentage: the effective percentage of the ad’s area that is visible after subtracting occlusions
///   </li>
///   <li>
///     visibleRectangle: the bounding box of the visible portion (in ad view coordinates)
///   </li>
///   <li>
///     occlusionRectangles: an array of disjoint rectangles describing the occluded areas within the visibleRectangle.
///     These metrics are then encoded into an escaped JSON string and passed to the delegate.
///   </li>
/// </ul>
SWIFT_CLASS("_TtC9InMobiSDK17IMExposureTracker")
@interface IMExposureTracker : NSObject
@property (nonatomic, weak) id <IMExposureTrackerDelegate> _Nullable delegate;
@property (nonatomic, copy) void (^ _Nullable exposureChangeCallback)(NSString * _Nullable);
/// Views that should be ignored in occlusion calculations (e.g. friendly UI elements like a close button)
@property (nonatomic, copy) NSArray<UIView *> * _Nonnull friendlyViews;
- (nonnull instancetype)initWithAdView:(UIView * _Nonnull)adView OBJC_DESIGNATED_INITIALIZER;
/// Starts tracking the ad view’s exposure. The delegate is notified with an escaped JSON string
/// whenever exposure metrics change.
- (void)startTracking;
/// Stops exposure tracking.
- (void)stopTracking;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An Objective-C compatible protocol for receiving exposure updates.
/// Instead of passing an ExposureMetrics model, the delegate receives an escaped JSON string.
SWIFT_PROTOCOL("_TtP9InMobiSDK25IMExposureTrackerDelegate_")
@protocol IMExposureTrackerDelegate <NSObject>
- (void)exposureDidChange:(IMExposureTracker * _Nonnull)tracker jsonString:(NSString * _Nullable)jsonString;
- (void)exposureTrackerDidDetachAdView:(IMExposureTracker * _Nonnull)tracker;
@end


SWIFT_CLASS("_TtC9InMobiSDK6IMGDPR")
@interface IMGDPR : NSObject
@property (nonatomic) BOOL transmitRequest;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK12IMIncludeIds")
@interface IMIncludeIds : NSObject
@property (nonatomic) BOOL O1;
@property (nonatomic) BOOL SO1;
@property (nonatomic) BOOL IDA;
@property (nonatomic) BOOL IDV;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol IMInterstitialDelegate;
@class IMInterstitialPreloadManager;
@class UIViewController;
enum IMInterstitialAnimationType : NSInteger;

/// Class to integrate interstitial ads in your application
/// Adding interstitial ads is demonstrated in the code fragment below
/// Implement the following in the viewcontroller
/// Swift code snippet:
/// \code
/// let interstitial = IMInterstitial(placementId: 11203280002, delegate: self)
/// interstitial.load()
///
/// \endcodeObjective-C code snippet:
/// \code
/// self.interstitial = [[IMInterstitial alloc] initWithPlacementId:11203280002 delegate:self];
/// [self.interstitial load];
///
/// \endcodeThe code snippet above demonstrates a dead simple integration. Your application code can additionally listen for lifecycle events on the interstitial ad by implementing the <code>IMInterstitialDelegate</code>.
SWIFT_CLASS("_TtC9InMobiSDK14IMInterstitial")
@interface IMInterstitial : NSObject
/// The placement ID for this Interstitial.
@property (nonatomic) int64_t placementId;
/// The delegate to receive callbacks
@property (nonatomic, weak) id <IMInterstitialDelegate> _Nullable delegate;
/// A free form set of keywords, separated by ‘,’ to be sent with the ad request.
/// E.g: “sports,cars,bikes”
@property (nonatomic, copy) NSString * _Nullable keywords;
/// Any additional information to be passed to InMobi.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extras;
/// contentUrl for OMSDK
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// A unique identifier for the creative.
@property (nonatomic, readonly, copy) NSString * _Nullable creativeId;
/// The preload Manager for Preload flow.
@property (nonatomic, readonly, strong) IMInterstitialPreloadManager * _Nonnull preloadManager;
/// Initializes an IMInterstitial instance with the specified placementId.
/// \param placementId the placement Id registered on the InMobi portal.
///
- (nonnull instancetype)initWithPlacementId:(int64_t)placementId;
/// Initializes an IMInterstitial instance with the specified placementId and delegate.
/// \param placementId the placement Id registered on the InMobi portal.
///
/// \param delegate the delegate to receive callbacks.
///
- (nonnull instancetype)initWithPlacementId:(int64_t)placementId delegate:(id <IMInterstitialDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Loads an Interstitial
- (void)load;
/// Loads an Interstitial Ad with a response Object. This is used for Open Auction use cases
/// \param response An NSData object which contains the InMobi Interstitial Ad.
///
- (void)load:(NSData * _Nonnull)response;
/// To query if the interstitial is ready to be shown
- (BOOL)isReady SWIFT_WARN_UNUSED_RESULT;
/// Displays the interstitial on the screen
/// \param viewController this view controller will be used to present interestitial.
///
- (void)showFrom:(UIViewController * _Nonnull)viewController;
/// Displays the interstitial on the screen
/// \param viewController this view controller will be used to present interestitial.
///
/// \param animationType The transition type for interstitial presentation.
///
- (void)showFrom:(UIViewController * _Nonnull)viewController with:(enum IMInterstitialAnimationType)animationType SWIFT_DEPRECATED_MSG("animationType will not be used anymore, please use show(from:)");
/// Contains additional information of ad.
- (NSDictionary<NSString *, id> * _Nullable)getAdMetaInfo SWIFT_WARN_UNUSED_RESULT;
/// The watermark which is added as overlay in Ad
- (void)setWatermarkWith:(IMWatermark * _Nonnull)watermark;
/// Releases memory and remove ad from screen.
- (void)cancel SWIFT_DEPRECATED_MSG("Deprecated with no replacement");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end





/// Interstitial Animation type
typedef SWIFT_ENUM(NSInteger, IMInterstitialAnimationType, closed) {
  IMInterstitialAnimationTypeCoverVertical = 0,
  IMInterstitialAnimationTypeFlipHorizontal = 1,
  IMInterstitialAnimationTypeAsNone = 2,
};


/// A listener for receiving notifications during the lifecycle of an interstitial.
/// <blockquote>
/// Note: All the events in this listener will be invoked on your application’s UI thread.
///
/// </blockquote>
/// In most cases your application will need to listen for the following events on an interstitial
/// Information about the full screen ad is available. But the assets (associated with the ad) are not yet available: see
/// For Swift:
/// \code
/// func interstitial(_ interstitial: IMInterstitial, didReceiveWithMetaInfo metaInfo: IMAdMetaInfo)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitial: (IMInterstitial *)interstitial didReceiveWithMetaInfo:(IMAdMetaInfo *)metaInfo;
///
/// \endcodeA full screen ad is not available and hence information about it can not be retrieved. A proper error is avaiable for listener: see
/// For Swift:
/// \code
/// func interstitial(_ interstitial: IMInterstitial, didFailToReceiveWithError error: Error)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitial: (IMInterstitial *)interstitial didFailToReceiveWithError: (NSError *)error
///
/// \endcodeThe full screen ad is available. But the assets (associated with the ad) are not yet available: see
/// For Swift:
/// \code
/// func interstitialDidReceiveAd(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialDidReceiveAd: (IMInterstitial *)interstitial;
///
/// \endcodeThe outcome of an ad request (if the request succeeded or failed); see
/// For Swift:
/// \code
/// func interstitialDidFinishLoading(_ interstitial: IMInterstitial)
/// func interstitial(_ interstitial: IMInterstitial, didFailToLoadWithError error: IMRequestStatus)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialDidFinishLoading: (IMInterstitial*)interstitial;
/// - (void)interstitial: (IMInterstitial*)interstitial didFailToLoadWithError: (IMRequestStatus*)error;
///
/// \endcodeThe full screen ad is about to be displayed: see
/// For Swift:
/// \code
/// func interstitialWillPresent(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialWillPresent: (IMInterstitial*)interstitial;
///
/// \endcodeThe full screen ad is displayed that covered the screen. This means that the user can no longer interact with your application; see
/// For Swift:
/// \code
/// func interstitialDidPresent(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialDidPresent: (IMInterstitial *)interstitial;
///
/// \endcodeThe full screen ad failed to be displayed. A proper error is available for listener: see
/// For Swift:
/// \code
/// func interstitial(_ interstitial: IMInterstitial, didFailToPresentWithError error: IMRequestStatus)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitial: (IMInterstitial*)interstitial didFailToPresentWithError: (IMRequestStatus*)error;
///
/// \endcodeThe full screen ad is about to be dismissed: see
/// For Swift:
/// \code
/// func interstitialWillDismiss(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialWillDismiss: (IMInterstitial*)interstitial;
///
/// \endcodeThe full screen ad was dismissed. The user is now free to interact with your application: see
/// For Swift:
/// \code
/// func interstitialDidDismiss(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitialDidDismiss: (IMInterstitial*)interstitial;
///
/// \endcodeThe user interacted with the full screen ad: see
/// For Swift:
/// \code
/// func interstitial(_ interstitial: IMInterstitial, didInteractWithParams params: [String: Any]?)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) interstitial: (IMInterstitial*)interstitial didInteractWithParams: (NSDictionary*)params;
///
/// \endcodeA user interaction with the ad will result in the User leaving your application context: see
/// For Swift:
/// \code
/// func userWillLeaveApplicationFromInterstitial(_ interstitial: IMInterstitial)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) userWillLeaveApplicationFromInterstitial: (IMInterstitial*)interstitial;
///
/// \endcodeIf your application involves running rewarded or incentivised ads, then you should, in addition to the above events, also listen for the <code>rewardActionCompletedWithRewards</code> event
/// For Swift:
/// \code
/// func interstitial(_ interstitial: IMInterstitial, rewardActionCompletedWithRewards rewards: [String: Any])
///
/// \endcodeFor Objective-C:
/// \code
/// - (void)interstitial: (IMInterstitial*)interstitial rewardActionCompletedWithRewards: (NSDictionary*)rewards;
///
/// \endcodeand handle it appropriately to unlock rewards for the user of your app.
SWIFT_PROTOCOL("_TtP9InMobiSDK22IMInterstitialDelegate_")
@protocol IMInterstitialDelegate
@optional
/// Notifies the delegate that the ad server has returned an ad.
/// Assets are not yet available.
/// Please use <code>interstitialDidFinishLoading:</code> to receive a callback when assets are also available.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial didReceiveWithMetaInfo:(IMAdMetaInfo * _Nonnull)metaInfo;
/// Notifies the delegate that the interstitial has failed to recieve an Ad(failed to preload an ad) with some error.
/// This callback will only be recieved when Preload is called.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial didFailToReceiveWithError:(NSError * _Nonnull)error;
/// Notifies the delegate that the ad server has returned an ad.
/// Assets are not yet available.
/// Please use <code>interstitialDidFinishLoading:</code> to receive a callback when assets are also available.
- (void)interstitialDidReceiveAd:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has finished loading and can be shown instantly.
- (void)interstitialDidFinishLoading:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has failed to load with some error.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial didFailToLoadWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the interstitial ad impression has been tracked
- (void)interstitialAdImpressed:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial would be presented.
- (void)interstitialWillPresent:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has been presented.
- (void)interstitialDidPresent:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has failed to present with some error.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial didFailToPresentWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the interstitial will be dismissed.
- (void)interstitialWillDismiss:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has been dismissed.
- (void)interstitialDidDismiss:(IMInterstitial * _Nonnull)interstitial;
/// Notifies the delegate that the interstitial has been interacted with.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial didInteractWithParams:(NSDictionary<NSString *, id> * _Nullable)params;
/// Notifies the delegate that the user has performed the action to be incentivised with.
- (void)interstitial:(IMInterstitial * _Nonnull)interstitial rewardActionCompletedWithRewards:(NSDictionary<NSString *, id> * _Nonnull)rewards;
/// Notifies the delegate that the user will leave application context.
- (void)userWillLeaveApplicationFromInterstitial:(IMInterstitial * _Nonnull)interstitial;
@end


SWIFT_CLASS("_TtC9InMobiSDK28IMInterstitialPreloadManager")
@interface IMInterstitialPreloadManager : NSObject
/// Preload a Interstitial ad
/// It returns the following callbacks.
/// <ul>
///   <li>
///     Meta Information will be recieved from the callback <code>interstitial:didReceiveWithMetaInfo</code>
///   </li>
///   <li>
///     Failure of Preload will be recieved from the callback <code>interstitial:didFailToReceiveWithError</code>
///   </li>
/// </ul>
- (void)preload;
/// Loads a Preloaded Interstitial ad.
- (void)load;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


typedef SWIFT_ENUM(NSInteger, IMLandingPageFlowType, open) {
  IMLandingPageFlowTypeCommandOpen = 1,
  IMLandingPageFlowTypeCommandOpenWithoutTracker = 2,
  IMLandingPageFlowTypeCommandOpenExternal = 3,
  IMLandingPageFlowTypeCommandOpenExternalIntercepted = 4,
  IMLandingPageFlowTypeShowCustomExpand = 5,
  IMLandingPageFlowTypeShowSKStore = 6,
  IMLandingPageFlowTypeShowSKStoreIntercepted = 7,
  IMLandingPageFlowTypeOpenSKStore = 8,
  IMLandingPageFlowTypeOpenSKStoreIntercepted = 9,
  IMLandingPageFlowTypeCommandLoadSKStore = 10,
  IMLandingPageFlowTypeNativeAdSKStore = 11,
  IMLandingPageFlowTypeLoadSKStore = 12,
  IMLandingPageFlowTypeSkStoreFromEmbededBrowser = 13,
  IMLandingPageFlowTypeWindowOpen = 14,
  IMLandingPageFlowTypeHref = 15,
  IMLandingPageFlowTypeDefault = 16,
};

enum IMTelemetryLandingPageEventType : NSInteger;

SWIFT_CLASS("_TtC9InMobiSDK28IMLandingPageInstrumentModel")
@interface IMLandingPageInstrumentModel : NSObject
@property (nonatomic) enum IMLandingPageFlowType flowType;
@property (nonatomic, copy) NSString * _Nullable url;
@property (nonatomic, copy) NSString * _Nullable command;
@property (nonatomic) NSError * _Nullable error;
@property (nonatomic) enum IMTelemetryLandingPageEventType eventType;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extraInfo;
- (nonnull instancetype)initWithFlowType:(enum IMLandingPageFlowType)flowType url:(NSString * _Nullable)url error:(NSError * _Nullable)error eventType:(enum IMTelemetryLandingPageEventType)eventType command:(NSString * _Nullable)command extraInfo:(NSDictionary<NSString *, id> * _Nullable)extraInfo OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK15IMLatestSdkInfo")
@interface IMLatestSdkInfo : NSObject
@property (nonatomic, copy) NSString * _Nonnull version;
@property (nonatomic, copy) NSString * _Nonnull url;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum IMRemoteLogLevel : NSInteger;

SWIFT_PROTOCOL("_TtP9InMobiSDK9IMLogging_")
@protocol IMLogging
@optional
- (void)logWithMessage:(NSString * _Nonnull)message tag:(NSString * _Nonnull)tag logLevel:(enum IMRemoteLogLevel)logLevel;
- (void)saveAndSync;
@end

@class UITraitCollection;

/// Use this class to move ad view around the screen. Add the <code>adView</code> as a subview to the instance of this class
/// Swift code snippet
/// \code
/// let movableView = IMMovableView(frame: CGRect(x:0, y:0, width:70, height:70))
/// let audio = IMAudio(frame: CGRect(x:0, y:0, width:70, height:70), placementId: 11203280001, delegate: self)
/// movableView.addSubview(audio)
/// self.view.addSubview(movableView)
///
/// \endcodeObjective -C snippet
/// \code
/// IMMovableView *movableView = [IMMovableView alloc] initWithFrame:CGRectMake(0, 0, 70, 70)];
/// self.audio = [[IMAudio alloc] initWithFrame:CGRectMake(0, 0, 70, 70) placementId:11203280001 delegate:self];
/// [movableView addSubview: self.audio];
/// [self.view addSubview:movableView];
///
/// \endcode
SWIFT_CLASS("_TtC9InMobiSDK13IMMovableView")
@interface IMMovableView : UIView
/// Defaults to <code>true</code>. Make it <code>false</code> to make the instance non-movable
@property (nonatomic) BOOL isMovable;
/// Initializes an <code>IMMovableView</code> instance with the specified frame
/// \param frame CGRect for this view, according to the requested size
///
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE;
- (void)didMoveToSuperview;
- (void)traitCollectionDidChange:(UITraitCollection * _Nullable)previousTraitCollection;
@end



SWIFT_CLASS("_TtC9InMobiSDK16IMMraidConstants")
@interface IMMraidConstants : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull COMMAND_LOAD_WEBVIEW;)
+ (NSString * _Nonnull)COMMAND_LOAD_WEBVIEW SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull COMMAND_SHOW_WEBVIEW;)
+ (NSString * _Nonnull)COMMAND_SHOW_WEBVIEW SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull COMMAND_DESTROY_WEBVIEW;)
+ (NSString * _Nonnull)COMMAND_DESTROY_WEBVIEW SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull COMMAND_SEND_MESSAGE;)
+ (NSString * _Nonnull)COMMAND_SEND_MESSAGE SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol IMNativeDelegate;
@class IMNativeImage;
@class UIImageView;
@class IMNativeViewData;

/// Class to integrate native ads in your application
/// Adding native ads is demonstrated in the code fragment below.
/// Implement the following in the viewcontroller.
/// Swift code snippet:
/// \code
/// func viewDidLoad() {
///     super.viewDidLoad()
///     let nativeAd = IMNative(placementId: 11203280003, delegate: self)
///     nativeAd.load()
/// }
///
/// func nativeDidFinishLoading(_ native: IMNative) {
///     if let aView = native.primaryView(ofWidth: self.contentView.frame.size.width) {
///         self.contentView.addSubview(aView)
///     }
/// }
///
/// \endcodeObjective-C code snippet:
/// \code
/// - (void) viewDidLoad {
///     [super viewDidLoad];
///     self.nativeAd = [[IMNative alloc] initWithPlacementId:11203280003 delegate:self];
///     [self.nativeAd load];
/// }
///
/// - (void) nativeDidFinishLoading: (IMNative*)native{
///     [self.contentView addSubview:[native primaryViewOfWidth:self.contentView.frame.size.width]];
/// }
///
/// \endcodeThe code snippet above demonstrates a dead simple integration. Your application code can additionally listen for lifecycle events on the native ad by implementing the <code>IMNativeDelegate</code>.
SWIFT_CLASS("_TtC9InMobiSDK8IMNative")
@interface IMNative : NSObject
/// The placement ID for this Native Ad..
@property (nonatomic) int64_t placementId;
/// The delegate to receive callbacks
@property (nonatomic, weak) id <IMNativeDelegate> _Nullable delegate;
/// A free form set of keywords, separated by ‘,’ to be sent with the ad request.
/// E.g: “sports,cars,bikes”
@property (nonatomic, copy) NSString * _Nullable keywords;
/// Any additional information to be passed to InMobi.
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extras;
/// contentUrl for OMSDK
@property (nonatomic, copy) NSString * _Nullable contentUrl;
/// The title of the native ad.
@property (nonatomic, readonly, copy) NSString * _Nullable adTitle;
/// The description of the native ad.
@property (nonatomic, readonly, copy) NSString * _Nullable adDescription;
/// The icon url of the ad.
@property (nonatomic, readonly, strong) IMNativeImage * _Nullable adIcon;
/// The text to be specified for the cta. Typically this should be the text of the button.
@property (nonatomic, readonly, copy) NSString * _Nullable adCtaText;
/// A custom rating field for the native ad.
@property (nonatomic, readonly, copy) NSString * _Nullable adRating;
/// The advertiser name for the ad.
@property (nonatomic, readonly, copy) NSString * _Nullable advertiserName;
/// The ad choice view for the ad.
@property (nonatomic, readonly, strong) UIImageView * _Nullable adChoice;
/// Initializes an IMNative instance with the specified placementId.
/// \param placementId the placement Id registered on the InMobi portal.
///
- (nonnull instancetype)initWithPlacementId:(int64_t)placementId;
/// Initializes an IMNative instance with the specified placementId and delegate.
/// \param placementId the placement Id registered on the InMobi portal.
///
/// \param delegate the delegate to receive callbacks
///
- (nonnull instancetype)initWithPlacementId:(int64_t)placementId delegate:(id <IMNativeDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Loads a Native ad
- (void)load;
/// Loads a Native Ad with a response Object.
/// This is used for Open Auction use cases
/// \param response A <code>Data</code> variable which contains the InMobi Native Ad.
///
- (void)load:(NSData * _Nonnull)response;
/// register views to the native ad for tracking
- (void)registerViewForTracking:(IMNativeViewData * _Nonnull)view;
/// Indicates if the native ad is ready to be displayed.
- (BOOL)isReady SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)getCustomAdContent SWIFT_WARN_UNUSED_RESULT;
/// Returns the media view of the native ad.
///
/// returns:
/// <code>UIView</code> instance of the media view.
- (UIView * _Nullable)getMediaView SWIFT_WARN_UNUSED_RESULT;
- (BOOL)isVideoAd SWIFT_WARN_UNUSED_RESULT;
/// Returns the Meta Info of the native ad.
///
/// returns:
/// A dictionary containing the meta info of the native ad.
- (NSDictionary<NSString *, id> * _Nullable)getAdMetaInfo SWIFT_WARN_UNUSED_RESULT;
/// Returns the Creative Id of the native ad.
///
/// returns:
/// <code>String</code> representing the creative Id of the native ad.
@property (nonatomic, readonly, copy) NSString * _Nullable creativeId;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end





/// A listener for receiving notifications during the lifecycle of a native ad.
/// <blockquote>
/// Note: All the events in this listener will be invoked on your application’s UI thread.
///
/// </blockquote>
/// In most cases your application will need to listen for the following events on a native ad.
/// The outcome of an ad request (if the request succeeded or failed): see
/// For Swift:
/// \code
/// func nativeDidFinishLoading(_ native: IMNative)
/// func native(_ native: IMNative, didFailToLoadWithError error: IMRequestStatus)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) nativeDidFinishLoading: (IMNative*)native;
/// - (void) native: (IMNative*)native didFailToLoadWithError: (IMRequestStatus*)error;
///
/// \endcodeThe ad opened an overlay that covered the screen. This means that the user can no longer interact with your application; see
/// For Swift:
/// \code
/// func nativeDidPresentScreen(_ native: IMNative)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) nativeDidPresentScreen: (IMNative*)native;
///
/// \endcodeThe ad opened overlay was dismissed. The user is now free to interact with your application: see
/// For Swift:
/// \code
/// func nativeDidDismissScreen(_ native: IMNative)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) nativeDidDismissScreen: (IMNative*)native;
///
/// \endcodeA user interaction with the ad will result in the User leaving your application context: see
/// For Swift:
/// \code
/// func userWillLeaveApplicationFromNative(_ native: IMNative)
///
/// \endcodeFor Objective-C:
/// \code
/// - (void) userWillLeaveApplicationFromNative: (IMNative*)native;
///
/// \endcode
SWIFT_PROTOCOL("_TtP9InMobiSDK16IMNativeDelegate_")
@protocol IMNativeDelegate
@optional
/// Notifies the delegate that the native ad has finished loading
- (void)nativeDidFinishLoading:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad has failed to load with error.
- (void)native:(IMNative * _Nonnull)native didFailToLoadWithError:(IMRequestStatus * _Nonnull)error;
/// Notifies the delegate that the native ad would be presenting a full screen content.
- (void)nativeWillPresentScreen:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad has presented a full screen content.
- (void)nativeDidPresentScreen:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad would be dismissing the presented full screen content.
- (void)nativeWillDismissScreen:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad has dismissed the presented full screen content.
- (void)nativeDidDismissScreen:(IMNative * _Nonnull)native;
/// Notifies the delegate that the user will be taken outside the application context.
- (void)userWillLeaveApplicationFromNative:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad impression has been tracked
- (void)nativeAdImpressed:(IMNative * _Nonnull)native;
/// Notifies the delegate that the native ad has been interacted with.
- (void)native:(IMNative * _Nonnull)native didInteractWithParams:(NSDictionary<NSString *, id> * _Nullable)params;
/// Notifies the delegate that the native ad has finished playing media.
- (void)nativeDidFinishPlayingMedia:(IMNative * _Nonnull)native;
/// Notifies the delegate that the media audio state has been changed - mute/unmute.
/// \param audioStateMuted is <code>YES</code> when audio is turned off and <code>NO</code> when audio is turned on.
///
- (void)native:(IMNative * _Nonnull)native adAudioStateChanged:(BOOL)audioStateMuted;
@end


SWIFT_CLASS("_TtC9InMobiSDK13IMNativeImage")
@interface IMNativeImage : NSObject
@property (nonatomic, readonly, strong) UIImageView * _Nullable imageview;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A class representing the data structure for a Publisher views used in Native Ad.
/// Use the <code>Builder</code> class to create an instance of <code>IMNativeViewData</code>.
SWIFT_CLASS("_TtC9InMobiSDK16IMNativeViewData")
@interface IMNativeViewData : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Builder class for creating <code>IMNativeViewData</code> instances.
SWIFT_CLASS_NAMED("Builder")
@interface IMNativeViewDataBuilder : NSObject
/// Initializes the builder with the required parent view.
/// \param parentView The parent view containing all other views.
///
- (nonnull instancetype)initWithParentView:(UIView * _Nonnull)parentView OBJC_DESIGNATED_INITIALIZER;
/// Sets the title view.
/// \param titleView A <code>UIView</code> representing the title.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setTitleView:(UIView * _Nonnull)titleView;
/// Sets the description view.
/// \param descriptionView A <code>UIView</code> representing the description.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setDescriptionView:(UIView * _Nonnull)descriptionView;
/// Sets the CTA view.
/// \param ctaView A <code>UIView</code> representing the CTA.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setCTAView:(UIView * _Nonnull)ctaView;
/// Sets the icon view.
/// \param iconView A <code>UIImageView</code> representing the icon.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setIconView:(UIImageView * _Nonnull)iconView;
/// Sets the rating view.
/// \param ratingView A <code>UIView</code> representing the rating.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setRatingView:(UIView * _Nonnull)ratingView;
/// Sets the advertiser view.
/// \param advertiserView A <code>UIView</code> representing the advertiser name text.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setAdvertiserView:(UIView * _Nonnull)advertiserView;
/// Sets the clickable views.
/// \param clickableViews An array of <code>UIView</code> representing the clickable views.
///
///
/// returns:
/// The <code>Builder</code> instance for method chaining.
- (IMNativeViewDataBuilder * _Nonnull)setExtraViews:(NSArray<UIView *> * _Nonnull)extraViews;
/// Builds the <code>IMNativeViewData</code> instance.
///
/// returns:
/// The <code>IMNativeViewData</code> instance constructed with the provided data.
- (IMNativeViewData * _Nonnull)build SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_CLASS("_TtC9InMobiSDK17IMPPSSignalConfig")
@interface IMPPSSignalConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger expiry;
@property (nonatomic) NSInteger count;
@property (nonatomic) NSInteger precision;
@property (nonatomic) NSInteger strLen;
@property (nonatomic, strong) IMDepthPPS * _Nonnull depth;
@property (nonatomic, strong) AnyDictionary * _Nullable allowedKeys;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Use this class to set the compliance
/// Client-side APIs to enable publishers to adhere to Privacy and Compliance on behalf of their users
SWIFT_CLASS("_TtC9InMobiSDK19IMPrivacyCompliance")
@interface IMPrivacyCompliance : NSObject
/// Update the DoNotSell for a session of the app
/// \param doNotSell boolean consent  allows publishers to indicate when a US resident opts out of interest-based advertising
///
+ (void)setDoNotSell:(BOOL)doNotSell;
/// Updates the US Privacy String for a session of the app
/// refer to https://github.com/InteractiveAdvertisingBureau/USPrivacy/blob/master/CCPA/US%20Privacy%20String.md#us-privacy-string
/// \param privacyString allows publishers to indicate a user’s consent in accordance with US Privacy Laws in IAB US Privacy String format
///
+ (void)setUSPrivacyString:(NSString * _Nonnull)privacyString;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK23IMPublisherProvidedInfo")
@interface IMPublisherProvidedInfo : NSObject
+ (BOOL)getIsAgeRestricted SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM(NSInteger, IMRemoteLogLevel, open) {
  IMRemoteLogLevelError = 0,
  IMRemoteLogLevelDebug = 1,
  IMRemoteLogLevelInfo = 2,
  IMRemoteLogLevelState = 3,
};


SWIFT_CLASS("_TtC9InMobiSDK15IMRequestStatus")
@interface IMRequestStatus : NSError
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (nonnull instancetype)initWithDomain:(NSString * _Nonnull)domain code:(NSInteger)code userInfo:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_UNAVAILABLE;
@end

/// User Age Group
typedef SWIFT_ENUM(NSInteger, IMSDKAgeGroup, closed) {
  IMSDKAgeGroupBelow18 = 1,
  IMSDKAgeGroupBetween18And24 = 2,
  IMSDKAgeGroupBetween25And29 = 3,
  IMSDKAgeGroupBetween30And34 = 4,
  IMSDKAgeGroupBetween35And44 = 5,
  IMSDKAgeGroupBetween45And54 = 6,
  IMSDKAgeGroupBetween55And65 = 7,
  IMSDKAgeGroupAbove65 = 8,
};

/// User Education
typedef SWIFT_ENUM(NSInteger, IMSDKEducation, closed) {
  IMSDKEducationHighSchoolOrLess = 1,
  IMSDKEducationCollageOrGraduate = 2,
  IMSDKEducationPostGraduateOrAbove = 3,
};

/// User Gender
typedef SWIFT_ENUM(NSInteger, IMSDKGender, closed) {
  IMSDKGenderMale = 1,
  IMSDKGenderFemale = 2,
};

/// SDK Log level
typedef SWIFT_ENUM(NSInteger, IMSDKLogLevel, closed) {
  IMSDKLogLevelNone = 0,
  IMSDKLogLevelError = 1,
  IMSDKLogLevelDebug = 2,
};


SWIFT_CLASS("_TtC9InMobiSDK20IMSDKSwiftCommonUtil")
@interface IMSDKSwiftCommonUtil : NSObject
+ (NSString * _Nonnull)applicationDisplayName SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM(NSInteger, IMSKANConfigRequestModeType, open) {
  IMSKANConfigRequestModeTypeDisabled = 0,
  IMSKANConfigRequestModeTypeSkanList = 1,
};

enum IMSKANSourceName : NSInteger;

SWIFT_CLASS("_TtC9InMobiSDK16IMSKANEventModel")
@interface IMSKANEventModel : NSObject
@property (nonatomic) enum IMSKANSourceName source;
@property (nonatomic, copy) NSString * _Nullable url;
@property (nonatomic, copy) NSString * _Nullable status;
@property (nonatomic, copy) NSString * _Nullable skstoreid;
- (nonnull instancetype)initWithSource:(enum IMSKANSourceName)source OBJC_DESIGNATED_INITIALIZER;
- (void)setCallbackStatus:(NSString * _Nonnull)status;
- (void)setCallbackSkstoreid:(NSString * _Nonnull)id;
- (void)setCallbackurl:(NSString * _Nonnull)url;
- (NSDictionary<NSString *, id> * _Nullable)toCallbackDictionary SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, IMSKANSourceName, open) {
  IMSKANSourceNameSdk = 1,
  IMSKANSourceNameTemplate = 2,
  IMSKANSourceNameCreative = 3,
  IMSKANSourceNameOthers = 4,
};


/// Use this class to set the user specific demographic info.
/// As part of the General Data Protection Regulation (“GDPR”) publishers who collect data on their apps, are required to have a legal basis for collecting and processing the personal data of users in the European Economic Area (“EEA”).
/// Please ensure that you obtain appropriate consent from the user before making ad requests to InMobi for Europe and indicate the same by following our recommended SDK implementation.
/// Please do not pass any demographics information of a user; if you do not have user consent from such user in Europe.
SWIFT_CLASS("_TtC9InMobiSDK5IMSdk")
@interface IMSdk : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Initialize the sdk. This must be called before any other API for the SDK is used.
/// Use <code>initWithAccountID(_:andCompletionHandler:)</code>
/// \param accountID account id obtained from the InMobi portal.
///
/// \param completionBlock A block which is invoked once the SDK has been successfully initialised and is ready
///
+ (void)initWithAccountID:(NSString * _Nonnull)accountID andCompletionHandler:(void (^ _Nullable)(NSError * _Nullable))completionBlock SWIFT_METHOD_FAMILY(none);
/// Initialize the sdk. This must be called before any other API for the SDK is used.
/// \param accountID account id obtained from the InMobi portal.
///
/// \param consentDictionary InMobi relies on the publishers to obtain explicit consent from users for continuing business activities in EU as per GDPR . Consent dictionary allows publishers to indicate consent status as obtained from the users for InMobi services to function appropriately.
/// It has Three optional keys: <em>IM_SUBJECT_TO_GDPR</em>, <em>IM_GDPR_CONSENT_AVAILABLE</em>,
/// <em>IM_GDPR_CONSENT_IAB</em>
/// <code>   IM_SUBJECT_TO_GDPR</code>(String): Whether or not the request is subjected to GDPR        regulations (0 = No, 1 = Yes), omission indicates Unknown.
/// <code>IM_GDPR_CONSENT_AVAILABLE</code>(String): “true” : User has provided consent to collect and use data.
/// “false”: User has not provided consent to collect and use data.
/// <code>   IM_GDPR_CONSENT_IAB</code>(String): Key to send the IAB consent string.
///
/// \param completionBlock A block which is invoked once the SDK has been successfully initialised and is ready.
///
+ (void)initWithAccountID:(NSString * _Nonnull)accountID consentDictionary:(NSDictionary<NSString *, id> * _Nullable)consentDictionary andCompletionHandler:(void (^ _Nullable)(NSError * _Nullable))completionBlock SWIFT_METHOD_FAMILY(none);
/// Initialize the sdk. This must be called before any other API for the SDK is used.
/// \param accountID account id obtained from the InMobi portal.
///
/// \param consentDictionary InMobi relies on the publishers to obtain explicit consent from users for continuing business activities in EU as per GDPR . Consent dictionary allows publishers to indicate consent status as obtained from the users for InMobi services to function appropriately.
/// It has Three optional keys: <em>IM_SUBJECT_TO_GDPR</em>, <em>IM_GDPR_CONSENT_AVAILABLE</em>, <em>IM_GDPR_CONSENT_IAB</em>
/// <code>IM_SUBJECT_TO_GDPR</code>(String): Whether or not the request is subjected to GDPR regulations (0 = No, 1 = Yes), omission indicates Unknown.
/// <code>IM_GDPR_CONSENT_AVAILABLE</code>(String): “true” : User has provided consent to collect and use data.
/// “false”: User has not provided consent to collect and use data.
/// <code>IM_GDPR_CONSENT_IAB</code>(String): Key to send the IAB consent string.
///
+ (void)initWithAccountID:(NSString * _Nonnull)accountID consentDictionary:(NSDictionary<NSString *, id> * _Nullable)consentDictionary SWIFT_METHOD_FAMILY(none) SWIFT_DEPRECATED_MSG("Please use new API initWithAccountID:consentDictionary:andCompletionHandler: as this API can be removed in future");
/// Initialize the sdk. This must be called before any other API for the SDK is used.
/// \param accountID account id obtained from the InMobi portal.
///
+ (void)initWithAccountID:(NSString * _Nonnull)accountID SWIFT_METHOD_FAMILY(none) SWIFT_DEPRECATED_MSG("Please use new API initWithAccountID:andCompletionHandler: as this API can be removed in future");
/// Updates the user consent for a session of the app
/// \param consentDictionary consent dicionary allows publishers to provide its consent to collect user data and use it.
/// It has Three optional keys: <em>IM_SUBJECT_TO_GDPR</em>, <em>IM_GDPR_CONSENT_AVAILABLE</em>, <em>IM_GDPR_CONSENT_IAB</em>
/// <code>IM_SUBJECT_TO_GDPR</code>(String): Whether or not the request is subjected to GDPR regulations (0 = No, 1 = Yes), omission indicates Unknown.
/// <code>IM_GDPR_CONSENT_AVAILABLE</code>(String): “true”: User has provided consent to collect and use data.
/// “false”: User has not provided consent to collect and use data.
/// <code>IM_GDPR_CONSENT_IAB</code>(String): Key to send the IAB consent string.
///
+ (void)updateGDPRConsent:(NSDictionary<NSString *, id> * _Nullable)consentDictionary;
/// Updates the user consent (through mediation partner)  for a session of the app
/// \param consentDictionary consent dicionary allows partners to provide its consent to collect user data and use it.
/// It has Two optional keys: <em>IM_PARTNER_GDPR_CONSENT_AVAILABLE</em>, <em>IM_PARTNER_GDPR_APPLIES</em>
/// <code>IM_PARTNER_GDPR_CONSENT_AVAILABLE</code>(String): “true” : User has provided consent to collect and use data.
/// “false”: User has not provided consent to collect and use data.
/// <code>IM_PARTNER_GDPR_APPLIES</code>(String): Whether or not the request is subjected to GDPR regulations (0 = No, 1 = Yes), omission indicates Unknown.
///
+ (void)setPartnerGDPRConsent:(NSDictionary<NSString *, id> * _Nullable)consentDictionary;
/// Provide if user is age restricted or not
/// \param isRestricted The user’s age restriction. Default value is false
///
+ (void)setIsAgeRestricted:(BOOL)isRestricted;
/// Use this to get the version of the SDK.
///
/// returns:
/// The version of the SDK.
+ (NSString * _Nonnull)getVersion SWIFT_WARN_UNUSED_RESULT;
/// Set the log level for SDK’s logs
/// \param desiredLogLevel The desired level of logs, <code>IMSDKLogLevel</code>.
///
+ (void)setLogLevel:(enum IMSDKLogLevel)desiredLogLevel;
@end


@interface IMSdk (SWIFT_EXTENSION(InMobiSDK))
/// Use this API to get token for Audience Bidding.
///
/// returns:
/// The token string.
+ (NSString * _Nullable)getToken SWIFT_WARN_UNUSED_RESULT;
/// Use this API to get token for Audience Bidding.
/// \param extras Any additional information to be passed to InMobi.
///
/// \param keywords A free form set of keywords, separated by ‘,’ to be sent with the ad request.
///
///
/// returns:
/// The token string.
+ (NSString * _Nullable)getTokenWithExtras:(NSDictionary<NSString *, id> * _Nullable)extras andKeywords:(NSString * _Nullable)keywords SWIFT_WARN_UNUSED_RESULT;
@end


@interface IMSdk (SWIFT_EXTENSION(InMobiSDK))
/// Enable or disable the AVAudioSession management by SDK
/// Indicates whether the application wants to manage audio session. If set as NO, the InMobi SDK will stop managing AVAudioSession during the HTML video playback lifecycle. If set as YES,
/// the InMobi SDK will manage AVAudioSession. That might set AVAudioSession’s category to AVAudioSessionCategoryAmbient and categoryOption to AVAudioSessionCategoryOptionMixWithOthers,
/// when HTML video is rendering. This setting will not stop the app audio from playing in an app. It will mix with ad audio and if any sound playing in another app, it will stop that sound and play the ads’
/// sound and once the ad is dismissed it notifies another app.
/// \param value Boolean depicting enable or disable the AVAudioSession management by SDK
///
+ (void)shouldAutoManageAVAudioSession:(BOOL)value;
/// Use this to set the global state of the SDK to mute.
/// \param shouldMute Boolean depicting the mute state of the SDK
///
+ (void)setMute:(BOOL)shouldMute;
/// Set Unified Id procured from vendors directly.
/// The ids are to be submitted in the following format.
/// key would be the vendor and value would be the identifier.
/// \code
/// {
/// "id5" :  "jkfid3ufolkb89hgvhb@$dj!@?#",
/// "live Ramp":  "$fvjk@kjfsk%$nfkvd9008jkf"
/// }
///
/// \endcode\param ids Represents the unified ids in dictionary format.
///
+ (void)setPublisherProvidedUnifiedId:(NSDictionary<NSString *, id> * _Nonnull)ids;
@end


@interface IMSdk (SWIFT_EXTENSION(InMobiSDK))
/// Pass or update custom signals to InMobi.
/// <ul>
///   <li>
///     Example:
///   </li>
/// </ul>
/// \code
/// let signals: [String: Any] = [
///     "s_dep_ban": 1,
///     "vcr_ban": 0.1,
///     "iap": true,
///     "iap_type": "minnow"
/// ]
/// IMSdk.putPublisherSignals(signals)
///
/// \endcode\param signals A <code>[String: Any]</code> dictionary containing key-value pairs of signals to be passed to InMobi SDK.
/// Keys should be <code>String</code> and values can be of allowed data types, please refer documentation. Repeated keys will update existing values.
/// Refer to the supporting document for the list of allowed keys and their expected data types.
///
+ (void)putPublisherSignals:(NSDictionary<NSString *, id> * _Nonnull)signals;
/// Retrieves the current set of signals previously passed to InMobi SDK.
/// Only the supported keys, as defined in the supporting document, will be returned.
/// If any unsupported or incorrect keys were passed during <code>putPublisherSignals</code>,
/// they will not be included in the returned dictionary.
/// <ul>
///   <li>
///     Example:
///   </li>
/// </ul>
/// \code
/// if let signals = IMSdk.getPublisherSignals() {
///     print(signals)  // Only supported keys will be printed
/// }
///
/// \endcode
/// returns:
/// A <code>[String: Any]?</code> dictionary containing the valid custom signals, if available.
/// Refer to the supporting document for the list of supported keys and their expected data types.
+ (NSDictionary<NSString *, id> * _Nullable)getPublisherSignals SWIFT_WARN_UNUSED_RESULT;
/// Resets all custom signals previously set for InMobi.
/// This method clears all previously stored signals, reverting to the default state.
/// After calling this method, any custom signals set using <code>putPublisherSignals</code> will be removed,
/// and subsequent calls to <code>getPublisherSignals</code> will return <code>nil</code>.
/// important:
/// This action cannot be undone. Ensure you want to clear all custom signals before invoking this method.
/// <ul>
///   <li>
///     Example:
///   </li>
/// </ul>
/// \code
/// IMSdk.resetPublisherSignals()
///
/// \endcode
+ (void)resetPublisherSignals;
@end

@class CLLocation;

@interface IMSdk (SWIFT_EXTENSION(InMobiSDK))
/// Provide the user’s age to the SDK for targetting purposes.
/// \param age The user’s age.
///
+ (void)setAge:(NSInteger)age;
/// Provide the user’s area code to the SDK for targetting purposes.
/// \param areaCode The user’s area code.
///
+ (void)setAreaCode:(NSString * _Nullable)areaCode;
/// Provide the user’s age group to the SDK for targetting purposes.
/// \param ageGroup The user’s age group, <code>IMSDKAgeGroup</code>.
///
+ (void)setAgeGroup:(enum IMSDKAgeGroup)ageGroup;
/// Provide a user’s date of birth to the SDK for targetting purposes.
/// \param parameter yearOfBirth The user’s date of birth.
///
+ (void)setYearOfBirth:(NSInteger)yearOfBirth;
/// Provide the user’s education status to the SDK for targetting purposes.
/// \param education The user’s education status, <code>IMSDKEducation</code>.
///
+ (void)setEducation:(enum IMSDKEducation)education;
/// Provide the user’s gender to the SDK for targetting purposes.
/// \param gender The user’s gender, <code>IMSDKGender</code>.
///
+ (void)setGender:(enum IMSDKGender)gender;
/// Provide the user’s interests to the SDK for targetting purposes.
/// \param interests The user’s interests.
///
+ (void)setInterests:(NSString * _Nullable)interests;
/// Provide the user’s preferred language to the SDK for targetting purposes.
/// \param language The user’s language.
///
+ (void)setLanguage:(NSString * _Nullable)language;
/// Provide the user’s location to the SDK for targetting purposes.
/// \param city The user’s city.
///
/// \param state The user’s state.
///
/// \param country The user’s country.
///
+ (void)setLocationWithCity:(NSString * _Nullable)city state:(NSString * _Nullable)state country:(NSString * _Nullable)country;
/// Provide the user’s location to the SDK for targetting purposes.
/// \param location The location of the user
///
+ (void)setLocation:(CLLocation * _Nullable)location;
/// Provide the user’s postal code to the SDK for targetting purposes.
/// \param postalcode The user’s postalcode.
///
+ (void)setPostalCode:(NSString * _Nullable)postalcode;
@end

typedef SWIFT_ENUM(NSInteger, IMSessionSignalsType, open) {
  IMSessionSignalsTypeStartTimestamp = 0,
  IMSessionSignalsTypeDepthBanner = 1,
  IMSessionSignalsTypeDepthInt = 2,
  IMSessionSignalsTypeDepthRewarded = 3,
  IMSessionSignalsTypeDepthNative = 4,
  IMSessionSignalsTypeCount = 5,
  IMSessionSignalsTypeUserRetention = 6,
};

/// Enumeration for error codes
/// Collection of codes indicating the status of an ad request.
typedef SWIFT_ENUM(NSInteger, IMStatusCode, closed) {
  IMStatusCodeNetworkUnReachable = 0,
  IMStatusCodeNoFill = 1,
  IMStatusCodeRequestInvalid = 2,
  IMStatusCodeRequestPending = 3,
  IMStatusCodeRequestTimedOut = 4,
  IMStatusCodeMultipleLoadsOnSameInstance = 5,
  IMStatusCodeInternalError = 6,
  IMStatusCodeServerError = 7,
  IMStatusCodeAdActive = 8,
  IMStatusCodeEarlyRefreshRequest = 9,
  IMStatusCodeDroppingNetworkRequest = 10,
  IMStatusCodeIncorrectPlacementID = 11,
  IMStatusCodeSdkNotInitialised = 12,
  IMStatusCodeInvalidBannerframe = 13,
  IMStatusCodeInvalidAudioFrame = 14,
  IMStatusCodeAudioDisabled = 22,
  IMStatusCodeAudioDeviceVolumeLow = 23,
};

typedef SWIFT_ENUM(NSInteger, IMTelemetryLandingPageEventType, open) {
  IMTelemetryLandingPageEventTypeClickStartCalled = 39,
  IMTelemetryLandingPageEventTypeLandingStartSuccess = 40,
  IMTelemetryLandingPageEventTypeLandingStartFailed = 41,
  IMTelemetryLandingPageEventTypeLandingCompleteSuccess = 42,
  IMTelemetryLandingPageEventTypeLandingCompleteFailed = 43,
  IMTelemetryLandingPageEventTypeLandingBrowserOpenFailed = 44,
  IMTelemetryLandingPageEventTypeLandingsPageStarted = 45,
  IMTelemetryLandingPageEventTypeLandingUserClickReload = 46,
  IMTelemetryLandingPageEventTypeLandingUserClickShare = 47,
  IMTelemetryLandingPageEventTypeSkStoreLoadingStart = 48,
  IMTelemetryLandingPageEventTypeSkStoreLoadingFailed = 49,
  IMTelemetryLandingPageEventTypeSkStoreLoadingSuccess = 50,
};


SWIFT_PROTOCOL("_TtP9InMobiSDK19IMUnifiedIdDelegate_")
@protocol IMUnifiedIdDelegate
/// Publishers should implement this protocol to fetch unified ids
/// Publisher should send this delegate in <code>IMUnifiedIdService fetchUnifiedIds:(id<IMUnifiedIdDelegate>)delegate</code>
/// \param response contains unified ids procured from InMobi supported vendors
///
/// \param error contains reason on why unified ids were not fetched.
///
- (void)onFetchCompleted:(NSDictionary<NSString *, id> * _Nullable)response error:(NSError * _Nullable)error;
@end

@class IMUserDataModel;

/// Class to integrate UnifiedIdService
SWIFT_CLASS("_TtC9InMobiSDK18IMUnifiedIdService")
@interface IMUnifiedIdService : NSObject
/// Update user’s data to InMobiUnifiedIdService in hashed form.
/// This method is used for identifying the user for user targeted ads.
/// <blockquote>
/// Note:
///
/// </blockquote>
/// <ul>
///   <li>
///     <code>InMobiUnifiedIdService</code> does not persist users info.
///   </li>
///   <li>
///     It holds only the hashed info for a sessions lifetime.
///   </li>
///   <li>
///     Expected to be called on every app session and on user login.
///   </li>
/// </ul>
/// \param data Represents user email and phone number in hashed format
///
+ (void)push:(IMUserDataModel * _Nullable)data;
/// Clears all UnifiedId info.
/// Expected to be called on user logout.
/// <ul>
///   <li>
///     It cancels all ongoing requests (Push and fetch).
///   </li>
///   <li>
///     Clears publisher provided unified ids.
///   </li>
/// </ul>
+ (void)reset;
/// Retrieves unified id from InMobi supported vendors.
/// \param delegate Represents the callback that delivers the unified ids.
///
+ (void)fetchUnifiedIds:(id <IMUnifiedIdDelegate> _Nullable)delegate;
/// For testing unified id on simulators, publisher needs to enable debug mode.
/// Default value will be No. Debug mode is only for simulators, wont work on actual devices
/// \param debugMode Set true to enable debug mode.
///
+ (void)enableDebugMode:(BOOL)debugMode;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class IMUserDataTypes;

/// Use this class to create data model for passing user data to <code>IMUnifiedIdService</code>.
/// As part of the General Data Protection Regulation (“GDPR”) publishers who collect data on their apps, are required to have a legal basis for collecting and processing the personal data of users in the European Economic Area (“EEA”).
/// Please ensure that you obtain appropriate consent from the user before making ad requests to InMobi for Europe and indicate the same by following our recommended SDK implementation.
/// Please do not pass any demographics information of a user; if you do not have user consent from such user in Europe.
/// <code>IMUserDataModel</code> is Data Model for passing user data in hashed form to <code>IMUserDataModel</code>.
SWIFT_CLASS("_TtC9InMobiSDK15IMUserDataModel")
@interface IMUserDataModel : NSObject <NSCopying>
@property (nonatomic, strong) IMUserDataTypes * _Nullable phoneNumber;
@property (nonatomic, strong) IMUserDataTypes * _Nullable emailId;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable extras;
/// Creates the object of type <code>IMUserDataModel</code>
/// \param phoneNumber phone number of the user in hashed format
///
/// \param emailId emailId of the user in hashed format
///
/// \param extras any additional information about the user to be passed to InMobi
///
- (nonnull instancetype)initWithPhoneNumber:(IMUserDataTypes * _Nullable)phoneNumber emailId:(IMUserDataTypes * _Nullable)emailId extras:(NSDictionary<NSString *, id> * _Nullable)extras OBJC_DESIGNATED_INITIALIZER;
/// Creates and returns a copy of existing object
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Compares two objects of class IMUserDataTypes and returns boolean value to indicate the same
/// \param other the 2nd object (of type    <code>IMUserDataModel</code>) that you want to compare this object with
///
///
/// returns:
/// true or false
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Use this class to create user data in hashed format.
/// User email and phone number are 2 key pieces of information that can be hashed and held via using <code>IMUserDataTypes</code> & <code>IMUserDataModel</code> classes of InMobi SDK.
/// As part of the General Data Protection Regulation (“GDPR”) publishers who collect data on their apps, are required to have a legal basis for collecting and processing the personal data of users in the European Economic Area (“EEA”).
/// Please ensure that you obtain appropriate consent from the user before making ad requests to InMobi for Europe and indicate the same by following our recommended SDK implementation.
/// Please do not pass any demographics information of a user; if you do not have user consent from such user in Europe.
/// <code>IMUserDataTypes</code> is Data Model for holding user data in hashed format
/// that uses InMobiUserDataTypes to hold on to user email and phone number
SWIFT_CLASS("_TtC9InMobiSDK15IMUserDataTypes")
@interface IMUserDataTypes : NSObject <NSCopying>
@property (nonatomic, copy) NSString * _Nullable md5;
@property (nonatomic, copy) NSString * _Nullable sha1;
@property (nonatomic, copy) NSString * _Nullable sha256;
/// Creates the object of type IMUserDataTypes
/// \param md5 the md5 value of the data (e.g. phone number) that user wants to send to Unified service
///
/// \param sha1 the sha1 value of the data (e.g. phone number) that user wants to send to Unified service
///
/// \param sha256 the sha256 value of the data (e.g. phone number) that user wants to send to Unified service
///
- (nonnull instancetype)initWithMd5:(NSString * _Nullable)md5 sha1:(NSString * _Nullable)sha1 sha256:(NSString * _Nullable)sha256 OBJC_DESIGNATED_INITIALIZER;
/// Creates and returns a copy of existing object
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
/// Compares two objects of class IMUserDataTypes and returns boolean value to indicate the same
/// \param other the 2nd object (of type <code>IMUserDataTypes</code>) that you want to compare this object with
///
///
/// returns:
/// true or false
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Use this class to set watermark as an overlay on ads
SWIFT_CLASS("_TtC9InMobiSDK11IMWatermark")
@interface IMWatermark : NSObject
@property (nonatomic, readonly, copy) NSData * _Nonnull imageData;
/// \param waterMarkImageData Data that is used for watermark
///
- (nonnull instancetype)initWithWaterMarkImageData:(NSData * _Nonnull)waterMarkImageData OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class WConfig;

SWIFT_CLASS("_TtC9InMobiSDK9IceConfig")
@interface IceConfig : NSObject
@property (nonatomic) BOOL locationEnabled;
@property (nonatomic, strong) WConfig * _Nonnull w;
@property (nonatomic) BOOL sessionEnabled;
@property (nonatomic, strong) CConfig * _Nonnull c;
@property (nonatomic) NSInteger stopRequestTimeout;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) BOOL operatorInfoCollectionEnabled;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10IconConfig")
@interface IconConfig : NSObject
@property (nonatomic) NSInteger width;
@property (nonatomic) NSInteger height;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10ImaiConfig")
@interface ImaiConfig : NSObject
@property (nonatomic) NSInteger pingTimeout;
@property (nonatomic) NSInteger pingCacheExpiry;
@property (nonatomic) NSInteger maxDbEvents;
@property (nonatomic) NSInteger maxEventBatch;
@property (nonatomic) NSInteger pingInterval;
@property (nonatomic) NSInteger maxRetries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK16ImpressionConfig")
@interface ImpressionConfig : NSObject
@property (nonatomic) NSInteger impressionType;
@property (nonatomic) NSInteger minPercentageViewed;
@property (nonatomic) NSInteger minTimeViewed;
@property (nonatomic) NSInteger videoMinTimeViewed;
@property (nonatomic) NSInteger pollInterval;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK27ImpressionViewabilityConfig")
@interface ImpressionViewabilityConfig : NSObject
@property (nonatomic) NSInteger impressionType;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// JSDownloader downloads a JS file while avoiding duplicate downloads.
/// It caches the JS file content (as a String) in an in‑memory cache (NSCache) and persists it via a repository.
/// The public API accepts a URL string. The synchronous API returns cached content (if available),
/// or returns nil immediately and triggers an asynchronous download for future calls.
SWIFT_CLASS("_TtC9InMobiSDK12JSDownloader")
@interface JSDownloader : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) JSDownloader * _Nonnull shared;)
+ (JSDownloader * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Synchronously fetches JS file content for a given URL string.
/// If the content is cached in memory or in the repository, it returns it immediately.
/// Otherwise, it returns nil immediately and initiates an asynchronous download for future calls.
/// <em>Important:</em> Call this method on a background thread.
/// \param urlString The remote file URL as a String.
///
///
/// returns:
/// The file content (String) if available; otherwise, nil.
- (NSString * _Nullable)fetchDataSyncFor:(NSString * _Nullable)urlString SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getContentFor:(NSString * _Nonnull)fileName SWIFT_WARN_UNUSED_RESULT;
@end




SWIFT_CLASS("_TtC9InMobiSDK18JSDownloaderConfig")
@interface JSDownloaderConfig : NSObject
@property (nonatomic, copy) NSString * _Nonnull cdnBaseUrl;
@property (nonatomic) BOOL isEnabled;
@property (nonatomic) NSTimeInterval fetchExpiresSeconds;
@property (nonatomic) NSTimeInterval deleteExpiryIntervalSeconds;
@property (nonatomic) NSInteger memoryCacheLimit;
@property (nonatomic) NSInteger retryCount;
@property (nonatomic) NSTimeInterval retryInterval;
@property (nonatomic) NSTimeInterval timeout;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK8LPConfig")
@interface LPConfig : NSObject
@property (nonatomic) NSInteger maxFunnelsToTrackPerAd;
@property (nonatomic) BOOL enableOnLpLifeCycleEvent;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SdkLogAdTypeConfig;
@class SdkLogInfo;

SWIFT_CLASS("_TtC9InMobiSDK13LoggingConfig")
@interface LoggingConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger expiry;
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) NSInteger maxNoOfEntries;
@property (nonatomic, copy) NSString * _Nonnull loggingUrl;
@property (nonatomic, strong) ErrorLogConfig * _Nonnull errorLog;
@property (nonatomic, strong) SdkLogAdTypeConfig * _Nonnull banner;
@property (nonatomic, strong) SdkLogAdTypeConfig * _Nonnull audio;
@property (nonatomic, strong) SdkLogAdTypeConfig * _Nonnull int_html;
@property (nonatomic, strong) SdkLogAdTypeConfig * _Nonnull int_native;
@property (nonatomic, strong) SdkLogAdTypeConfig * _Nonnull native;
@property (nonatomic, strong) SdkLogInfo * _Nonnull getToken;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK11MRC50Config")
@interface MRC50Config : NSObject
@property (nonatomic) NSInteger minTimeViewed;
@property (nonatomic) NSInteger videoMinTimeViewed;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class MediationFlowTypeConfig;

SWIFT_CLASS("_TtC9InMobiSDK15MediationConfig")
@interface MediationConfig : NSObject
@property (nonatomic, strong) MediationFlowTypeConfig * _Nonnull ab;
@property (nonatomic, strong) MediationFlowTypeConfig * _Nonnull nonAb;
@property (nonatomic, strong) MediationFlowTypeConfig * _Nonnull preload;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class MediationTimeoutConfig;

SWIFT_CLASS("_TtC9InMobiSDK23MediationFlowTypeConfig")
@interface MediationFlowTypeConfig : NSObject
@property (nonatomic, strong) MediationTimeoutConfig * _Nonnull native;
@property (nonatomic, strong) MediationTimeoutConfig * _Nonnull interstitial;
@property (nonatomic, strong) MediationTimeoutConfig * _Nonnull audio;
@property (nonatomic, strong) MediationTimeoutConfig * _Nonnull banner;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK22MediationRetriesConfig")
@interface MediationRetriesConfig : NSObject
@property (nonatomic, getter=default, setter=setDefault:) NSInteger default_;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK28MediationRetryIntervalConfig")
@interface MediationRetryIntervalConfig : NSObject
@property (nonatomic, getter=default, setter=setDefault:) NSInteger default_;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK22MediationTimeoutConfig")
@interface MediationTimeoutConfig : NSObject
@property (nonatomic, strong) AnyDictionary * _Nullable loadRetryInterval;
@property (nonatomic, strong) AnyDictionary * _Nullable loadTimeout;
@property (nonatomic, strong) AnyDictionary * _Nullable maxLoadRetries;
@property (nonatomic, strong) AnyDictionary * _Nullable muttTimeout;
@property (nonatomic, strong) AnyDictionary * _Nullable preloadTimeout;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK12Mraid3Config")
@interface Mraid3Config : NSObject
@property (nonatomic) BOOL bannerEnabled;
@property (nonatomic) BOOL interstitialEnabled;
@property (nonatomic) NSTimeInterval exposureChangeInterval;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK11MraidConfig")
@interface MraidConfig : NSObject
@property (nonatomic) NSInteger expiry;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic, copy) NSString * _Nonnull ios_url;
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) BOOL injectMainFrameOnly;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end




SWIFT_CLASS("_TtC9InMobiSDK17NativeAssetConfig")
@interface NativeAssetConfig : NSObject
@property (nonatomic) int64_t maxImageSize;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class VideoPlayerConfig;
@class NativeViewabilityConfig;

SWIFT_CLASS("_TtC9InMobiSDK12NativeConfig")
@interface NativeConfig : NSObject
@property (nonatomic, strong) AdChoiceConfig * _Nonnull adChoiceConfig;
@property (nonatomic, strong) IconConfig * _Nonnull iconConfig;
@property (nonatomic, strong) VideoPlayerConfig * _Nonnull videoPlayerConfig;
@property (nonatomic, strong) NativeAssetConfig * _Nonnull assetConfig;
@property (nonatomic, strong) NativeViewabilityConfig * _Nonnull viewabilityConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK23NativeViewabilityConfig")
@interface NativeViewabilityConfig : NSObject
@property (nonatomic, strong) ImpressionConfig * _Nonnull impressionConfig;
@property (nonatomic, strong) MRC50Config * _Nonnull mrc50Config;
@property (nonatomic, strong) DimensionConfig * _Nonnull parentMinDimension;
@property (nonatomic, strong) DimensionConfig * _Nonnull iconMinDimension;
@property (nonatomic, strong) DimensionConfig * _Nonnull mediaMinDimension;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13NetworkConfig")
@interface NetworkConfig : NSObject
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) NSInteger minBatchSize;
@property (nonatomic) NSInteger maxBatchSize;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK17NetworkTypeConfig")
@interface NetworkTypeConfig : NSObject
@property (nonatomic, strong) NetworkConfig * _Nonnull wifi;
@property (nonatomic, strong) NetworkConfig * _Nonnull others;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13NovatiqConfig")
@interface NovatiqConfig : NSObject
@property (nonatomic, copy) NSString * _Nonnull beaconUrl;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull carrierNames;
@property (nonatomic) BOOL isNovatiqEnabled;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10OmidConfig")
@interface OmidConfig : NSObject
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) NSInteger expiry;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic) int64_t webViewRetainTime;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) BOOL omidEnabled;
@property (nonatomic, copy) NSString * _Nonnull partnerKey;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSUUID;

SWIFT_CLASS("_TtC9InMobiSDK4Ping")
@interface Ping : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull templateUniqueId;
@property (nonatomic, readonly, copy) NSUUID * _Nonnull id;
@property (nonatomic) NSInteger retryCount;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol PingSource;

SWIFT_CLASS("_TtC9InMobiSDK11PingCreator")
@interface PingCreator : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+ (NSArray<Ping *> * _Nonnull)getPingsFrom:(NSDictionary<NSString *, id> * _Nonnull)dictionary source:(id <PingSource> _Nullable)source isTelemetryEnabledForPings:(BOOL)isTelemetryEnabledForPings SWIFT_WARN_UNUSED_RESULT;
+ (NSArray<Ping *> * _Nonnull)pingsFrom:(NSData * _Nonnull)jsonData source:(id <PingSource> _Nullable)source isTelemetryEnabledForPings:(BOOL)isTelemetryEnabledForPings SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC9InMobiSDK11PingManager")
@interface PingManager : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) PingManager * _Nonnull shared;)
+ (PingManager * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) BOOL isTelemetryEnabled;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)removeRenderViewForUuid:(NSUUID * _Nullable)uuid;
- (void)processWithPings:(NSArray<Ping *> * _Nonnull)pings source:(id <PingSource> _Nonnull)source;
- (void)processPendingWithOnlyHighPriority:(BOOL)onlyHighPriority;
@end


SWIFT_PROTOCOL("_TtP9InMobiSDK10PingSource_")
@protocol PingSource
@property (nonatomic, readonly, copy) NSUUID * _Nonnull uuid;
- (void)notifyPingSentCompletionWithPing:(Ping * _Nonnull)ping status:(NSInteger)status message:(NSString * _Nullable)message;
- (NSDictionary<NSString *, NSObject *> * _Nullable)getAdDataJSON SWIFT_WARN_UNUSED_RESULT;
@end

@class PingV2SubConfig;
@class PingV2RetryConfig;

SWIFT_CLASS("_TtC9InMobiSDK12PingV2Config")
@interface PingV2Config : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger maxEntries;
@property (nonatomic, strong) PingV2SubConfig * _Nonnull maxBatchSize;
@property (nonatomic, strong) PingV2SubConfig * _Nonnull expiry;
@property (nonatomic, strong) PingV2RetryConfig * _Nonnull retryConfig;
@property (nonatomic, strong) PingV2SubConfig * _Nonnull interval;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class PingV2RetrySubConfig;

SWIFT_CLASS("_TtC9InMobiSDK17PingV2RetryConfig")
@interface PingV2RetryConfig : NSObject
@property (nonatomic, strong) PingV2RetrySubConfig * _Nonnull high;
@property (nonatomic, strong) PingV2RetrySubConfig * _Nonnull normal;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK20PingV2RetrySubConfig")
@interface PingV2RetrySubConfig : NSObject
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) NSTimeInterval retryInterval;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK15PingV2SubConfig")
@interface PingV2SubConfig : NSObject
@property (nonatomic) NSTimeInterval high;
@property (nonatomic) NSTimeInterval normal;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC9InMobiSDK15PublisherConfig")
@interface PublisherConfig : NSObject
@property (nonatomic, strong) AnyDictionary * _Nullable generalKeys;
@property (nonatomic, strong) AnyDictionary * _Nullable adSpecificKeys;
@property (nonatomic) BOOL enableMCO;
@property (nonatomic) BOOL enableHB;
@property (nonatomic) NSInteger payloadSize;
@property (nonatomic, strong) IMPPSSignalConfig * _Nonnull obj;
@property (nonatomic, strong, getter=auto, setter=setAuto:) IMPPSSignalConfig * _Nonnull auto_;
@property (nonatomic, strong) IMPPSSignalConfig * _Nonnull direct;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK15PurchasesConfig")
@interface PurchasesConfig : NSObject
@property (nonatomic) BOOL inapp;
@property (nonatomic) BOOL restore;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SaveContentConfig;
@class WebViewModeDictionaryConfig;

SWIFT_CLASS("_TtC9InMobiSDK15RenderingConfig")
@interface RenderingConfig : NSObject
@property (nonatomic) NSInteger picHeight;
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull gestures;
@property (nonatomic) BOOL autoRedirectionEnforcement;
@property (nonatomic) BOOL enableImmersive;
@property (nonatomic) NSInteger picQuality;
@property (nonatomic, strong) SaveContentConfig * _Nonnull savecontent;
@property (nonatomic) NSInteger delayedRedirection;
@property (nonatomic) NSInteger userTouchResetTime;
@property (nonatomic) BOOL shouldRenderPopup;
@property (nonatomic) NSInteger picWidth;
@property (nonatomic) BOOL enableSDKAVAudioSession;
@property (nonatomic, strong) WebViewModeDictionaryConfig * _Nonnull webviewModeDictionary;
@property (nonatomic, strong) GestureConfig * _Nonnull gestureConfig;
- (BOOL)enablePubMuteControl_ SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10RootConfig")
@interface RootConfig : IMConfigBase
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, strong) IMIncludeIds * _Nonnull includeIds;
@property (nonatomic) BOOL monetizationDisabled;
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic) NSInteger waitTime;
@property (nonatomic, strong) IMLatestSdkInfo * _Nonnull latestSdkInfo;
@property (nonatomic, copy) NSArray<IMComponent *> * _Nonnull components;
@property (nonatomic, strong) IMGDPR * _Nonnull gdpr;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull ipAddrTPSupport;
- (NSString * _Nonnull)urlForProductType:(NSString * _Nonnull)type SWIFT_WARN_UNUSED_RESULT;
- (int64_t)expiryForProductType:(NSString * _Nonnull)type SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK17SaveContentConfig")
@interface SaveContentConfig : NSObject
@property (nonatomic) NSInteger maxSaveSize;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull allowedContentType;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK18SdkLogAdTypeConfig")
@interface SdkLogAdTypeConfig : NSObject
@property (nonatomic, strong) SdkLogInfo * _Nonnull ab;
@property (nonatomic, strong) SdkLogInfo * _Nonnull nonAb;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10SdkLogInfo")
@interface SdkLogInfo : NSObject
@property (nonatomic) double samplePercent;
@property (nonatomic, copy) NSString * _Nonnull logLevel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK13SessionConfig")
@interface SessionConfig : NSObject
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull control;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class UnifiedIdServiceConfig;

SWIFT_CLASS("_TtC9InMobiSDK12SignalConfig")
@interface SignalConfig : IMConfigBase
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, copy) NSString * _Nonnull kA;
@property (nonatomic, strong) BloomFilterServiceConfig * _Nonnull bloomFilterServiceConfig;
@property (nonatomic, strong) AnyDictionary * _Nullable ext;
@property (nonatomic, strong) SessionConfig * _Nonnull session;
@property (nonatomic, strong) UnifiedIdServiceConfig * _Nonnull unifiedIdServiceConfig;
@property (nonatomic, strong) IMIncludeIds * _Nonnull includeIds;
@property (nonatomic, strong) NovatiqConfig * _Nonnull novatiqConfig;
@property (nonatomic) NSInteger vAK;
@property (nonatomic, strong) IceConfig * _Nonnull ice;
@property (nonatomic, strong) PurchasesConfig * _Nonnull purchases;
@property (nonatomic, strong) PublisherConfig * _Nonnull publisher;
@property (nonatomic, strong) ExperimentsConfig * _Nonnull experiments;
@property (nonatomic, strong) BTSConfig * _Nonnull bts;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK22SilenceDetectionConfig")
@interface SilenceDetectionConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger intervalOnAudioPlay;
@property (nonatomic) NSInteger expiry;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK16SkanBitSetConfig")
@interface SkanBitSetConfig : NSObject
@property (nonatomic) BOOL isEnabled;
@property (nonatomic) NSTimeInterval expiryInSec;
@property (nonatomic) NSTimeInterval retryInterval;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic) NSInteger maxRetries;
@property (nonatomic) NSTimeInterval timeout;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK10SkanConfig")
@interface SkanConfig : NSObject
@property (nonatomic) NSInteger requestMode;
@property (nonatomic, strong) SkanBitSetConfig * _Nonnull skanBitSet;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK15TelemetryConfig")
@interface TelemetryConfig : IMConfigBase
- (NSString * _Nonnull)getType SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)toDictionary SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) NSInteger txLatency;
@property (nonatomic) NSInteger maxRetryCount;
@property (nonatomic, strong) NetworkTypeConfig * _Nonnull networkType;
@property (nonatomic, strong) BaseConfig * _Nonnull base;
@property (nonatomic, copy) NSString * _Nonnull telemetryUrl;
@property (nonatomic, strong) LoggingConfig * _Nonnull loggingConfig;
@property (nonatomic, strong) AssetReportingConfig * _Nonnull assetReporting;
@property (nonatomic) NSInteger processingInterval;
@property (nonatomic) NSInteger eventTTL;
@property (nonatomic) NSInteger maxTemplateEvents;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull priorityEvents;
@property (nonatomic) NSInteger maxEventsToPersist;
@property (nonatomic, strong) LPConfig * _Nonnull lpConfig;
@property (nonatomic) double samplingFactor;
@property (nonatomic) double pingSamplingFactor;
@property (nonatomic) BOOL disableAllGeneralEvents;
@property (nonatomic, strong) IMIncludeIds * _Nonnull includeIds;
@property (nonatomic, strong) DatabaseConfig * _Nonnull databaseConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK14TimeoutsConfig")
@interface TimeoutsConfig : NSObject
@property (nonatomic) NSInteger step2u;
@property (nonatomic) NSInteger bitmap;
@property (nonatomic) NSInteger step1b;
@property (nonatomic) NSInteger step4s;
@property (nonatomic) NSInteger request;
@property (nonatomic, strong) MediationConfig * _Nonnull mediationConfig;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end








SWIFT_CLASS("_TtC9InMobiSDK22UnifiedIdServiceConfig")
@interface UnifiedIdServiceConfig : NSObject
@property (nonatomic) BOOL enabled;
@property (nonatomic) NSInteger retryInterval;
@property (nonatomic, copy) NSString * _Nonnull url;
@property (nonatomic) NSInteger timeout;
@property (nonatomic) NSInteger maxRetries;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK15VastVideoConfig")
@interface VastVideoConfig : NSObject
@property (nonatomic) NSInteger optimalVastVideoSize;
@property (nonatomic) NSInteger maxWrapperLimit;
@property (nonatomic) NSInteger vastMaxAssetSize;
@property (nonatomic, strong) BitRateConfig * _Nonnull bitRate;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull allowedContentType;
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull allowedCompanionType;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK21VideoImpressionConfig")
@interface VideoImpressionConfig : NSObject
@property (nonatomic) NSInteger impressionMinTimeViewed;
@property (nonatomic) NSInteger impressionMinPercentageViewed;
@property (nonatomic) NSInteger videoMinPercentagePlay;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK22VideoPlayerAudioConfig")
@interface VideoPlayerAudioConfig : NSObject
@property (nonatomic) BOOL startMuted;
@property (nonatomic) NSInteger muteIconWidth;
@property (nonatomic) NSInteger muteIconHeight;
/// Margins for the mute icon; expected format is [left, top, right, bottom].
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull muteIconMargin;
@property (nonatomic) enum ConfigMuteIconPosition muteIconPosition;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class VideoPlayerProgressConfig;
@class VideoPlayerViewabilityConfig;

SWIFT_CLASS("_TtC9InMobiSDK17VideoPlayerConfig")
@interface VideoPlayerConfig : NSObject
@property (nonatomic) BOOL loopVideoOnComplete;
@property (nonatomic, strong) VideoPlayerProgressConfig * _Nonnull progressConfig;
@property (nonatomic, strong) VideoPlayerAudioConfig * _Nonnull audioConfig;
@property (nonatomic, strong) VideoPlayerViewabilityConfig * _Nonnull viewability;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK25VideoPlayerProgressConfig")
@interface VideoPlayerProgressConfig : NSObject
@property (nonatomic) BOOL showProgress;
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull foregroundColor;
@property (nonatomic, copy) NSArray<NSNumber *> * _Nonnull backgroundColor;
@property (nonatomic) NSInteger height;
@property (nonatomic) NSInteger progressPolling;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Usecase - video play/pause basis viewability
SWIFT_CLASS("_TtC9InMobiSDK28VideoPlayerViewabilityConfig")
@interface VideoPlayerViewabilityConfig : NSObject
@property (nonatomic) NSInteger minPercentageVisible;
@property (nonatomic) NSInteger pollingInterval;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class WebImpressionConfig;

SWIFT_CLASS("_TtC9InMobiSDK17ViewabilityConfig")
@interface ViewabilityConfig : NSObject
@property (nonatomic, strong) ImpressionViewabilityConfig * _Nonnull banner;
@property (nonatomic, strong) ImpressionViewabilityConfig * _Nonnull interstitial;
@property (nonatomic) NSInteger impressionPollIntervalMillis;
@property (nonatomic, strong) AudioImpressionConfig * _Nonnull audio;
@property (nonatomic, strong) OmidConfig * _Nonnull omidConfig;
@property (nonatomic, strong) WebImpressionConfig * _Nonnull web;
@property (nonatomic, strong) VideoImpressionConfig * _Nonnull video;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK7WConfig")
@interface WConfig : NSObject
@property (nonatomic) BOOL cwe;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK19WebImpressionConfig")
@interface WebImpressionConfig : NSObject
@property (nonatomic) NSInteger impressionMinPercentageViewed;
@property (nonatomic) NSInteger impressionPollIntervalMillis;
@property (nonatomic) NSInteger impressionMinTimeViewed;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK17WebViewModeConfig")
@interface WebViewModeConfig : NSObject
@property (nonatomic, copy) NSString * _Nonnull webviewBackground;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC9InMobiSDK27WebViewModeDictionaryConfig")
@interface WebViewModeDictionaryConfig : NSObject
@property (nonatomic, strong) WebViewModeConfig * _Nonnull pingStore;
@property (nonatomic, strong) WebViewModeConfig * _Nonnull native;
@property (nonatomic, strong) WebViewModeConfig * _Nonnull interstitial;
@property (nonatomic, strong) WebViewModeConfig * _Nonnull audio;
@property (nonatomic, strong) WebViewModeConfig * _Nonnull base;
@property (nonatomic, strong) WebViewModeConfig * _Nonnull banner;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@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
