#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.7 (swiftlang-5.7.0.127.4 clang-1400.0.29.50)
#ifndef AWSDK_SWIFT_H
#define AWSDK_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 "-Wduplicate-method-match"
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#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 __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
#else
# define SWIFT_RELEASES_ARGUMENT
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#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 defined(__has_attribute) && __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 __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
#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(__cplusplus)
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT noexcept
#endif
#else
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT 
#endif
#endif
#if defined(__cplusplus)
#if !defined(SWIFT_CXX_INT_DEFINED)
#define SWIFT_CXX_INT_DEFINED
namespace swift {
using Int = ptrdiff_t;
using UInt = size_t;
}
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreLocation;
@import Foundation;
@import ObjectiveC;
@import Security;
#endif

#import <AWSDK/AWSDK.h>

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

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

#if defined(__OBJC__)
@class NSString;
@class UIColor;
@class UIImage;

SWIFT_CLASS("_TtC5AWSDK10AWBranding")
@interface AWBranding : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWBranding * _Nonnull sharedBranding;)
+ (AWBranding * _Nonnull)sharedBranding SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// @return Retrieve from the payload the organization name set in console. nil will be returned if nothing was present
- (NSString * _Nullable)organizationName SWIFT_WARN_UNUSED_RESULT;
/// The toolbar color
/// There are no uses of the toolbar color within the SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)toolbarColor SWIFT_WARN_UNUSED_RESULT;
/// The toolbar text color
/// There are no uses of the toolbar text color within the SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)toolbarTextColor SWIFT_WARN_UNUSED_RESULT;
/// The primary color
/// In SDK Screens the primary color is used to brand the “NEXT” button color seen on multiple SDK authentication screens.
- (UIColor * _Nullable)primaryColor SWIFT_WARN_UNUSED_RESULT;
/// The secondary color
/// There are no uses of the secondary color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)secondaryColor SWIFT_WARN_UNUSED_RESULT;
/// The primary text color
/// There are no uses of the primary text color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)primaryTextColor SWIFT_WARN_UNUSED_RESULT;
/// The secondary text color
/// There are no uses of the secondary text color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)secondaryTextColor SWIFT_WARN_UNUSED_RESULT;
/// @brief Attempt to retrieve the background image set by console or plist entry, or nil if not set.
/// @description If console branding is enabled then the downloaded image from console will be returned if it was set and downloaded.
/// If the file could not be downloaded or was not set, then attempt to retrieve an image from the plist entry set in AWSDKDefaultSettings.
/// If the image does not exist or was not set, nil is returned. The appropriate image will be returned based on device currently being used.
- (UIImage * _Nullable)primaryImage SWIFT_WARN_UNUSED_RESULT;
/// @brief Attempt to retrieve the company logo image set by console or plist entry or the default VMWare logo.
/// @description If console branding is enabled then the downloaded image from console will be returned if it was set and downloaded.
/// If the file could not be downloaded or was not set, then attempt to retrieve an image from the plist entry set in AWSDKDefaultSettings.
/// If the image does not exist or was not set, nil is returned. The appropriate image will be returned based on device currently being used.
- (UIImage * _Nullable)secondaryImage SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC5AWSDK12AWController")
@interface AWController : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum AWCertsTrustStore : NSUInteger;
enum AWSecTrustStrictness : NSUInteger;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This method will validate given serverTrust against device or custom trust store based on input trustStore type
/// <ul>
///   <li>
///     Return True if serverTrust evaluation result is trusted else false.
///   </li>
/// </ul>
/// \param serverTrust trust that needs to be evaluated
/// trustStore: Store that needs to be choose for trust validation
/// strictness: Based on strictness value the return result will be vary incase if SecTrustResultType is recoverableTrustFailure
/// if strictness level ignore the SecTrust can be trusted return value will be true
/// else SecTrust cannot be trusted the return value will be false
///
- (BOOL)validateServerTrust:(SecTrustRef _Nonnull)serverTrust trustStore:(enum AWCertsTrustStore)trustStore strictness:(enum AWSecTrustStrictness)strictness SWIFT_WARN_UNUSED_RESULT;
@end

@protocol CommandHandler;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (void)loadCommands;
- (void)registerCommandHandler:(id <CommandHandler> _Nonnull)commandHandler;
@end

@protocol PKCS12Certificate;
@class NSError;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to retrieve all the SDK stored Identity certificate information.
/// Call this API once SDK is initialised to get the latest set of stored certificates.
/// All valid PKCS12Certificate along with their passwords will be returned.
/// Completion handler won’t called on Main Thread, but on a concurrent thread with
/// QOS set to background.
/// \param completion A block to be executed once certificate retrieval completes.
/// Certificate Map: Dictionary with usage as keys & array of key
/// value compliant certificate object. See
/// CertificateUsageKey and CertificateInfoKey.
/// Error: Any error while retrieval.
///
- (void)exportIdentityCertificatesWithCompletion:(void (^ _Nonnull)(NSDictionary<NSString *, NSArray<id <PKCS12Certificate>> *> * _Nullable, NSError * _Nullable))completion;
@end

@class PublicCertificate;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to retrieve all the SDK stored certificate information
/// along with its usage. Call this API once SDK is initialized to get the latest
/// set of stored certificates.
/// Completion handler won’t called on Main Thread, but on a concurrent thread with
/// QOS set to background.
/// \param completion A block to be executed once certificate retrieval completes.
/// Certificate Map: Dictionary with usage as keys & array of key
/// value compliant certificate object. See
/// CertificateUsageKey and CertificateInfoKey.
/// Error: Any error while retrieval.
///
- (void)retrieveStoredPublicCertificatesWithCompletion:(void (^ _Nonnull)(NSDictionary<NSString *, NSArray<PublicCertificate *> *> * _Nullable, NSError * _Nullable))completion;
@end

@class NSData;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to unwrap data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be unwrapped
///
///
/// throws:
/// If any error occurs during unwrapping, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the unwrapped version of the passed-in data
- (NSData * _Nullable)unwrap:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function is used to wrap data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be wrapped
///
///
/// throws:
/// If any error occurs during wrapping, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the wrapped version of the passed-in data
- (NSData * _Nullable)wrap:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to decrypt data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be decrypted
///
///
/// throws:
/// If any error occurs during decryption, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the decrypted version of the passed-in data
- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function is used to encrypt data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be encrypted
///
///
/// throws:
/// If any error occurs during encryption, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the encrypted version of the passed-in data
- (NSData * _Nullable)encrypt:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end

@class AWProfile;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (AWProfile * _Nullable)sdkProfile SWIFT_WARN_UNUSED_RESULT;
/// List of downloaded profiles from Server. This property will return a cached list of profiles. If you want to retrieve profiles please make sure you call
@property (nonatomic, readonly, copy) NSArray<AWProfile *> * _Nonnull profiles;
- (void)setProfilesToRequest:(NSArray<NSString *> * _Nonnull)profileTypes;
@end

@class NSURLProtectionSpace;
@class NSURLAuthenticationChallenge;
@class NSURLCredential;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// Use this API to confirm if SDK can handle the challenge thrown by the URLSession request.
/// SDK can handle only client authentication requests - Basic / NTLM / Client Certificate based.
/// \param protectionSpace URLProtectionSpace object from  the thrown challenge
///
///
/// throws:
/// Throws when SDK cannot handle the provided protection space,.
- (BOOL)canHandleProtectionSpace:(NSURLProtectionSpace * _Nullable)protectionSpace withError:(NSError * _Nullable * _Nullable)error;
/// This API is used to handle the authentication challenge thrown by any network requests
/// made by the application.
/// SDK can handle only client authentication requests - Basic / NTLM / Client Certificate based.
/// Make use of <code>canHandle(protectionSpace:)</code> API to confirm if SDK can handle the challenge,
/// based on the settings configured by admin and the current state of the SDK store.
/// \param challenge Challenge object thrown by the URLSession request
///
/// \param completionHandler Completion handler with credentials and disposition of the challenge
///
///
/// returns:
/// Boolean representing if SDK will take care of the completion or not. False means, SDK callinng the completio handler is not guaranteed,
- (BOOL)handleChallengeForURLSession:(NSURLAuthenticationChallenge * _Nullable)challenge completionHandler:(void (^ _Nullable)(enum NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler SWIFT_WARN_UNUSED_RESULT;
- (void)clearAndRefetchClientCertificateCredentialsWithCompletionHandler:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completionHandler;
- (BOOL)setPendingCertificateRetryWithTimeout:(double)timeout maxAttempts:(NSInteger)maxAttempts SWIFT_WARN_UNUSED_RESULT;
@end

enum AWSSOStatus : NSInteger;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (NSString * _Nullable)deviceServicesURL SWIFT_WARN_UNUSED_RESULT;
- (void)queryDeviceEnrollmentStatus:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
- (void)sendLogDataWithCompletion:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
@property (nonatomic, readonly) enum AWSSOStatus ssoStatus;
@end

@class AWEnrollmentAccount;
@protocol DeviceEnrollmentInfo;

@interface AWController (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly, strong) AWEnrollmentAccount * _Nullable account;
@property (nonatomic, readonly, strong) id <DeviceEnrollmentInfo> _Nullable enrollmentInfo;
/// This method invokes a UI with username and password fields which updates the user account with the populated
/// values after authenticating successfully. If the call to this method is done before the <code>AWControllerDelegate</code> callback
/// method <code>controllerDidCompleteVerificationWithServer:</code>, the call will not be triggered immediately.
/// It will be queued and will be triggered once SDK is done with current running operations.
/// \param completion A block object to be executed when updating the user credentials is finished.
/// The Boolean value indicates whether the update succeed and error in case it failed.
///
- (void)updateUserCredentialsWithCompletion:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
@end

@protocol AWSDKDelegate;
@protocol AWControllerCommandManagementDelegate;
@class NSURL;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// Returns current AirWatch SDK Version.
@property (nonatomic, readonly, copy) NSString * _Nonnull AWSDKVersion;
/// Delegate to receive events such as received profiles, locked, initialCheckDone etc.
/// note:
///
/// Since AWController is a singleton, setting this delegate will reset previously set delegate.
/// <ul>
///   <li>
///   </li>
/// </ul>
@property (nonatomic, weak) id <AWSDKDelegate> _Nullable delegate;
/// Delegate to receive events regarding command processor.
/// If your application supports commands delivered by the console, you can listen to events such
/// as started loading commands, failed and finished loading commands.
/// note:
///
/// Since AWController is a singleton, setting this delegate will reset previously set command management delegate.
/// <ul>
///   <li>
///   </li>
/// </ul>
@property (nonatomic, weak) id <AWControllerCommandManagementDelegate> _Nullable commandManagementDelegate;
/// Callback scheme for the application to be used to flip to Anchor Applications and back from it.
@property (nonatomic, copy) NSString * _Nonnull callbackScheme;
/// Returns canUserShareLogData bool value can be used to block share logs feature.
@property (nonatomic) BOOL canUserShareLogData;
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull requestingProfiles;
/// APNS Token to pass to console for push notifications regarding profiles, etc. A beacon consisting of the
/// new APNS token is sent every time a value is set.
/// note:
///
/// To avoid unnecessary calls to console, please make sure, token value will be assigned to AWController
/// only when token value has really changed.
/// <ul>
///   <li>
///   </li>
/// </ul>
/// If the value is set to an empty string, it will be cleared from console and won’t be used for
/// push notifications anymore by the UEM console.
/// Usage :
/// if controller.APNSToken != token {
/// controller.APNSToken = token .This should send the beacon with updated token.
/// OR
/// SDKBeaconTransmitter.sharedTransmitter.sendBeacon(updatedAPNSToken: String,
/// completion: SendBeaconCompletion?)
/// }
@property (nonatomic, copy) NSString * _Nonnull APNSToken;
- (void)start;
- (void)sync;
- (void)refreshSDK;
- (BOOL)handleOpenURL:(NSURL * _Nullable)url fromApplication:(NSString * _Nullable)fromApplication SWIFT_WARN_UNUSED_RESULT;
+ (AWController * _Nonnull)clientInstance SWIFT_WARN_UNUSED_RESULT;
/// TeamID of the application. Needed for verification during flip to Anchor Application.
@property (nonatomic, copy) NSString * _Nullable teamID;
@property (nonatomic) BOOL shouldAttestApp;
@end

enum AWEnrollmentStatus : NSInteger;
enum AWNetworkActivityStatus : NSInteger;
@class NSURLRequest;

SWIFT_PROTOCOL_NAMED("AWControllerDelegate")
@protocol AWSDKDelegate
@optional
- (void)controllerWillStartRefresh;
@required
- (void)initialCheckDoneWithError:(NSError * _Nullable)error;
@optional
- (void)completedVerificationWithServer:(BOOL)success error:(NSError * _Nullable)error;
- (void)receivedProfiles:(NSArray<AWProfile *> * _Nonnull)profiles;
- (void)didReceiveEnrollmentStatus:(enum AWEnrollmentStatus)enrollmentStatus;
- (void)userChanged;
- (void)wipe;
- (void)willLock;
- (void)lock;
- (void)unlock;
- (void)stopNetworkActivity:(enum AWNetworkActivityStatus)reason;
- (void)resumeNetworkActivity;
- (void)didStartServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request;
- (void)didFailServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request;
- (void)didCompletelServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request allowingConnection:(BOOL)allowingConnection;
- (void)didFinishPollingForPendingCertificateIssued:(BOOL)certificateIssued error:(NSError * _Nullable)error;
- (BOOL)controllerShouldShowCheckInBlocker SWIFT_WARN_UNUSED_RESULT;
- (BOOL)controllerShouldShowSecurityBlocker SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM(NSInteger, AWSDKCryptError, closed) {
  AWSDKCryptErrorStoreIsLocked = 0,
  AWSDKCryptErrorInvalidKey = 1,
  AWSDKCryptErrorInvalidOutputData = 2,
};

typedef SWIFT_ENUM(NSInteger, AWSDKEncryptedStoreError, closed) {
  AWSDKEncryptedStoreErrorStoreIsLocked = 0,
  AWSDKEncryptedStoreErrorStoreTypeNotSupported = 1,
  AWSDKEncryptedStoreErrorStoreMigrationFailed = 2,
  AWSDKEncryptedStoreErrorFileDoesNotExist = 3,
  AWSDKEncryptedStoreErrorInternalEncryptionError = 4,
  AWSDKEncryptedStoreErrorInternalError = 5,
};


SWIFT_CLASS("_TtC5AWSDK17AWSDKErrorDomains")
@interface AWSDKErrorDomains : NSObject
/// @brief Domain for initialCheckDone errors which cause the AWSDK to stop execution.
/// @description The AWSDK setup flow begins when the application starts for the first time or on
/// every time the application comes into foreground. The call to initialCheckDone occurs when it has finished its work with either
/// an error or nil if everything finished successfully.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull setup;)
+ (NSString * _Nonnull)setup SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull encryptedStore;)
+ (NSString * _Nonnull)encryptedStore SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull updateCredentials;)
+ (NSString * _Nonnull)updateCredentials SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull crypt;)
+ (NSString * _Nonnull)crypt SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull pendingCertificate;)
+ (NSString * _Nonnull)pendingCertificate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull sdkDataProvider;)
+ (NSString * _Nonnull)sdkDataProvider SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM(NSInteger, AWSDKLogDataProviderError, closed) {
  AWSDKLogDataProviderErrorEmptyFileContent = 0,
};

typedef SWIFT_ENUM(NSInteger, AWSDKPendingCertificateFetchError, closed) {
  AWSDKPendingCertificateFetchErrorCertificateIssuancePending = 0,
  AWSDKPendingCertificateFetchErrorRetryIntervalNotReached = 1,
  AWSDKPendingCertificateFetchErrorMaximumAllowedAttemptsElapsed = 2,
  AWSDKPendingCertificateFetchErrorMissingPendingCertificateFetchRequest = 3,
  AWSDKPendingCertificateFetchErrorFailedToSavePendingCertificateRequestSecurely = 4,
  AWSDKPendingCertificateFetchErrorFailedToIdentifyIssuerForPendingCertificateRequest = 5,
};

typedef SWIFT_ENUM(NSInteger, AWSDKSetupError, closed) {
  AWSDKSetupErrorInternalError = 0,
  AWSDKSetupErrorStopSDKRequested = 1,
  AWSDKSetupErrorRegisteringApplicationBlocked = 2,
  AWSDKSetupErrorEnrollmentInformationSetup = 3,
  AWSDKSetupErrorEmptyProfiles = 4,
  AWSDKSetupErrorProxyFailedToStart = 5,
  AWSDKSetupErrorIntegratedAuthenticationCertificatesNotDownloaded = 6,
  AWSDKSetupErrorApplicationIdentityNotSet = 7,
  AWSDKSetupErrorFailedToFetchPinningCertificate = 8,
  AWSDKSetupErrorFailedToFetchEnvironmentInformationFromAnchor = 9,
  AWSDKSetupErrorCallBackSchemeNotConfigured = 10,
  AWSDKSetupErrorAirWatchApplicationSchemeNotInAllowedLists = 11,
  AWSDKSetupErrorAnchorRequiredForThirdPartyApplicationBootstrap = 12,
  AWSDKSetupErrorFailedToReportUnenrollmentStatus = 13,
  AWSDKSetupErrorUserReachedMaximumAllowedUnlockAttempts = 14,
  AWSDKSetupErrorDeviceIsCompromised = 15,
  AWSDKSetupErrorConsoleVersionNotCompatible = 16,
  AWSDKSetupErrorInvalidKeyWrappingConfiguration = 17,
  AWSDKSetupErrorProtectedDataIsUnavailable = 18,
  AWSDKSetupErrorTunnelFailedToStart = 19,
  AWSDKSetupErrorMissingExpectedRequirements = 20,
  AWSDKSetupErrorDataMigrationFailure = 21,
  AWSDKSetupErrorDeviceNotEnrolled = 22,
  AWSDKSetupErrorFailedToSetupAccessControl = 23,
  AWSDKSetupErrorApplicationNotAssigned = 24,
  AWSDKSetupErrorCredentialsFetchFailed = 25,
  AWSDKSetupErrorDeviceAlreadyEnrolled = 26,
  AWSDKSetupErrorMissingRequiredInformation = 27,
  AWSDKSetupErrorNonAirWatchConsole = 28,
  AWSDKSetupErrorEnrollmentBlockedThroughExtension = 29,
  AWSDKSetupErrorEnrollmentBlocked = 30,
  AWSDKSetupErrorSharedDeviceNotCheckedOut = 31,
  AWSDKSetupErrorServerIsNotReachableForRequiredSetup = 32,
  AWSDKSetupErrorPolicySigningCertFetchFailed = 33,
  AWSDKSetupErrorApplicationNotManaged = 34,
  AWSDKSetupErrorEnrollmentInfoNotMatched = 35,
  AWSDKSetupErrorFailedToFetchCrossClusterInfoFromAnchor = 36,
  AWSDKSetupErrorCrossClusterMisConfigurationFailure = 37,
  AWSDKSetupErrorUserCancelledEnrollment = 38,
  AWSDKSetupErrorInvalidServerDetails = 39,
};

typedef SWIFT_ENUM(NSInteger, AWSDKUpdateCredentialsError, closed) {
  AWSDKUpdateCredentialsErrorAuthenticationFailed = 0,
  AWSDKUpdateCredentialsErrorUserCancelled = 1,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkAccessAllowCellular, "AllowCellularNetworkAccess", closed) {
  AWNetworkAccessAllowCellularNever = 0,
  AWNetworkAccessAllowCellularAlways = 1,
  AWNetworkAccessAllowCellularNotRoaming = 2,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkAccessAllowWiFi, "AllowWiFiNetworkAccess", closed) {
  AWNetworkAccessAllowWiFiAlways = 1,
  AWNetworkAccessAllowWiFiFilter = 2,
};

typedef SWIFT_ENUM_NAMED(uint16_t, AWAnalyticsEvent, "AnalyticsEvent", closed) {
  AWAnalyticsEventCustomEvent = 0,
  AWAnalyticsEventSessionStarted = 1,
  AWAnalyticsEventSessionEnded = 2,
  AWAnalyticsEventViewDidAppear = 3,
  AWAnalyticsEventViewDidDisappear = 4,
};

typedef SWIFT_ENUM_NAMED(uint16_t, AWAnalyticsEventValueType, "AnalyticsEventValueType", closed) {
  AWAnalyticsEventValueTypeNone = 0,
  AWAnalyticsEventValueTypeInteger = 1,
  AWAnalyticsEventValueTypeLong = 2,
  AWAnalyticsEventValueTypeString = 3,
};


SWIFT_CLASS("_TtC5AWSDK16AnalyticsHandler")
@interface AnalyticsHandler : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface AnalyticsHandler (SWIFT_EXTENSION(AWSDK))
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AnalyticsHandler * _Nonnull sharedInstance;)
+ (AnalyticsHandler * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) BOOL enabled;
- (void)recordEvent:(enum AWAnalyticsEvent)event eventName:(NSString * _Nonnull)eventName eventValue:(NSString * _Nonnull)eventValue valueType:(enum AWAnalyticsEventValueType)valueType;
@end


SWIFT_CLASS("_TtC5AWSDK14ProfilePayload")
@interface ProfilePayload : AWProfilePayload
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


/// @brief        Analytics payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the analytics group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("AnalyticsPayload")
@interface AWAnalyticsPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enabled;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ApplicationStatusInformation")
@protocol AWApplicationStatusInformation
@property (nonatomic, readonly, copy) NSString * _Nonnull consoleVersion;
@property (nonatomic, readonly) BOOL isAppSupported;
@property (nonatomic, readonly) BOOL isDeviceManaged;
@property (nonatomic, readonly) enum AWEnrollmentStatus enrollmentStatus;
@property (nonatomic, readonly) BOOL isAppManagementRequired;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWAuthenticationMethod, "AuthenticationMethod", closed) {
  AWAuthenticationMethodNone = 0,
  AWAuthenticationMethodPasscode = 1,
  AWAuthenticationMethodUsernamePassword = 2,
};


/// @brief        Authentication payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the authentication group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("AuthenticationPayload")
@interface AWAuthenticationPayload : ProfilePayload
@property (nonatomic, readonly) enum AWAuthenticationMethod authenticationMethod;
/// The minimum length of a passcode.
/// <em>This only applies to passcodes</em>
@property (nonatomic, readonly) NSInteger minimumPasscodeLength;
/// The minimum complex characters a passcode must contain.
/// <em>This only applies to passcodes.</em>
@property (nonatomic, readonly) NSInteger minimumComplexCharacters;
/// The maximum amount of days before a passcode expires and a new one must be set.
/// A Value <= 0 is interpreted as no maximum passcode age
@property (nonatomic, readonly) NSInteger maximumPasscodeAge;
/// The amount of passcodes that must be unique before reusing one is allowed.
/// <em>This only applies to passcodes.</em>
@property (nonatomic, readonly) NSInteger minimumUniquePasscodesBeforeReuse;
/// Number of failed authentication attempts allowed before actions should be executed.
/// <em>This applies to username / password & passcode.</em>
@property (nonatomic, readonly) NSInteger maximumFailedAttempts;
/// Determine if device passcode level should be required.
/// <em>This start being implemented in 6.4 to replace authenticationMethod = 1 (passcode)</em>
@property (nonatomic, readonly) BOOL requirePasscode;
/// A boolean indicating if Single Sign-On is enabled.
@property (nonatomic, readonly) BOOL enableSingleSignOn;
/// A boolean indicating if simple passcodes are allowed to be used.
@property (nonatomic, readonly) BOOL allowSimple;
/// Amount of time the application can be unlocked without prompting for the passcode.
@property (nonatomic, readonly) NSInteger passcodeTimeout;
@property (nonatomic, readonly, copy) NSString * _Nullable policyId;
/// A boolean indicating if Integrated Authentication is enabled.
@property (nonatomic, readonly) BOOL enableIntegratedAuthentication;
/// An array of allowedSites.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedSites;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

enum AWPasscodeMode : NSInteger;
enum AWBiometricMethod : NSInteger;

@interface AWAuthenticationPayload (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly) enum AWPasscodeMode passcodeMode;
@property (nonatomic, readonly) enum AWBiometricMethod biometricMethod;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWBiometricMethod, "BiometricMethod", closed) {
  AWBiometricMethodNone = 0,
  AWBiometricMethodAny = 2,
};


/// @brief        Branding payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the branding group of an SDK profile.
/// @version     5.8
SWIFT_CLASS_NAMED("BrandingPayload")
@interface AWBrandingPayload : ProfilePayload
/// A boolean indicating if Branding is enabled.
@property (nonatomic, readonly) BOOL enableBranding;
@property (nonatomic, readonly) BOOL customBranding;
/// The Organization Name.
@property (nonatomic, readonly, copy) NSString * _Nullable organizationName;
/// The primary highlight color.
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryHighlightColor;
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryColor;
/// The secondary highlight color.
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryHighlightColor;
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryColor;
/// The navigation bar and toolbar color.
@property (nonatomic, readonly, strong) UIColor * _Nullable toolbarColor;
/// The primary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryTextColor;
/// The secondary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryTextColor;
/// The login title text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable loginTitleTextColor;
/// The tertiary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable tertiaryTextColor;
/// The toolbar text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable toolbarTextColor;
/// The background image for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhoneBackgroundImageURL;
/// The background image for retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone2xBackgroundImageURL;
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone52xBackgroundImageURL;
/// The background image for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPadBackgroundImageURL;
/// The background image for retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPad2xBackgroundImageURL;
/// The company image logo for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhoneCompanyLogoURL;
/// The company image logo for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone2xCompanyLogoURL;
/// The company image logo for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPadCompanyLogoURL;
/// The company image logo for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPad2xCompanyLogoURL;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC5AWSDK13BreezyPayload")
@interface BreezyPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSString * _Nullable breezyMDMAuthToken;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyServerURL;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyOauthConsumerID;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyOauthConsumerSecret;
@property (nonatomic, readonly) BOOL isEnabled;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


/// Certificate Attributes Keys
/// Use these strings as keys for retrieving attributes and raw data of certificates
/// from AWController.storedCertificates() API
SWIFT_CLASS_NAMED("CertificateInfoKey")
@interface AWCertificateInfoKey : NSObject
/// Raw Certificate data in DER format
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull rawCertificate;)
+ (NSString * _Nonnull)rawCertificate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectName;)
+ (NSString * _Nonnull)subjectName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectUserID;)
+ (NSString * _Nonnull)subjectUserID SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectIdentifier;)
+ (NSString * _Nonnull)subjectIdentifier SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull emailAddress;)
+ (NSString * _Nonnull)emailAddress SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Data?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull serialNumber;)
+ (NSString * _Nonnull)serialNumber SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull commonName;)
+ (NSString * _Nonnull)commonName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull issuer;)
+ (NSString * _Nonnull)issuer SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull algorithm;)
+ (NSString * _Nonnull)algorithm SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Date?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull startDate;)
+ (NSString * _Nonnull)startDate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Date?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull endDate;)
+ (NSString * _Nonnull)endDate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectAlternativeName;)
+ (NSString * _Nonnull)subjectAlternativeName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull keyUsage;)
+ (NSString * _Nonnull)keyUsage SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull extendedKeyUsage;)
+ (NSString * _Nonnull)extendedKeyUsage SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull universalPrincipalName;)
+ (NSString * _Nonnull)universalPrincipalName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - [String]?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull ocspResponderList;)
+ (NSString * _Nonnull)ocspResponderList SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Certificate Usage Keys
/// These keys are returned in AWController.storedCertificates() API as usage.
SWIFT_CLASS_NAMED("CertificateUsageKey")
@interface AWCertificateUsageKey : NSObject
/// Certificate of Usage key to reflect Integrated Authentication(Deprecated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull identity SWIFT_DEPRECATED_MSG("", "integratedAuthIdentity");)
+ (NSString * _Nonnull)identity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of Usage key to reflect Integrated Authentication
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull integratedAuthIdentity;)
+ (NSString * _Nonnull)integratedAuthIdentity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of Usage key to reflect Integrated Authentication
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull uncategorizedIdentity;)
+ (NSString * _Nonnull)uncategorizedIdentity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of this usage are used for signing requests for MAG Proxy
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull magSigning;)
+ (NSString * _Nonnull)magSigning SWIFT_WARN_UNUSED_RESULT;
/// Certificate of this usage are used for signing requests for Tunnel Proxy
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull tunnelSigning;)
+ (NSString * _Nonnull)tunnelSigning SWIFT_WARN_UNUSED_RESULT;
/// Certificates of type SSL
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull selfSignedSSLCerts;)
+ (NSString * _Nonnull)selfSignedSSLCerts SWIFT_WARN_UNUSED_RESULT;
/// Certificates of type Custom Anchors
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull customTrustedAnchorCerts;)
+ (NSString * _Nonnull)customTrustedAnchorCerts SWIFT_WARN_UNUSED_RESULT;
/// SDK doesn’t have specific usage for this type of certificates
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull others;)
+ (NSString * _Nonnull)others SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSUInteger, AWCertsTrustStore, "CertsTrustStore", closed) {
  AWCertsTrustStoreDeviceAndCustom = 0,
  AWCertsTrustStoreCustom = 1,
};

@protocol AWConsoleCommand;
@protocol AWConsoleCommandResponse;

SWIFT_PROTOCOL("_TtP5AWSDK14CommandHandler_")
@protocol CommandHandler
- (id <AWConsoleCommandResponse> _Nullable)processWithCommand:(id <AWConsoleCommand> _Nonnull)command SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWCommandStatus, "CommandStatus", closed) {
  AWCommandStatusUnknown = 0,
  AWCommandStatusAcknowledged = 1,
  AWCommandStatusError = 2,
  AWCommandStatusCommandFormatError = 3,
  AWCommandStatusIdle = 4,
  AWCommandStatusNotNow = 5,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWCommandType, "CommandType", closed) {
  AWCommandTypeInstallProfiles = 0,
  AWCommandTypeRequestProfiles = 1,
  AWCommandTypeUploadLogs = 2,
  AWCommandTypeLockSSO = 3,
  AWCommandTypeCustom = 4,
};

enum AWComplianceResult : int8_t;

SWIFT_CLASS_NAMED("ComplianceEvaluationController")
@interface AWComplianceEvaluationController : NSObject
/// Evaluate whether the device and app are compliant with the configured policies.
/// The app will be notified of the result of the compliance via complianceStatus.
/// If the result is <code>.noncompliant</code> then the SDK may take various actions including blocking the
/// UI or wiping the app.
/// Policy evaluation will be scheduled onto a background thread so this method will not block.
/// It is safe to call this method directly from a UI thread.
/// \param complianceStatus result of the evaluateCompliance checks.
///
- (void)evaluateComplianceStatusWithCompletion:(void (^ _Nonnull)(enum AWComplianceResult))completionHandler;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(int8_t, AWComplianceResult, "ComplianceResult", open) {
/// The compliance of the device and application could not be evaluated.
/// This may occur if the compliance rules have not yet been downloaded from the server.
  AWComplianceResultInapplicable = 0,
/// The device and app are compliant with the checks that were run.
  AWComplianceResultCompliant = 1,
/// The device or app is not compliant with the checks that were run.
  AWComplianceResultNoncompliant = 2,
};


/// @brief        Compliance payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the compliance group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("CompliancePayload")
@interface AWCompliancePayload : ProfilePayload
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull kComplianceStatusKey;)
+ (NSString * _Nonnull)kComplianceStatusKey SWIFT_WARN_UNUSED_RESULT;
/// A boolean indicating if compromised (jailbroken) devices should be prevented.
@property (nonatomic, readonly) BOOL preventCompromisedDevices;
/// A boolean indicating if device restorations should be prevented.
@property (nonatomic, readonly) BOOL preventRestoringBackupDevices;
/// An array of actions to be performed if the device is compromised.
@property (nonatomic, readonly, strong) NSArray * _Nonnull preventCompromisedDevicesActions;
/// A boolean indicating if compromised (jailbroken) devices should be prevented.
@property (nonatomic, readonly) BOOL enableCompromisedProtection;
/// A string for the id of the compromised policy.
@property (nonatomic, readonly, copy) NSString * _Nullable compromisedPolicyID;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWComplianceStatus, "ComplianceStatus", closed) {
  AWComplianceStatusUnknown = 0,
  AWComplianceStatusAllowed = 1,
  AWComplianceStatusBlocked = 2,
  AWComplianceStatusCompliant = 3,
  AWComplianceStatusNonCompliant = 4,
  AWComplianceStatusNotAvailable = 5,
  AWComplianceStatusNotApplicable = 6,
  AWComplianceStatusPendingComplianceCheck = 7,
  AWComplianceStatusPendingComplianceCheckForAPolicy = 8,
  AWComplianceStatusRegistrationActive = 9,
  AWComplianceStatusRegistrationExpired = 10,
  AWComplianceStatusQuarantined = 11,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWConfigurationProfileType, "ConfigurationProfileType", closed) {
  AWConfigurationProfileUnknown SWIFT_COMPILE_NAME("unknown") = 0,
  AWConfigurationProfileAgent SWIFT_COMPILE_NAME("agent") = 5,
  AWConfigurationProfileBrowser SWIFT_COMPILE_NAME("browser") = 7,
  AWConfigurationProfileContentLocker SWIFT_COMPILE_NAME("contentLocker") = 9,
  AWConfigurationProfileSharedDevice SWIFT_COMPILE_NAME("sharedDevice") = 13,
  AWConfigurationProfileSDKV2 SWIFT_COMPILE_NAME("sdk") = 21,
  AWConfigurationProfileSDKV2AppWrapping SWIFT_COMPILE_NAME("sdkAppWrapping") = 22,
  AWConfigurationProfileBoxer SWIFT_COMPILE_NAME("boxer") = 32,
  AWConfigurationProfileMTD SWIFT_COMPILE_NAME("mtd") = 41,
  AWConfigurationProfileBoxerV2 SWIFT_COMPILE_NAME("boxerV2") = 100032,
};


SWIFT_PROTOCOL_NAMED("ConsoleCommand")
@protocol AWConsoleCommand
@property (nonatomic, readonly, copy) NSString * _Nonnull UUID;
@property (nonatomic, readonly) enum AWCommandType type;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull commandInfo;
@end


SWIFT_PROTOCOL_NAMED("ConsoleCommandResponse")
@protocol AWConsoleCommandResponse
@property (nonatomic, readonly) enum AWCommandStatus status;
@property (nonatomic, readonly, copy) NSString * _Nonnull payloadIdentifier;
@property (nonatomic, readonly, copy) NSString * _Nonnull commandTarget;
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, id> *> * _Nullable certificateResponse;
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, id> *> * _Nullable installedProfilesResponse;
@end


SWIFT_PROTOCOL_NAMED("ConsoleSupportInformation")
@protocol AWConsoleSupportInformation
@property (nonatomic, readonly, copy) NSString * _Nullable email;
@property (nonatomic, readonly, copy) NSString * _Nullable telephoneNumber;
@property (nonatomic, readonly, copy) NSString * _Nullable errorMessage;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWContentFilterType, "ContentFilterType", closed) {
  AWContentFilterTypeNone = 0,
  AWContentFilterTypeWebsense = 1,
};


SWIFT_CLASS_NAMED("ContentFilteringPayload")
@interface AWContentFilteringPayload : ProfilePayload
@property (nonatomic, readonly) enum AWContentFilterType contentFilterType;
@property (nonatomic, readonly) NSInteger contentFilterProxyId;
@property (nonatomic, readonly, copy) NSString * _Nullable websensePacAddress;
@property (nonatomic, readonly) NSInteger websenseAccountId;
@property (nonatomic, readonly, copy) NSString * _Nullable websenseSecurityKey;
@property (nonatomic, readonly) NSInteger websenseProxyId;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ControllerCommandManagementDelegate")
@protocol AWControllerCommandManagementDelegate
- (void)controllerDidStartLoadingCommands;
- (void)controllerDidFailToLoadCommandsWithError:(NSError * _Nonnull)error;
- (void)controllerDidFinishLoadingCommands;
@end


/// @brief     Custom payload that is contained within a ‘AWProfile’.
/// @version   6.0
SWIFT_CLASS_NAMED("CustomPayload")
@interface AWCustomPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSString * _Nullable settings;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("CustomerLogger")
@interface AWCustomerLogger : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWCustomerLogger * _Nonnull sharedInstance;)
+ (AWCustomerLogger * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
- (void)logWithError:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithWarning:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithInfo:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithVerbose:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP5AWSDK20DeviceEnrollmentInfo_")
@protocol DeviceEnrollmentInfo
@property (nonatomic, readonly, copy) NSString * _Nonnull organizationGroup;
@property (nonatomic, readonly, copy) NSString * _Nonnull hostName;
@end


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

@protocol AWSharedDeviceInformation;

@interface DeviceInformationController (SWIFT_EXTENSION(AWSDK))
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) DeviceInformationController * _Nonnull sharedController;)
+ (DeviceInformationController * _Nonnull)sharedController SWIFT_WARN_UNUSED_RESULT;
/// The Device Services URL which the current device used for enrollment/authentication.
@property (nonatomic, readonly, copy) NSString * _Nullable deviceServicesURL;
/// The current Single Sign On Status for this device.
/// Can be <code>enabled</code> or <code>disabled</code>
@property (nonatomic, readonly) enum AWSSOStatus ssoStatus;
/// Refresh the current device compromised status.
/// Starts a flow to refresh/recheck whether or no the current device is compromised.
/// Results will be returned via the completion block that is passed in as a parameter.
/// <ul>
///   <li>
///     See: DeviceCompromiseStatusRefreshCompletionBlock
///   </li>
/// </ul>
/// \param completion The completion block to execute once the device compromised status has been refreshed.
/// completion block is called with (isJailbroken: Bool, evaluationToken: String, evaluationIdentifier: String)
/// NOTE:- evaluationToken is always an empty string.
///
- (void)refreshDeviceCompromisedStatusWithCompletion:(void (^ _Nonnull)(BOOL, NSString * _Nonnull, NSString * _Nullable))completion;
/// Fetch Console supplied application assignment information.
/// Fetches information from the WS1 management console about the current application assignment. The results will be returned via the completion block passed in as a
/// parameter. Fetched information includes: enrollmentStatus, complianceStatus, isManaged, consoleVersion
/// <ul>
///   <li>
///     See: DeviceInformation protocol
///   </li>
/// </ul>
/// \param completion The completion block to execute once the device information has been fetched.
///
- (void)fetchApplicationAssignmentStatusWithCompletion:(void (^ _Nonnull)(id <AWApplicationStatusInformation> _Nullable, id <AWSharedDeviceInformation> _Nullable, NSError * _Nullable))completion;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWDeviceManagmentType, "DeviceManagmentType", closed) {
  AWDeviceManagmentTypeNotManaged = 0,
  AWDeviceManagmentTypeManagedByMDM = 1,
  AWDeviceManagmentTypeManagedByMAM = 2,
  AWDeviceManagmentTypeQuarantine = 3,
  AWDeviceManagmentTypeApplication = 4,
  AWDeviceManagmentTypeWorkspaceOne = 5,
  AWDeviceManagmentTypeOffline = 6,
  AWDeviceManagmentTypeUnknown = 7,
};


SWIFT_CLASS_NAMED("EnrollmentAccount")
@interface AWEnrollmentAccount : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nullable instancetype)initWithActivationCode:(NSString * _Nullable)activationCode username:(NSString * _Nonnull)username password:(NSString * _Nonnull)password OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWEnrollmentAccount (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly) NSInteger identifier SWIFT_DEPRECATED_MSG("Deprecated in favour of `retrieveUserInfo(completionHandler: )` API. This will return -1 always.");
@property (nonatomic, readonly, copy) NSString * _Nonnull activationCode;
@property (nonatomic, readonly, copy) NSString * _Nonnull username;
@property (nonatomic, readonly, copy) NSString * _Nonnull password;
@property (nonatomic, readonly) BOOL isAccountAuthenticated SWIFT_DEPRECATED_MSG("This value will always be false as the account identifier will be missing.");
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWEnrollmentAuthenticationCredentials, "EnrollmentAuthenticationCredentialsType", closed) {
  AWEnrollmentAuthenticationCredentialsNone = 0,
  AWEnrollmentAuthenticationCredentialsPin = 1,
  AWEnrollmentAuthenticationCredentialsUsernamePassword = 2,
  AWEnrollmentAuthenticationCredentialsCertificate = 3,
  AWEnrollmentAuthenticationCredentialsCertificateWithPin = 4,
  AWEnrollmentAuthenticationCredentialsAuthorizationToken = 5,
  AWEnrollmentAuthenticationCredentialsSso = 6,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWEnrollmentStatus, "EnrollmentStatus", closed) {
  AWEnrollmentStatusDeviceNotFound = 0,
  AWEnrollmentStatusDiscovered = 1,
  AWEnrollmentStatusRegistered = 2,
  AWEnrollmentStatusEnrollmentInProgress = 3,
  AWEnrollmentStatusEnrolled = 4,
  AWEnrollmentStatusEnterpriseWipePending = 5,
  AWEnrollmentStatusDeviceWipePending = 6,
  AWEnrollmentStatusRetired = 7,
  AWEnrollmentStatusUnenrolled = 8,
  AWEnrollmentStatusUnknown = 9,
/// An error occurred during enrollment
  AWEnrollmentStatusInvalid = 10,
/// Custom Statuses
  AWEnrollmentStatusBootstrapped = 0x10CC4EAD,
  AWEnrollmentStatusDeviceCheckedIn = 0x10CC4EAE,
};


SWIFT_CLASS_NAMED("GeofenceArea")
@interface AWGeofenceArea : NSObject
@property (nonatomic, readonly) CLLocationCoordinate2D center;
@property (nonatomic, readonly) CLLocationDistance radius;
@property (nonatomic, readonly, copy) NSString * _Nullable uniqueID;
@property (nonatomic, readonly, copy) NSString * _Nullable name;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// @brief       Geofence payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the geofence group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("GeofencePayload")
@interface AWGeofencePayload : ProfilePayload
/// A boolean indicating if geofencing should be enabled.
@property (nonatomic, readonly) BOOL isEnabled;
/// An array containing all geofence area values.
@property (nonatomic, readonly, copy) NSArray<AWGeofenceArea *> * _Nonnull geofenceAreas;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("LoggingPayload")
@interface AWLoggingPayload : ProfilePayload
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("NetworkAccessPayload")
@interface AWNetworkAccessPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enableNetworkAccess;
@property (nonatomic, readonly) enum AWNetworkAccessAllowCellular allowCellularConnection;
@property (nonatomic, readonly) enum AWNetworkAccessAllowWiFi allowWifiConnection;
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedSSIDs;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkActivityStatus, "NetworkActivityStatus", closed) {
/// Initial/unknown state
  AWNetworkActivityInit SWIFT_COMPILE_NAME("unknown") = 0,
/// Normal
  AWNetworkActivityNormal SWIFT_COMPILE_NAME("normal") = 1,
/// When Either there is no network (no wifi or cellular) or in airplane mode.
  AWNetworkActivityNetworkNotReachable SWIFT_COMPILE_NAME("networkNotReachable") = 2,
/// Celluar data is completely disabled
  AWNetworkActivityCellularDisabled SWIFT_COMPILE_NAME("cellularDataConnectionDisabled") = 3,
/// Celluar data is disabled while roaming
  AWNetworkActivityRoaming SWIFT_COMPILE_NAME("cellularDataConnectionDisabledWhileRoaming") = 4,
/// Proxy setup failed.
  AWNetworkActivityProxyFailed SWIFT_COMPILE_NAME("proxySetupFailed") = 5,
/// offline access is not allowed or maximum offline time has reached
  AWNetworkOfflineNotAllowed SWIFT_COMPILE_NAME("offlineNotAllowed") = 6,
};


/// @brief       OfflineAccessPayload payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the Offline Access group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("OfflineAccessPayload")
@interface AWOfflineAccessPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enableOfflineAccess;
@property (nonatomic, readonly) NSTimeInterval maximumSecondsAllowedOffline;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP5AWSDK17PKCS12Certificate_")
@protocol PKCS12Certificate
@property (nonatomic, readonly, copy) NSData * _Nonnull data;
@property (nonatomic, readonly, copy) NSString * _Nonnull importExportPassphrase;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWPasscodeMode, "PasscodeMode", closed) {
  AWPasscodeModeOff = 0,
  AWPasscodeModeNumeric = 1,
  AWPasscodeModeAlphanumeric = 2,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWPersistentTokenType, "PersistentTokenType", closed) {
  AWPersistentTokenTypeAuthentication = 0,
  AWPersistentTokenTypeSigning = 1,
  AWPersistentTokenTypeEncryption = 2,
  AWPersistentTokenTypeAll = 3,
};


/// @brief		Represents an unmanaged configuration profile.
/// @details     Profile containing multiple payloads that are used to configure a device and application.
/// @version     6.0
SWIFT_CLASS_NAMED("Profile")
@interface AWProfile : NSObject
- (nonnull instancetype)initWithInfo:(NSDictionary<NSString *, id> * _Nonnull)info OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface AWProfile (SWIFT_EXTENSION(AWSDK))
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end


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

@class AWRestrictionsPayload;
@class AWWebsiteFilteringPayload;

@interface AWProfile (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, copy) NSString * _Nullable displayName;
@property (nonatomic, copy) NSString * _Nullable comments;
@property (nonatomic, copy) NSString * _Nullable identifier;
@property (nonatomic, copy) NSString * _Nullable organization;
@property (nonatomic, copy) NSString * _Nullable uuid;
@property (nonatomic) NSInteger version;
@property (nonatomic) enum AWConfigurationProfileType profileType;
@property (nonatomic) BOOL isSDKProfile;
@property (nonatomic) NSTimeInterval timeStamp;
/// @name SDK Profile Payloads
@property (nonatomic, strong) AWGeofencePayload * _Nullable geofencePayload;
@property (nonatomic, strong) AWAnalyticsPayload * _Nullable analyticsPayload;
@property (nonatomic, strong) AWRestrictionsPayload * _Nullable restrictionsPayload;
@property (nonatomic, strong) AWCompliancePayload * _Nullable compliancePayload;
@property (nonatomic, strong) AWAuthenticationPayload * _Nullable authenticationPayload;
@property (nonatomic, strong) AWBrandingPayload * _Nullable brandingPayload;
@property (nonatomic, strong) BreezyPayload * _Nullable breezyPayload;
@property (nonatomic, strong) AWCustomPayload * _Nullable customPayload;
@property (nonatomic, strong) AWOfflineAccessPayload * _Nullable offlineAccessPayload;
@property (nonatomic, strong) AWNetworkAccessPayload * _Nullable networkAccessPayload;
@property (nonatomic, strong) AWContentFilteringPayload * _Nullable contentFilteringPayload;
@property (nonatomic, strong) AWWebsiteFilteringPayload * _Nullable websiteFilteringPayload;
@property (nonatomic, strong) AWLoggingPayload * _Nullable loggingPayload;
@end


typedef SWIFT_ENUM_NAMED(NSInteger, AWProxyType, "ProxyType", closed) {
  AWProxyTypeNone = 0,
  AWProxyTypeMag = 1,
  AWProxyTypeStandard = 2,
};


/// Public Certificate object holding information about X509 certificates.
SWIFT_CLASS("_TtC5AWSDK17PublicCertificate")
@interface PublicCertificate : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface PublicCertificate (SWIFT_EXTENSION(AWSDK))
/// Function to retrieve the corresponding value for the given Attribute. Check CertificateInfoKey for possible keys
/// that can be used to retrieve the certificates.
/// \param key key string from the list CertificateInfoKey
///
///
/// returns:
/// return a value of type mentioned in CertificateInfoKey, nil if the key is not identified or value is not available on the certificate.
- (id _Nullable)valueForCertificateAttribute:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWRequeryType, "RequeryType", closed) {
  AWRequeryApplist SWIFT_COMPILE_NAME("appList") = 1,
  AWRequeryDeviceInfo SWIFT_COMPILE_NAME("deviceInfo") = 2,
  AWRequeryProfileInfo SWIFT_COMPILE_NAME("profileInfo") = 3,
  AWRequerySecurityInfo SWIFT_COMPILE_NAME("securityInfo") = 4,
};


/// @brief        Access control payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the access control group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("RestrictionsPayload")
@interface AWRestrictionsPayload : ProfilePayload
/// A boolean indicating if Copy from the outside and Paste to inside is allowed *
@property (nonatomic, readonly) BOOL enableCopyAndPasteInTo;
/// A boolean indicating if Copy from the inside and Paste to outside is allowed *
@property (nonatomic, readonly) BOOL enableCopyAndPasteOut;
/// A boolean indicating if screen capture is allowed *
@property (nonatomic, readonly) BOOL enableScreenshot;
/// A boolean indicating whether to only allow open document in allowed list of app
@property (nonatomic, readonly) BOOL restrictDocumentToApps;
/// A list of Apps that are allowed to open documents
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedApplications;
/// A boolean indicating if printing is allowed.
@property (nonatomic, readonly) BOOL printingEnabled;
/// A boolean indicating if data loss prevention is enabled.
@property (nonatomic, readonly) BOOL enableDataLossPrevention;
/// A boolean indicating if watermark should be displayed on content that has watermark.
@property (nonatomic, readonly) BOOL enableWatermark;
/// The string that indicate the watermark overlay on the content.
@property (nonatomic, readonly, copy) NSString * _Nullable watermarkOverlay;
/// A boolean indicating if third party keyboards are blocked. Not blocked by default
@property (nonatomic, readonly) BOOL preventCustomKeyboards;
@property (nonatomic, readonly) BOOL enableMailComposing;
@property (nonatomic, readonly) BOOL enableLocationReporting;
@property (nonatomic, readonly) BOOL enableDataBackup;
@property (nonatomic, readonly) BOOL enableCameraAccess;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWRestrictionsPayload (SWIFT_EXTENSION(AWSDK))
/// The reverse value of enableCopyAndPasteInTo *
@property (nonatomic, readonly) BOOL preventCopyAndPasteInTo;
/// The reverse value of enableCopyAndPasteOut *
@property (nonatomic, readonly) BOOL preventCopyPaste;
@end


SWIFT_CLASS_NAMED("SDKBeaconTransmitter")
@interface AWSDKBeaconTransmitter : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWSDKBeaconTransmitter * _Nonnull sharedTransmitter;)
+ (AWSDKBeaconTransmitter * _Nonnull)sharedTransmitter SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;

@interface AWSDKBeaconTransmitter (SWIFT_EXTENSION(AWSDK))
/// A method to return Timestamp for last successful Beacon.
///
/// returns:
/// Timestamp for last successful Beacon as Date object.
- (NSDate * _Nullable)lastSuccessfulBeaconTimeStamp SWIFT_WARN_UNUSED_RESULT;
/// Send a Beacon with APNS Token to console.
/// \param updatedAPNSToken APNS Token to send to Console
///
/// \param completion Completion Block to execute on Beacon Send completion
///
- (void)sendBeaconWithUpdatedAPNSToken:(NSString * _Nonnull)updatedAPNSToken completion:(void (^ _Nullable)(BOOL, NSError * _Nullable))completion;
/// Method to schedule Sending Beacon at specific time interval. This method will call completion block only on
/// initial attempt to send beacon.
/// \param transmitFrequency Frequency to send beacon to console. Setting Beacon to less than 60 seconds will reset to 60.
///
/// \param onInitialBeaconSendCompletion Completion Block to be called on initial beacon sent and scheduled future Beacon Sends.
///
- (void)startSendingDeviceStatusBeaconWithTransmitFrequency:(NSTimeInterval)transmitFrequency onInitialBeaconSendCompletion:(void (^ _Nullable)(BOOL, NSError * _Nullable))onInitialBeaconSendCompletion;
/// Method to stop current Send Beacon Operation.
- (void)stopSendingDeviceStatusBeacon;
/// Send Device Status Beacon to Console.
/// \param completion Completion block to be called with result of the network operation.
///
- (void)sendDeviceStatusBeaconWithCompletion:(void (^ _Nullable)(BOOL, NSError * _Nullable))completion;
@end


SWIFT_CLASS_NAMED("SSLPinningInterface")
@interface AWSSLPinningInterface : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWSSLPinningInterface (SWIFT_EXTENSION(AWSDK))
+ (NSArray<NSString *> * _Nullable)getStoredPublicKeysForPinningForHost:(NSString * _Nonnull)host SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWSSOStatus, "SSOStatus", closed) {
  AWSSOStatusUnknown = 0,
  AWSSOStatusEnabled = 1,
  AWSSOStatusDisabled = 2,
};

typedef SWIFT_ENUM_NAMED(NSUInteger, AWSecTrustStrictness, "SecTrustStrictness", closed) {
  AWSecTrustStrictnessIgnore = 0,
  AWSecTrustStrictnessStrict = 1,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWSettingLogLevel, "SettingLogLevel", closed) {
  AWSettingLogLevelOff = -1,
  AWSettingLogLevelError = 0,
  AWSettingLogLevelWarning = 1,
  AWSettingLogLevelInformation = 2,
  AWSettingLogLevelDebug = 3,
};

enum AWSharedDeviceStatus : NSUInteger;

/// Protocol describing  a type to hold information representing CICO workflow based Shared Device
SWIFT_PROTOCOL_NAMED("SharedDeviceInformation")
@protocol AWSharedDeviceInformation
/// Boolean value representing whether Check-In, Check-out is enabled and allowed for current device enrollment
@property (nonatomic, readonly) BOOL isDeviceStagingEnabled;
/// Enum value representing current device sharing status
@property (nonatomic, readonly) enum AWSharedDeviceStatus sharedDeviceStatus;
/// Opaque string representing current CICO session maintained by the UEM Console
@property (nonatomic, readonly, copy) NSString * _Nullable userContextID;
/// Timestamp of this information.
@property (nonatomic, readonly, copy) NSDate * _Nonnull timestamp;
@end

/// @frozen public enum representing Device Sharing Status
typedef SWIFT_ENUM_NAMED(NSUInteger, AWSharedDeviceStatus, "SharedDeviceStatus", closed) {
/// Device Sharing status is not known at this moment. This also reflects that CICO is not possible with in current enrollment.
  AWSharedDeviceStatusUnknown = 0,
/// Device is Checked-In and there is no active user currently using this device.
  AWSharedDeviceStatusCheckedInUnassigned = 1,
/// Device is Checked-Out and assigned to a user
  AWSharedDeviceStatusCheckedOutAssigned = 2,
};


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


@interface SupportInformationController (SWIFT_EXTENSION(AWSDK))
/// The shared instance to use to retrieve the support information
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SupportInformationController * _Nonnull sharedInstance;)
+ (SupportInformationController * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// Retrieve the support information for email and telephone that’s configured on console
/// @return AWError.SDK.General.moduleNotInitialized If calling this API directly without initializing the
/// SDK and not reaching the delegate call for initial check done then an error will occur
/// @return AWError.SDK.CoreNetwork.CTL.createRequestFailure(error.localizedDescription) - network related failure
/// @return AWError.SDK.General.jsonDeserializationFailed - could not unwrap the response data which is supposed to be JSON
/// @return AWError.SDK.General.configurationValuesUnavailable.error - An Error was returned on the server. Check the error message for a possible message
/// @return SupportInformation If an object is returned, check that there is no error message and use the data accordingly.
- (void)retrieveSupportInfoWithCompletion:(void (^ _Nonnull)(id <AWConsoleSupportInformation> _Nullable, NSError * _Nullable))completion;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWUnenrolledReason, "UnenrollmentReason", closed) {
  AWUnenrolledReasonServerUnenrolled = 0,
  AWUnenrolledReasonUserFailedToAuthenticate = 1,
};


/// The UnmanagedCompliancePayload is a settings payload that comes down from the WS1 Server inside the settings profile.
/// This payload contains the information related to on device compliance, also refered to as unmanaged compliance. Specifically
/// the sdk receives the complianceDeliveryEndpoint and the complianceReportingEndpoint urls from this payload which tell where
/// the compliance settings should be fetched from and where the compliance results should be reported to.
SWIFT_CLASS_NAMED("UnmanagedComplianceConfigurationPayload")
@interface AWUnmanagedCompliancePayload : ProfilePayload
/// The url of the delivery endpoint from which the compliance policies should be fetched.
@property (nonatomic, readonly, copy) NSURL * _Nullable complianceDeliveryEndpoint;
/// The url of the reporting endpoint where the compliance evaluation results should be reported to.
@property (nonatomic, readonly, copy) NSURL * _Nullable complianceReportingEndpoint;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("UserInformation")
@interface AWUserInformation : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull userName;
@property (nonatomic, readonly, copy) NSString * _Nonnull userIdentifier;
@property (nonatomic, readonly, copy) NSString * _Nonnull firstName;
@property (nonatomic, readonly, copy) NSString * _Nonnull lastName;
@property (nonatomic, readonly, copy) NSString * _Nonnull email;
@property (nonatomic, readonly, copy) NSString * _Nonnull domain;
@property (nonatomic, readonly, copy) NSString * _Nonnull groupID;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


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


@interface UserInformationController (SWIFT_EXTENSION(AWSDK))
/// The singleton instance of UserInformationController to use for retrieving the the current user’s enrollment information.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) UserInformationController * _Nonnull sharedInstance;)
+ (UserInformationController * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// @brief Retrieve the user information.
/// @return If calling this API directly without initializing the SDK and not reaching the delegate call for initial check done then an error will occur
- (void)retrieveUserInfoWithCompletionHandler:(void (^ _Nonnull)(AWUserInformation * _Nullable, NSError * _Nullable))completionHandler;
@end


/// This class provide methods to cleanup SDK container data.
SWIFT_CLASS_NAMED("WS1SDKContainerCleaner")
@interface AWWS1SDKContainerCleaner : NSObject
/// This methods performs a thorough cleanup of all of the VMWare
/// Workspace One SDK Data. Invoking this method will cause all of the
/// SDK data to be deleted for this app and any app sharing keychain with
/// this app. The data cannot be recovered again.
- (void)destroyContainerData;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC5AWSDK18WS1SDKDataProvider")
@interface WS1SDKDataProvider : NSObject
/// Provides current SDK logs data encoded in utf8 string format
///
/// throws:
/// error of type <code>NSError</code> with domain <code>AWSDKErrorDomains.sdkDataProvider</code> and code defined by enum <code>AWSDKLogDataProviderError</code>
///
/// returns:
/// current SDK logs in a <code>Data</code>
- (NSData * _Nullable)fetchSDKLogDataAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Provides unsent compromised logs data encoded in utf8 string format
///
/// throws:
/// error of type <code>NSError</code> with domain <code>AWSDKErrorDomains.sdkDataProvider</code> and code defined by enum <code>AWSDKLogDataProviderError</code>
///
/// returns:
/// compromised logs in a <code>Data</code>
- (NSData * _Nullable)fetchCompromisedLogDataAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWWebsiteFilterType, "WebsiteFilterType", closed) {
  AWWebsiteFilterTypeUnknown = 0,
  AWWebsiteFilterTypeDeny = 1,
  AWWebsiteFilterTypeAllow = 2,
};


SWIFT_CLASS_NAMED("WebsiteFilteringPayload")
@interface AWWebsiteFilteringPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull websiteFilterCategories;
@property (nonatomic, readonly) NSInteger websiteFilterId;
@property (nonatomic, readonly) enum AWWebsiteFilterType filterType;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

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

#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.7 (swiftlang-5.7.0.127.4 clang-1400.0.29.50)
#ifndef AWSDK_SWIFT_H
#define AWSDK_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 "-Wduplicate-method-match"
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#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 __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
#else
# define SWIFT_RELEASES_ARGUMENT
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#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 defined(__has_attribute) && __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 __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
#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(__cplusplus)
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT noexcept
#endif
#else
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT 
#endif
#endif
#if defined(__cplusplus)
#if !defined(SWIFT_CXX_INT_DEFINED)
#define SWIFT_CXX_INT_DEFINED
namespace swift {
using Int = ptrdiff_t;
using UInt = size_t;
}
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreLocation;
@import Foundation;
@import ObjectiveC;
@import Security;
#endif

#import <AWSDK/AWSDK.h>

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

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

#if defined(__OBJC__)
@class NSString;
@class UIColor;
@class UIImage;

SWIFT_CLASS("_TtC5AWSDK10AWBranding")
@interface AWBranding : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWBranding * _Nonnull sharedBranding;)
+ (AWBranding * _Nonnull)sharedBranding SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// @return Retrieve from the payload the organization name set in console. nil will be returned if nothing was present
- (NSString * _Nullable)organizationName SWIFT_WARN_UNUSED_RESULT;
/// The toolbar color
/// There are no uses of the toolbar color within the SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)toolbarColor SWIFT_WARN_UNUSED_RESULT;
/// The toolbar text color
/// There are no uses of the toolbar text color within the SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)toolbarTextColor SWIFT_WARN_UNUSED_RESULT;
/// The primary color
/// In SDK Screens the primary color is used to brand the “NEXT” button color seen on multiple SDK authentication screens.
- (UIColor * _Nullable)primaryColor SWIFT_WARN_UNUSED_RESULT;
/// The secondary color
/// There are no uses of the secondary color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)secondaryColor SWIFT_WARN_UNUSED_RESULT;
/// The primary text color
/// There are no uses of the primary text color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)primaryTextColor SWIFT_WARN_UNUSED_RESULT;
/// The secondary text color
/// There are no uses of the secondary text color within the  SDK screens.
/// This value exists incase the application wishes to use it on their own screens.
- (UIColor * _Nullable)secondaryTextColor SWIFT_WARN_UNUSED_RESULT;
/// @brief Attempt to retrieve the background image set by console or plist entry, or nil if not set.
/// @description If console branding is enabled then the downloaded image from console will be returned if it was set and downloaded.
/// If the file could not be downloaded or was not set, then attempt to retrieve an image from the plist entry set in AWSDKDefaultSettings.
/// If the image does not exist or was not set, nil is returned. The appropriate image will be returned based on device currently being used.
- (UIImage * _Nullable)primaryImage SWIFT_WARN_UNUSED_RESULT;
/// @brief Attempt to retrieve the company logo image set by console or plist entry or the default VMWare logo.
/// @description If console branding is enabled then the downloaded image from console will be returned if it was set and downloaded.
/// If the file could not be downloaded or was not set, then attempt to retrieve an image from the plist entry set in AWSDKDefaultSettings.
/// If the image does not exist or was not set, nil is returned. The appropriate image will be returned based on device currently being used.
- (UIImage * _Nullable)secondaryImage SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC5AWSDK12AWController")
@interface AWController : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum AWCertsTrustStore : NSUInteger;
enum AWSecTrustStrictness : NSUInteger;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This method will validate given serverTrust against device or custom trust store based on input trustStore type
/// <ul>
///   <li>
///     Return True if serverTrust evaluation result is trusted else false.
///   </li>
/// </ul>
/// \param serverTrust trust that needs to be evaluated
/// trustStore: Store that needs to be choose for trust validation
/// strictness: Based on strictness value the return result will be vary incase if SecTrustResultType is recoverableTrustFailure
/// if strictness level ignore the SecTrust can be trusted return value will be true
/// else SecTrust cannot be trusted the return value will be false
///
- (BOOL)validateServerTrust:(SecTrustRef _Nonnull)serverTrust trustStore:(enum AWCertsTrustStore)trustStore strictness:(enum AWSecTrustStrictness)strictness SWIFT_WARN_UNUSED_RESULT;
@end

@protocol CommandHandler;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (void)loadCommands;
- (void)registerCommandHandler:(id <CommandHandler> _Nonnull)commandHandler;
@end

@protocol PKCS12Certificate;
@class NSError;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to retrieve all the SDK stored Identity certificate information.
/// Call this API once SDK is initialised to get the latest set of stored certificates.
/// All valid PKCS12Certificate along with their passwords will be returned.
/// Completion handler won’t called on Main Thread, but on a concurrent thread with
/// QOS set to background.
/// \param completion A block to be executed once certificate retrieval completes.
/// Certificate Map: Dictionary with usage as keys & array of key
/// value compliant certificate object. See
/// CertificateUsageKey and CertificateInfoKey.
/// Error: Any error while retrieval.
///
- (void)exportIdentityCertificatesWithCompletion:(void (^ _Nonnull)(NSDictionary<NSString *, NSArray<id <PKCS12Certificate>> *> * _Nullable, NSError * _Nullable))completion;
@end

@class PublicCertificate;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to retrieve all the SDK stored certificate information
/// along with its usage. Call this API once SDK is initialized to get the latest
/// set of stored certificates.
/// Completion handler won’t called on Main Thread, but on a concurrent thread with
/// QOS set to background.
/// \param completion A block to be executed once certificate retrieval completes.
/// Certificate Map: Dictionary with usage as keys & array of key
/// value compliant certificate object. See
/// CertificateUsageKey and CertificateInfoKey.
/// Error: Any error while retrieval.
///
- (void)retrieveStoredPublicCertificatesWithCompletion:(void (^ _Nonnull)(NSDictionary<NSString *, NSArray<PublicCertificate *> *> * _Nullable, NSError * _Nullable))completion;
@end

@class NSData;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to unwrap data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be unwrapped
///
///
/// throws:
/// If any error occurs during unwrapping, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the unwrapped version of the passed-in data
- (NSData * _Nullable)unwrap:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function is used to wrap data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be wrapped
///
///
/// throws:
/// If any error occurs during wrapping, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the wrapped version of the passed-in data
- (NSData * _Nullable)wrap:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


@interface AWController (SWIFT_EXTENSION(AWSDK))
/// This function is used to decrypt data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be decrypted
///
///
/// throws:
/// If any error occurs during decryption, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the decrypted version of the passed-in data
- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// This function is used to encrypt data passed in as the sole parameter with the Application Key generated from the successful initialization of AWSDK
/// \param data The data of type <code>Data</code> that is to be encrypted
///
///
/// throws:
/// If any error occurs during encryption, throws an instance of NSError that describes the problem.
/// The error codes are defined by enum AWSDKCryptError.
///
/// returns:
/// An instance of type <code>Data</code> will be returned which represents the encrypted version of the passed-in data
- (NSData * _Nullable)encrypt:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end

@class AWProfile;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (AWProfile * _Nullable)sdkProfile SWIFT_WARN_UNUSED_RESULT;
/// List of downloaded profiles from Server. This property will return a cached list of profiles. If you want to retrieve profiles please make sure you call
@property (nonatomic, readonly, copy) NSArray<AWProfile *> * _Nonnull profiles;
- (void)setProfilesToRequest:(NSArray<NSString *> * _Nonnull)profileTypes;
@end

@class NSURLProtectionSpace;
@class NSURLAuthenticationChallenge;
@class NSURLCredential;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// Use this API to confirm if SDK can handle the challenge thrown by the URLSession request.
/// SDK can handle only client authentication requests - Basic / NTLM / Client Certificate based.
/// \param protectionSpace URLProtectionSpace object from  the thrown challenge
///
///
/// throws:
/// Throws when SDK cannot handle the provided protection space,.
- (BOOL)canHandleProtectionSpace:(NSURLProtectionSpace * _Nullable)protectionSpace withError:(NSError * _Nullable * _Nullable)error;
/// This API is used to handle the authentication challenge thrown by any network requests
/// made by the application.
/// SDK can handle only client authentication requests - Basic / NTLM / Client Certificate based.
/// Make use of <code>canHandle(protectionSpace:)</code> API to confirm if SDK can handle the challenge,
/// based on the settings configured by admin and the current state of the SDK store.
/// \param challenge Challenge object thrown by the URLSession request
///
/// \param completionHandler Completion handler with credentials and disposition of the challenge
///
///
/// returns:
/// Boolean representing if SDK will take care of the completion or not. False means, SDK callinng the completio handler is not guaranteed,
- (BOOL)handleChallengeForURLSession:(NSURLAuthenticationChallenge * _Nullable)challenge completionHandler:(void (^ _Nullable)(enum NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler SWIFT_WARN_UNUSED_RESULT;
- (void)clearAndRefetchClientCertificateCredentialsWithCompletionHandler:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completionHandler;
- (BOOL)setPendingCertificateRetryWithTimeout:(double)timeout maxAttempts:(NSInteger)maxAttempts SWIFT_WARN_UNUSED_RESULT;
@end

enum AWSSOStatus : NSInteger;

@interface AWController (SWIFT_EXTENSION(AWSDK))
- (NSString * _Nullable)deviceServicesURL SWIFT_WARN_UNUSED_RESULT;
- (void)queryDeviceEnrollmentStatus:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
- (void)sendLogDataWithCompletion:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
@property (nonatomic, readonly) enum AWSSOStatus ssoStatus;
@end

@class AWEnrollmentAccount;
@protocol DeviceEnrollmentInfo;

@interface AWController (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly, strong) AWEnrollmentAccount * _Nullable account;
@property (nonatomic, readonly, strong) id <DeviceEnrollmentInfo> _Nullable enrollmentInfo;
/// This method invokes a UI with username and password fields which updates the user account with the populated
/// values after authenticating successfully. If the call to this method is done before the <code>AWControllerDelegate</code> callback
/// method <code>controllerDidCompleteVerificationWithServer:</code>, the call will not be triggered immediately.
/// It will be queued and will be triggered once SDK is done with current running operations.
/// \param completion A block object to be executed when updating the user credentials is finished.
/// The Boolean value indicates whether the update succeed and error in case it failed.
///
- (void)updateUserCredentialsWithCompletion:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completion;
@end

@protocol AWSDKDelegate;
@protocol AWControllerCommandManagementDelegate;
@class NSURL;

@interface AWController (SWIFT_EXTENSION(AWSDK))
/// Returns current AirWatch SDK Version.
@property (nonatomic, readonly, copy) NSString * _Nonnull AWSDKVersion;
/// Delegate to receive events such as received profiles, locked, initialCheckDone etc.
/// note:
///
/// Since AWController is a singleton, setting this delegate will reset previously set delegate.
/// <ul>
///   <li>
///   </li>
/// </ul>
@property (nonatomic, weak) id <AWSDKDelegate> _Nullable delegate;
/// Delegate to receive events regarding command processor.
/// If your application supports commands delivered by the console, you can listen to events such
/// as started loading commands, failed and finished loading commands.
/// note:
///
/// Since AWController is a singleton, setting this delegate will reset previously set command management delegate.
/// <ul>
///   <li>
///   </li>
/// </ul>
@property (nonatomic, weak) id <AWControllerCommandManagementDelegate> _Nullable commandManagementDelegate;
/// Callback scheme for the application to be used to flip to Anchor Applications and back from it.
@property (nonatomic, copy) NSString * _Nonnull callbackScheme;
/// Returns canUserShareLogData bool value can be used to block share logs feature.
@property (nonatomic) BOOL canUserShareLogData;
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull requestingProfiles;
/// APNS Token to pass to console for push notifications regarding profiles, etc. A beacon consisting of the
/// new APNS token is sent every time a value is set.
/// note:
///
/// To avoid unnecessary calls to console, please make sure, token value will be assigned to AWController
/// only when token value has really changed.
/// <ul>
///   <li>
///   </li>
/// </ul>
/// If the value is set to an empty string, it will be cleared from console and won’t be used for
/// push notifications anymore by the UEM console.
/// Usage :
/// if controller.APNSToken != token {
/// controller.APNSToken = token .This should send the beacon with updated token.
/// OR
/// SDKBeaconTransmitter.sharedTransmitter.sendBeacon(updatedAPNSToken: String,
/// completion: SendBeaconCompletion?)
/// }
@property (nonatomic, copy) NSString * _Nonnull APNSToken;
- (void)start;
- (void)sync;
- (void)refreshSDK;
- (BOOL)handleOpenURL:(NSURL * _Nullable)url fromApplication:(NSString * _Nullable)fromApplication SWIFT_WARN_UNUSED_RESULT;
+ (AWController * _Nonnull)clientInstance SWIFT_WARN_UNUSED_RESULT;
/// TeamID of the application. Needed for verification during flip to Anchor Application.
@property (nonatomic, copy) NSString * _Nullable teamID;
@property (nonatomic) BOOL shouldAttestApp;
@end

enum AWEnrollmentStatus : NSInteger;
enum AWNetworkActivityStatus : NSInteger;
@class NSURLRequest;

SWIFT_PROTOCOL_NAMED("AWControllerDelegate")
@protocol AWSDKDelegate
@optional
- (void)controllerWillStartRefresh;
@required
- (void)initialCheckDoneWithError:(NSError * _Nullable)error;
@optional
- (void)completedVerificationWithServer:(BOOL)success error:(NSError * _Nullable)error;
- (void)receivedProfiles:(NSArray<AWProfile *> * _Nonnull)profiles;
- (void)didReceiveEnrollmentStatus:(enum AWEnrollmentStatus)enrollmentStatus;
- (void)userChanged;
- (void)wipe;
- (void)willLock;
- (void)lock;
- (void)unlock;
- (void)stopNetworkActivity:(enum AWNetworkActivityStatus)reason;
- (void)resumeNetworkActivity;
- (void)didStartServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request;
- (void)didFailServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request;
- (void)didCompletelServerTrustValidationOnHost:(NSString * _Nonnull)host request:(NSURLRequest * _Nullable)request allowingConnection:(BOOL)allowingConnection;
- (void)didFinishPollingForPendingCertificateIssued:(BOOL)certificateIssued error:(NSError * _Nullable)error;
- (BOOL)controllerShouldShowCheckInBlocker SWIFT_WARN_UNUSED_RESULT;
- (BOOL)controllerShouldShowSecurityBlocker SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM(NSInteger, AWSDKCryptError, closed) {
  AWSDKCryptErrorStoreIsLocked = 0,
  AWSDKCryptErrorInvalidKey = 1,
  AWSDKCryptErrorInvalidOutputData = 2,
};

typedef SWIFT_ENUM(NSInteger, AWSDKEncryptedStoreError, closed) {
  AWSDKEncryptedStoreErrorStoreIsLocked = 0,
  AWSDKEncryptedStoreErrorStoreTypeNotSupported = 1,
  AWSDKEncryptedStoreErrorStoreMigrationFailed = 2,
  AWSDKEncryptedStoreErrorFileDoesNotExist = 3,
  AWSDKEncryptedStoreErrorInternalEncryptionError = 4,
  AWSDKEncryptedStoreErrorInternalError = 5,
};


SWIFT_CLASS("_TtC5AWSDK17AWSDKErrorDomains")
@interface AWSDKErrorDomains : NSObject
/// @brief Domain for initialCheckDone errors which cause the AWSDK to stop execution.
/// @description The AWSDK setup flow begins when the application starts for the first time or on
/// every time the application comes into foreground. The call to initialCheckDone occurs when it has finished its work with either
/// an error or nil if everything finished successfully.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull setup;)
+ (NSString * _Nonnull)setup SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull encryptedStore;)
+ (NSString * _Nonnull)encryptedStore SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull updateCredentials;)
+ (NSString * _Nonnull)updateCredentials SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull crypt;)
+ (NSString * _Nonnull)crypt SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull pendingCertificate;)
+ (NSString * _Nonnull)pendingCertificate SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull sdkDataProvider;)
+ (NSString * _Nonnull)sdkDataProvider SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM(NSInteger, AWSDKLogDataProviderError, closed) {
  AWSDKLogDataProviderErrorEmptyFileContent = 0,
};

typedef SWIFT_ENUM(NSInteger, AWSDKPendingCertificateFetchError, closed) {
  AWSDKPendingCertificateFetchErrorCertificateIssuancePending = 0,
  AWSDKPendingCertificateFetchErrorRetryIntervalNotReached = 1,
  AWSDKPendingCertificateFetchErrorMaximumAllowedAttemptsElapsed = 2,
  AWSDKPendingCertificateFetchErrorMissingPendingCertificateFetchRequest = 3,
  AWSDKPendingCertificateFetchErrorFailedToSavePendingCertificateRequestSecurely = 4,
  AWSDKPendingCertificateFetchErrorFailedToIdentifyIssuerForPendingCertificateRequest = 5,
};

typedef SWIFT_ENUM(NSInteger, AWSDKSetupError, closed) {
  AWSDKSetupErrorInternalError = 0,
  AWSDKSetupErrorStopSDKRequested = 1,
  AWSDKSetupErrorRegisteringApplicationBlocked = 2,
  AWSDKSetupErrorEnrollmentInformationSetup = 3,
  AWSDKSetupErrorEmptyProfiles = 4,
  AWSDKSetupErrorProxyFailedToStart = 5,
  AWSDKSetupErrorIntegratedAuthenticationCertificatesNotDownloaded = 6,
  AWSDKSetupErrorApplicationIdentityNotSet = 7,
  AWSDKSetupErrorFailedToFetchPinningCertificate = 8,
  AWSDKSetupErrorFailedToFetchEnvironmentInformationFromAnchor = 9,
  AWSDKSetupErrorCallBackSchemeNotConfigured = 10,
  AWSDKSetupErrorAirWatchApplicationSchemeNotInAllowedLists = 11,
  AWSDKSetupErrorAnchorRequiredForThirdPartyApplicationBootstrap = 12,
  AWSDKSetupErrorFailedToReportUnenrollmentStatus = 13,
  AWSDKSetupErrorUserReachedMaximumAllowedUnlockAttempts = 14,
  AWSDKSetupErrorDeviceIsCompromised = 15,
  AWSDKSetupErrorConsoleVersionNotCompatible = 16,
  AWSDKSetupErrorInvalidKeyWrappingConfiguration = 17,
  AWSDKSetupErrorProtectedDataIsUnavailable = 18,
  AWSDKSetupErrorTunnelFailedToStart = 19,
  AWSDKSetupErrorMissingExpectedRequirements = 20,
  AWSDKSetupErrorDataMigrationFailure = 21,
  AWSDKSetupErrorDeviceNotEnrolled = 22,
  AWSDKSetupErrorFailedToSetupAccessControl = 23,
  AWSDKSetupErrorApplicationNotAssigned = 24,
  AWSDKSetupErrorCredentialsFetchFailed = 25,
  AWSDKSetupErrorDeviceAlreadyEnrolled = 26,
  AWSDKSetupErrorMissingRequiredInformation = 27,
  AWSDKSetupErrorNonAirWatchConsole = 28,
  AWSDKSetupErrorEnrollmentBlockedThroughExtension = 29,
  AWSDKSetupErrorEnrollmentBlocked = 30,
  AWSDKSetupErrorSharedDeviceNotCheckedOut = 31,
  AWSDKSetupErrorServerIsNotReachableForRequiredSetup = 32,
  AWSDKSetupErrorPolicySigningCertFetchFailed = 33,
  AWSDKSetupErrorApplicationNotManaged = 34,
  AWSDKSetupErrorEnrollmentInfoNotMatched = 35,
  AWSDKSetupErrorFailedToFetchCrossClusterInfoFromAnchor = 36,
  AWSDKSetupErrorCrossClusterMisConfigurationFailure = 37,
  AWSDKSetupErrorUserCancelledEnrollment = 38,
  AWSDKSetupErrorInvalidServerDetails = 39,
};

typedef SWIFT_ENUM(NSInteger, AWSDKUpdateCredentialsError, closed) {
  AWSDKUpdateCredentialsErrorAuthenticationFailed = 0,
  AWSDKUpdateCredentialsErrorUserCancelled = 1,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkAccessAllowCellular, "AllowCellularNetworkAccess", closed) {
  AWNetworkAccessAllowCellularNever = 0,
  AWNetworkAccessAllowCellularAlways = 1,
  AWNetworkAccessAllowCellularNotRoaming = 2,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkAccessAllowWiFi, "AllowWiFiNetworkAccess", closed) {
  AWNetworkAccessAllowWiFiAlways = 1,
  AWNetworkAccessAllowWiFiFilter = 2,
};

typedef SWIFT_ENUM_NAMED(uint16_t, AWAnalyticsEvent, "AnalyticsEvent", closed) {
  AWAnalyticsEventCustomEvent = 0,
  AWAnalyticsEventSessionStarted = 1,
  AWAnalyticsEventSessionEnded = 2,
  AWAnalyticsEventViewDidAppear = 3,
  AWAnalyticsEventViewDidDisappear = 4,
};

typedef SWIFT_ENUM_NAMED(uint16_t, AWAnalyticsEventValueType, "AnalyticsEventValueType", closed) {
  AWAnalyticsEventValueTypeNone = 0,
  AWAnalyticsEventValueTypeInteger = 1,
  AWAnalyticsEventValueTypeLong = 2,
  AWAnalyticsEventValueTypeString = 3,
};


SWIFT_CLASS("_TtC5AWSDK16AnalyticsHandler")
@interface AnalyticsHandler : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface AnalyticsHandler (SWIFT_EXTENSION(AWSDK))
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AnalyticsHandler * _Nonnull sharedInstance;)
+ (AnalyticsHandler * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic) BOOL enabled;
- (void)recordEvent:(enum AWAnalyticsEvent)event eventName:(NSString * _Nonnull)eventName eventValue:(NSString * _Nonnull)eventValue valueType:(enum AWAnalyticsEventValueType)valueType;
@end


SWIFT_CLASS("_TtC5AWSDK14ProfilePayload")
@interface ProfilePayload : AWProfilePayload
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


/// @brief        Analytics payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the analytics group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("AnalyticsPayload")
@interface AWAnalyticsPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enabled;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ApplicationStatusInformation")
@protocol AWApplicationStatusInformation
@property (nonatomic, readonly, copy) NSString * _Nonnull consoleVersion;
@property (nonatomic, readonly) BOOL isAppSupported;
@property (nonatomic, readonly) BOOL isDeviceManaged;
@property (nonatomic, readonly) enum AWEnrollmentStatus enrollmentStatus;
@property (nonatomic, readonly) BOOL isAppManagementRequired;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWAuthenticationMethod, "AuthenticationMethod", closed) {
  AWAuthenticationMethodNone = 0,
  AWAuthenticationMethodPasscode = 1,
  AWAuthenticationMethodUsernamePassword = 2,
};


/// @brief        Authentication payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the authentication group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("AuthenticationPayload")
@interface AWAuthenticationPayload : ProfilePayload
@property (nonatomic, readonly) enum AWAuthenticationMethod authenticationMethod;
/// The minimum length of a passcode.
/// <em>This only applies to passcodes</em>
@property (nonatomic, readonly) NSInteger minimumPasscodeLength;
/// The minimum complex characters a passcode must contain.
/// <em>This only applies to passcodes.</em>
@property (nonatomic, readonly) NSInteger minimumComplexCharacters;
/// The maximum amount of days before a passcode expires and a new one must be set.
/// A Value <= 0 is interpreted as no maximum passcode age
@property (nonatomic, readonly) NSInteger maximumPasscodeAge;
/// The amount of passcodes that must be unique before reusing one is allowed.
/// <em>This only applies to passcodes.</em>
@property (nonatomic, readonly) NSInteger minimumUniquePasscodesBeforeReuse;
/// Number of failed authentication attempts allowed before actions should be executed.
/// <em>This applies to username / password & passcode.</em>
@property (nonatomic, readonly) NSInteger maximumFailedAttempts;
/// Determine if device passcode level should be required.
/// <em>This start being implemented in 6.4 to replace authenticationMethod = 1 (passcode)</em>
@property (nonatomic, readonly) BOOL requirePasscode;
/// A boolean indicating if Single Sign-On is enabled.
@property (nonatomic, readonly) BOOL enableSingleSignOn;
/// A boolean indicating if simple passcodes are allowed to be used.
@property (nonatomic, readonly) BOOL allowSimple;
/// Amount of time the application can be unlocked without prompting for the passcode.
@property (nonatomic, readonly) NSInteger passcodeTimeout;
@property (nonatomic, readonly, copy) NSString * _Nullable policyId;
/// A boolean indicating if Integrated Authentication is enabled.
@property (nonatomic, readonly) BOOL enableIntegratedAuthentication;
/// An array of allowedSites.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedSites;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

enum AWPasscodeMode : NSInteger;
enum AWBiometricMethod : NSInteger;

@interface AWAuthenticationPayload (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly) enum AWPasscodeMode passcodeMode;
@property (nonatomic, readonly) enum AWBiometricMethod biometricMethod;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWBiometricMethod, "BiometricMethod", closed) {
  AWBiometricMethodNone = 0,
  AWBiometricMethodAny = 2,
};


/// @brief        Branding payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the branding group of an SDK profile.
/// @version     5.8
SWIFT_CLASS_NAMED("BrandingPayload")
@interface AWBrandingPayload : ProfilePayload
/// A boolean indicating if Branding is enabled.
@property (nonatomic, readonly) BOOL enableBranding;
@property (nonatomic, readonly) BOOL customBranding;
/// The Organization Name.
@property (nonatomic, readonly, copy) NSString * _Nullable organizationName;
/// The primary highlight color.
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryHighlightColor;
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryColor;
/// The secondary highlight color.
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryHighlightColor;
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryColor;
/// The navigation bar and toolbar color.
@property (nonatomic, readonly, strong) UIColor * _Nullable toolbarColor;
/// The primary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable primaryTextColor;
/// The secondary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable secondaryTextColor;
/// The login title text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable loginTitleTextColor;
/// The tertiary text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable tertiaryTextColor;
/// The toolbar text color.
@property (nonatomic, readonly, strong) UIColor * _Nullable toolbarTextColor;
/// The background image for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhoneBackgroundImageURL;
/// The background image for retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone2xBackgroundImageURL;
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone52xBackgroundImageURL;
/// The background image for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPadBackgroundImageURL;
/// The background image for retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPad2xBackgroundImageURL;
/// The company image logo for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhoneCompanyLogoURL;
/// The company image logo for non-retina iPhones & iPod touches.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPhone2xCompanyLogoURL;
/// The company image logo for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPadCompanyLogoURL;
/// The company image logo for non-retina iPads.
@property (nonatomic, readonly, copy) NSURL * _Nullable iPad2xCompanyLogoURL;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC5AWSDK13BreezyPayload")
@interface BreezyPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSString * _Nullable breezyMDMAuthToken;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyServerURL;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyOauthConsumerID;
@property (nonatomic, readonly, copy) NSString * _Nullable breezyOauthConsumerSecret;
@property (nonatomic, readonly) BOOL isEnabled;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


/// Certificate Attributes Keys
/// Use these strings as keys for retrieving attributes and raw data of certificates
/// from AWController.storedCertificates() API
SWIFT_CLASS_NAMED("CertificateInfoKey")
@interface AWCertificateInfoKey : NSObject
/// Raw Certificate data in DER format
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull rawCertificate;)
+ (NSString * _Nonnull)rawCertificate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectName;)
+ (NSString * _Nonnull)subjectName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectUserID;)
+ (NSString * _Nonnull)subjectUserID SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectIdentifier;)
+ (NSString * _Nonnull)subjectIdentifier SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull emailAddress;)
+ (NSString * _Nonnull)emailAddress SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Data?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull serialNumber;)
+ (NSString * _Nonnull)serialNumber SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull commonName;)
+ (NSString * _Nonnull)commonName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull issuer;)
+ (NSString * _Nonnull)issuer SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull algorithm;)
+ (NSString * _Nonnull)algorithm SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Date?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull startDate;)
+ (NSString * _Nonnull)startDate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - Date?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull endDate;)
+ (NSString * _Nonnull)endDate SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull subjectAlternativeName;)
+ (NSString * _Nonnull)subjectAlternativeName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull keyUsage;)
+ (NSString * _Nonnull)keyUsage SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull extendedKeyUsage;)
+ (NSString * _Nonnull)extendedKeyUsage SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - String?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull universalPrincipalName;)
+ (NSString * _Nonnull)universalPrincipalName SWIFT_WARN_UNUSED_RESULT;
/// Return type of value - [String]?
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull ocspResponderList;)
+ (NSString * _Nonnull)ocspResponderList SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Certificate Usage Keys
/// These keys are returned in AWController.storedCertificates() API as usage.
SWIFT_CLASS_NAMED("CertificateUsageKey")
@interface AWCertificateUsageKey : NSObject
/// Certificate of Usage key to reflect Integrated Authentication(Deprecated)
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull identity SWIFT_DEPRECATED_MSG("", "integratedAuthIdentity");)
+ (NSString * _Nonnull)identity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of Usage key to reflect Integrated Authentication
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull integratedAuthIdentity;)
+ (NSString * _Nonnull)integratedAuthIdentity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of Usage key to reflect Integrated Authentication
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull uncategorizedIdentity;)
+ (NSString * _Nonnull)uncategorizedIdentity SWIFT_WARN_UNUSED_RESULT;
/// Certificate of this usage are used for signing requests for MAG Proxy
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull magSigning;)
+ (NSString * _Nonnull)magSigning SWIFT_WARN_UNUSED_RESULT;
/// Certificate of this usage are used for signing requests for Tunnel Proxy
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull tunnelSigning;)
+ (NSString * _Nonnull)tunnelSigning SWIFT_WARN_UNUSED_RESULT;
/// Certificates of type SSL
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull selfSignedSSLCerts;)
+ (NSString * _Nonnull)selfSignedSSLCerts SWIFT_WARN_UNUSED_RESULT;
/// Certificates of type Custom Anchors
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull customTrustedAnchorCerts;)
+ (NSString * _Nonnull)customTrustedAnchorCerts SWIFT_WARN_UNUSED_RESULT;
/// SDK doesn’t have specific usage for this type of certificates
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull others;)
+ (NSString * _Nonnull)others SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSUInteger, AWCertsTrustStore, "CertsTrustStore", closed) {
  AWCertsTrustStoreDeviceAndCustom = 0,
  AWCertsTrustStoreCustom = 1,
};

@protocol AWConsoleCommand;
@protocol AWConsoleCommandResponse;

SWIFT_PROTOCOL("_TtP5AWSDK14CommandHandler_")
@protocol CommandHandler
- (id <AWConsoleCommandResponse> _Nullable)processWithCommand:(id <AWConsoleCommand> _Nonnull)command SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWCommandStatus, "CommandStatus", closed) {
  AWCommandStatusUnknown = 0,
  AWCommandStatusAcknowledged = 1,
  AWCommandStatusError = 2,
  AWCommandStatusCommandFormatError = 3,
  AWCommandStatusIdle = 4,
  AWCommandStatusNotNow = 5,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWCommandType, "CommandType", closed) {
  AWCommandTypeInstallProfiles = 0,
  AWCommandTypeRequestProfiles = 1,
  AWCommandTypeUploadLogs = 2,
  AWCommandTypeLockSSO = 3,
  AWCommandTypeCustom = 4,
};

enum AWComplianceResult : int8_t;

SWIFT_CLASS_NAMED("ComplianceEvaluationController")
@interface AWComplianceEvaluationController : NSObject
/// Evaluate whether the device and app are compliant with the configured policies.
/// The app will be notified of the result of the compliance via complianceStatus.
/// If the result is <code>.noncompliant</code> then the SDK may take various actions including blocking the
/// UI or wiping the app.
/// Policy evaluation will be scheduled onto a background thread so this method will not block.
/// It is safe to call this method directly from a UI thread.
/// \param complianceStatus result of the evaluateCompliance checks.
///
- (void)evaluateComplianceStatusWithCompletion:(void (^ _Nonnull)(enum AWComplianceResult))completionHandler;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(int8_t, AWComplianceResult, "ComplianceResult", open) {
/// The compliance of the device and application could not be evaluated.
/// This may occur if the compliance rules have not yet been downloaded from the server.
  AWComplianceResultInapplicable = 0,
/// The device and app are compliant with the checks that were run.
  AWComplianceResultCompliant = 1,
/// The device or app is not compliant with the checks that were run.
  AWComplianceResultNoncompliant = 2,
};


/// @brief        Compliance payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the compliance group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("CompliancePayload")
@interface AWCompliancePayload : ProfilePayload
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull kComplianceStatusKey;)
+ (NSString * _Nonnull)kComplianceStatusKey SWIFT_WARN_UNUSED_RESULT;
/// A boolean indicating if compromised (jailbroken) devices should be prevented.
@property (nonatomic, readonly) BOOL preventCompromisedDevices;
/// A boolean indicating if device restorations should be prevented.
@property (nonatomic, readonly) BOOL preventRestoringBackupDevices;
/// An array of actions to be performed if the device is compromised.
@property (nonatomic, readonly, strong) NSArray * _Nonnull preventCompromisedDevicesActions;
/// A boolean indicating if compromised (jailbroken) devices should be prevented.
@property (nonatomic, readonly) BOOL enableCompromisedProtection;
/// A string for the id of the compromised policy.
@property (nonatomic, readonly, copy) NSString * _Nullable compromisedPolicyID;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWComplianceStatus, "ComplianceStatus", closed) {
  AWComplianceStatusUnknown = 0,
  AWComplianceStatusAllowed = 1,
  AWComplianceStatusBlocked = 2,
  AWComplianceStatusCompliant = 3,
  AWComplianceStatusNonCompliant = 4,
  AWComplianceStatusNotAvailable = 5,
  AWComplianceStatusNotApplicable = 6,
  AWComplianceStatusPendingComplianceCheck = 7,
  AWComplianceStatusPendingComplianceCheckForAPolicy = 8,
  AWComplianceStatusRegistrationActive = 9,
  AWComplianceStatusRegistrationExpired = 10,
  AWComplianceStatusQuarantined = 11,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWConfigurationProfileType, "ConfigurationProfileType", closed) {
  AWConfigurationProfileUnknown SWIFT_COMPILE_NAME("unknown") = 0,
  AWConfigurationProfileAgent SWIFT_COMPILE_NAME("agent") = 5,
  AWConfigurationProfileBrowser SWIFT_COMPILE_NAME("browser") = 7,
  AWConfigurationProfileContentLocker SWIFT_COMPILE_NAME("contentLocker") = 9,
  AWConfigurationProfileSharedDevice SWIFT_COMPILE_NAME("sharedDevice") = 13,
  AWConfigurationProfileSDKV2 SWIFT_COMPILE_NAME("sdk") = 21,
  AWConfigurationProfileSDKV2AppWrapping SWIFT_COMPILE_NAME("sdkAppWrapping") = 22,
  AWConfigurationProfileBoxer SWIFT_COMPILE_NAME("boxer") = 32,
  AWConfigurationProfileMTD SWIFT_COMPILE_NAME("mtd") = 41,
  AWConfigurationProfileBoxerV2 SWIFT_COMPILE_NAME("boxerV2") = 100032,
};


SWIFT_PROTOCOL_NAMED("ConsoleCommand")
@protocol AWConsoleCommand
@property (nonatomic, readonly, copy) NSString * _Nonnull UUID;
@property (nonatomic, readonly) enum AWCommandType type;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull commandInfo;
@end


SWIFT_PROTOCOL_NAMED("ConsoleCommandResponse")
@protocol AWConsoleCommandResponse
@property (nonatomic, readonly) enum AWCommandStatus status;
@property (nonatomic, readonly, copy) NSString * _Nonnull payloadIdentifier;
@property (nonatomic, readonly, copy) NSString * _Nonnull commandTarget;
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, id> *> * _Nullable certificateResponse;
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, id> *> * _Nullable installedProfilesResponse;
@end


SWIFT_PROTOCOL_NAMED("ConsoleSupportInformation")
@protocol AWConsoleSupportInformation
@property (nonatomic, readonly, copy) NSString * _Nullable email;
@property (nonatomic, readonly, copy) NSString * _Nullable telephoneNumber;
@property (nonatomic, readonly, copy) NSString * _Nullable errorMessage;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWContentFilterType, "ContentFilterType", closed) {
  AWContentFilterTypeNone = 0,
  AWContentFilterTypeWebsense = 1,
};


SWIFT_CLASS_NAMED("ContentFilteringPayload")
@interface AWContentFilteringPayload : ProfilePayload
@property (nonatomic, readonly) enum AWContentFilterType contentFilterType;
@property (nonatomic, readonly) NSInteger contentFilterProxyId;
@property (nonatomic, readonly, copy) NSString * _Nullable websensePacAddress;
@property (nonatomic, readonly) NSInteger websenseAccountId;
@property (nonatomic, readonly, copy) NSString * _Nullable websenseSecurityKey;
@property (nonatomic, readonly) NSInteger websenseProxyId;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL_NAMED("ControllerCommandManagementDelegate")
@protocol AWControllerCommandManagementDelegate
- (void)controllerDidStartLoadingCommands;
- (void)controllerDidFailToLoadCommandsWithError:(NSError * _Nonnull)error;
- (void)controllerDidFinishLoadingCommands;
@end


/// @brief     Custom payload that is contained within a ‘AWProfile’.
/// @version   6.0
SWIFT_CLASS_NAMED("CustomPayload")
@interface AWCustomPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSString * _Nullable settings;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("CustomerLogger")
@interface AWCustomerLogger : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWCustomerLogger * _Nonnull sharedInstance;)
+ (AWCustomerLogger * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
- (void)logWithError:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithWarning:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithInfo:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (void)logWithVerbose:(NSString * _Nonnull)input function:(NSString * _Nonnull)function file:(NSString * _Nonnull)file line:(NSUInteger)line;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP5AWSDK20DeviceEnrollmentInfo_")
@protocol DeviceEnrollmentInfo
@property (nonatomic, readonly, copy) NSString * _Nonnull organizationGroup;
@property (nonatomic, readonly, copy) NSString * _Nonnull hostName;
@end


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

@protocol AWSharedDeviceInformation;

@interface DeviceInformationController (SWIFT_EXTENSION(AWSDK))
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) DeviceInformationController * _Nonnull sharedController;)
+ (DeviceInformationController * _Nonnull)sharedController SWIFT_WARN_UNUSED_RESULT;
/// The Device Services URL which the current device used for enrollment/authentication.
@property (nonatomic, readonly, copy) NSString * _Nullable deviceServicesURL;
/// The current Single Sign On Status for this device.
/// Can be <code>enabled</code> or <code>disabled</code>
@property (nonatomic, readonly) enum AWSSOStatus ssoStatus;
/// Refresh the current device compromised status.
/// Starts a flow to refresh/recheck whether or no the current device is compromised.
/// Results will be returned via the completion block that is passed in as a parameter.
/// <ul>
///   <li>
///     See: DeviceCompromiseStatusRefreshCompletionBlock
///   </li>
/// </ul>
/// \param completion The completion block to execute once the device compromised status has been refreshed.
/// completion block is called with (isJailbroken: Bool, evaluationToken: String, evaluationIdentifier: String)
/// NOTE:- evaluationToken is always an empty string.
///
- (void)refreshDeviceCompromisedStatusWithCompletion:(void (^ _Nonnull)(BOOL, NSString * _Nonnull, NSString * _Nullable))completion;
/// Fetch Console supplied application assignment information.
/// Fetches information from the WS1 management console about the current application assignment. The results will be returned via the completion block passed in as a
/// parameter. Fetched information includes: enrollmentStatus, complianceStatus, isManaged, consoleVersion
/// <ul>
///   <li>
///     See: DeviceInformation protocol
///   </li>
/// </ul>
/// \param completion The completion block to execute once the device information has been fetched.
///
- (void)fetchApplicationAssignmentStatusWithCompletion:(void (^ _Nonnull)(id <AWApplicationStatusInformation> _Nullable, id <AWSharedDeviceInformation> _Nullable, NSError * _Nullable))completion;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWDeviceManagmentType, "DeviceManagmentType", closed) {
  AWDeviceManagmentTypeNotManaged = 0,
  AWDeviceManagmentTypeManagedByMDM = 1,
  AWDeviceManagmentTypeManagedByMAM = 2,
  AWDeviceManagmentTypeQuarantine = 3,
  AWDeviceManagmentTypeApplication = 4,
  AWDeviceManagmentTypeWorkspaceOne = 5,
  AWDeviceManagmentTypeOffline = 6,
  AWDeviceManagmentTypeUnknown = 7,
};


SWIFT_CLASS_NAMED("EnrollmentAccount")
@interface AWEnrollmentAccount : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nullable instancetype)initWithActivationCode:(NSString * _Nullable)activationCode username:(NSString * _Nonnull)username password:(NSString * _Nonnull)password OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWEnrollmentAccount (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, readonly) NSInteger identifier SWIFT_DEPRECATED_MSG("Deprecated in favour of `retrieveUserInfo(completionHandler: )` API. This will return -1 always.");
@property (nonatomic, readonly, copy) NSString * _Nonnull activationCode;
@property (nonatomic, readonly, copy) NSString * _Nonnull username;
@property (nonatomic, readonly, copy) NSString * _Nonnull password;
@property (nonatomic, readonly) BOOL isAccountAuthenticated SWIFT_DEPRECATED_MSG("This value will always be false as the account identifier will be missing.");
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWEnrollmentAuthenticationCredentials, "EnrollmentAuthenticationCredentialsType", closed) {
  AWEnrollmentAuthenticationCredentialsNone = 0,
  AWEnrollmentAuthenticationCredentialsPin = 1,
  AWEnrollmentAuthenticationCredentialsUsernamePassword = 2,
  AWEnrollmentAuthenticationCredentialsCertificate = 3,
  AWEnrollmentAuthenticationCredentialsCertificateWithPin = 4,
  AWEnrollmentAuthenticationCredentialsAuthorizationToken = 5,
  AWEnrollmentAuthenticationCredentialsSso = 6,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWEnrollmentStatus, "EnrollmentStatus", closed) {
  AWEnrollmentStatusDeviceNotFound = 0,
  AWEnrollmentStatusDiscovered = 1,
  AWEnrollmentStatusRegistered = 2,
  AWEnrollmentStatusEnrollmentInProgress = 3,
  AWEnrollmentStatusEnrolled = 4,
  AWEnrollmentStatusEnterpriseWipePending = 5,
  AWEnrollmentStatusDeviceWipePending = 6,
  AWEnrollmentStatusRetired = 7,
  AWEnrollmentStatusUnenrolled = 8,
  AWEnrollmentStatusUnknown = 9,
/// An error occurred during enrollment
  AWEnrollmentStatusInvalid = 10,
/// Custom Statuses
  AWEnrollmentStatusBootstrapped = 0x10CC4EAD,
  AWEnrollmentStatusDeviceCheckedIn = 0x10CC4EAE,
};


SWIFT_CLASS_NAMED("GeofenceArea")
@interface AWGeofenceArea : NSObject
@property (nonatomic, readonly) CLLocationCoordinate2D center;
@property (nonatomic, readonly) CLLocationDistance radius;
@property (nonatomic, readonly, copy) NSString * _Nullable uniqueID;
@property (nonatomic, readonly, copy) NSString * _Nullable name;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// @brief       Geofence payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the geofence group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("GeofencePayload")
@interface AWGeofencePayload : ProfilePayload
/// A boolean indicating if geofencing should be enabled.
@property (nonatomic, readonly) BOOL isEnabled;
/// An array containing all geofence area values.
@property (nonatomic, readonly, copy) NSArray<AWGeofenceArea *> * _Nonnull geofenceAreas;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("LoggingPayload")
@interface AWLoggingPayload : ProfilePayload
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("NetworkAccessPayload")
@interface AWNetworkAccessPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enableNetworkAccess;
@property (nonatomic, readonly) enum AWNetworkAccessAllowCellular allowCellularConnection;
@property (nonatomic, readonly) enum AWNetworkAccessAllowWiFi allowWifiConnection;
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedSSIDs;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWNetworkActivityStatus, "NetworkActivityStatus", closed) {
/// Initial/unknown state
  AWNetworkActivityInit SWIFT_COMPILE_NAME("unknown") = 0,
/// Normal
  AWNetworkActivityNormal SWIFT_COMPILE_NAME("normal") = 1,
/// When Either there is no network (no wifi or cellular) or in airplane mode.
  AWNetworkActivityNetworkNotReachable SWIFT_COMPILE_NAME("networkNotReachable") = 2,
/// Celluar data is completely disabled
  AWNetworkActivityCellularDisabled SWIFT_COMPILE_NAME("cellularDataConnectionDisabled") = 3,
/// Celluar data is disabled while roaming
  AWNetworkActivityRoaming SWIFT_COMPILE_NAME("cellularDataConnectionDisabledWhileRoaming") = 4,
/// Proxy setup failed.
  AWNetworkActivityProxyFailed SWIFT_COMPILE_NAME("proxySetupFailed") = 5,
/// offline access is not allowed or maximum offline time has reached
  AWNetworkOfflineNotAllowed SWIFT_COMPILE_NAME("offlineNotAllowed") = 6,
};


/// @brief       OfflineAccessPayload payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the Offline Access group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("OfflineAccessPayload")
@interface AWOfflineAccessPayload : ProfilePayload
@property (nonatomic, readonly) BOOL enableOfflineAccess;
@property (nonatomic, readonly) NSTimeInterval maximumSecondsAllowedOffline;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP5AWSDK17PKCS12Certificate_")
@protocol PKCS12Certificate
@property (nonatomic, readonly, copy) NSData * _Nonnull data;
@property (nonatomic, readonly, copy) NSString * _Nonnull importExportPassphrase;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWPasscodeMode, "PasscodeMode", closed) {
  AWPasscodeModeOff = 0,
  AWPasscodeModeNumeric = 1,
  AWPasscodeModeAlphanumeric = 2,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWPersistentTokenType, "PersistentTokenType", closed) {
  AWPersistentTokenTypeAuthentication = 0,
  AWPersistentTokenTypeSigning = 1,
  AWPersistentTokenTypeEncryption = 2,
  AWPersistentTokenTypeAll = 3,
};


/// @brief		Represents an unmanaged configuration profile.
/// @details     Profile containing multiple payloads that are used to configure a device and application.
/// @version     6.0
SWIFT_CLASS_NAMED("Profile")
@interface AWProfile : NSObject
- (nonnull instancetype)initWithInfo:(NSDictionary<NSString *, id> * _Nonnull)info OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface AWProfile (SWIFT_EXTENSION(AWSDK))
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end


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

@class AWRestrictionsPayload;
@class AWWebsiteFilteringPayload;

@interface AWProfile (SWIFT_EXTENSION(AWSDK))
@property (nonatomic, copy) NSString * _Nullable displayName;
@property (nonatomic, copy) NSString * _Nullable comments;
@property (nonatomic, copy) NSString * _Nullable identifier;
@property (nonatomic, copy) NSString * _Nullable organization;
@property (nonatomic, copy) NSString * _Nullable uuid;
@property (nonatomic) NSInteger version;
@property (nonatomic) enum AWConfigurationProfileType profileType;
@property (nonatomic) BOOL isSDKProfile;
@property (nonatomic) NSTimeInterval timeStamp;
/// @name SDK Profile Payloads
@property (nonatomic, strong) AWGeofencePayload * _Nullable geofencePayload;
@property (nonatomic, strong) AWAnalyticsPayload * _Nullable analyticsPayload;
@property (nonatomic, strong) AWRestrictionsPayload * _Nullable restrictionsPayload;
@property (nonatomic, strong) AWCompliancePayload * _Nullable compliancePayload;
@property (nonatomic, strong) AWAuthenticationPayload * _Nullable authenticationPayload;
@property (nonatomic, strong) AWBrandingPayload * _Nullable brandingPayload;
@property (nonatomic, strong) BreezyPayload * _Nullable breezyPayload;
@property (nonatomic, strong) AWCustomPayload * _Nullable customPayload;
@property (nonatomic, strong) AWOfflineAccessPayload * _Nullable offlineAccessPayload;
@property (nonatomic, strong) AWNetworkAccessPayload * _Nullable networkAccessPayload;
@property (nonatomic, strong) AWContentFilteringPayload * _Nullable contentFilteringPayload;
@property (nonatomic, strong) AWWebsiteFilteringPayload * _Nullable websiteFilteringPayload;
@property (nonatomic, strong) AWLoggingPayload * _Nullable loggingPayload;
@end


typedef SWIFT_ENUM_NAMED(NSInteger, AWProxyType, "ProxyType", closed) {
  AWProxyTypeNone = 0,
  AWProxyTypeMag = 1,
  AWProxyTypeStandard = 2,
};


/// Public Certificate object holding information about X509 certificates.
SWIFT_CLASS("_TtC5AWSDK17PublicCertificate")
@interface PublicCertificate : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface PublicCertificate (SWIFT_EXTENSION(AWSDK))
/// Function to retrieve the corresponding value for the given Attribute. Check CertificateInfoKey for possible keys
/// that can be used to retrieve the certificates.
/// \param key key string from the list CertificateInfoKey
///
///
/// returns:
/// return a value of type mentioned in CertificateInfoKey, nil if the key is not identified or value is not available on the certificate.
- (id _Nullable)valueForCertificateAttribute:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWRequeryType, "RequeryType", closed) {
  AWRequeryApplist SWIFT_COMPILE_NAME("appList") = 1,
  AWRequeryDeviceInfo SWIFT_COMPILE_NAME("deviceInfo") = 2,
  AWRequeryProfileInfo SWIFT_COMPILE_NAME("profileInfo") = 3,
  AWRequerySecurityInfo SWIFT_COMPILE_NAME("securityInfo") = 4,
};


/// @brief        Access control payload that is contained in an ‘AWProfile’.
/// @details     A profile payload that represents the access control group of an SDK profile.
/// @version     6.0
SWIFT_CLASS_NAMED("RestrictionsPayload")
@interface AWRestrictionsPayload : ProfilePayload
/// A boolean indicating if Copy from the outside and Paste to inside is allowed *
@property (nonatomic, readonly) BOOL enableCopyAndPasteInTo;
/// A boolean indicating if Copy from the inside and Paste to outside is allowed *
@property (nonatomic, readonly) BOOL enableCopyAndPasteOut;
/// A boolean indicating if screen capture is allowed *
@property (nonatomic, readonly) BOOL enableScreenshot;
/// A boolean indicating whether to only allow open document in allowed list of app
@property (nonatomic, readonly) BOOL restrictDocumentToApps;
/// A list of Apps that are allowed to open documents
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull allowedApplications;
/// A boolean indicating if printing is allowed.
@property (nonatomic, readonly) BOOL printingEnabled;
/// A boolean indicating if data loss prevention is enabled.
@property (nonatomic, readonly) BOOL enableDataLossPrevention;
/// A boolean indicating if watermark should be displayed on content that has watermark.
@property (nonatomic, readonly) BOOL enableWatermark;
/// The string that indicate the watermark overlay on the content.
@property (nonatomic, readonly, copy) NSString * _Nullable watermarkOverlay;
/// A boolean indicating if third party keyboards are blocked. Not blocked by default
@property (nonatomic, readonly) BOOL preventCustomKeyboards;
@property (nonatomic, readonly) BOOL enableMailComposing;
@property (nonatomic, readonly) BOOL enableLocationReporting;
@property (nonatomic, readonly) BOOL enableDataBackup;
@property (nonatomic, readonly) BOOL enableCameraAccess;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWRestrictionsPayload (SWIFT_EXTENSION(AWSDK))
/// The reverse value of enableCopyAndPasteInTo *
@property (nonatomic, readonly) BOOL preventCopyAndPasteInTo;
/// The reverse value of enableCopyAndPasteOut *
@property (nonatomic, readonly) BOOL preventCopyPaste;
@end


SWIFT_CLASS_NAMED("SDKBeaconTransmitter")
@interface AWSDKBeaconTransmitter : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) AWSDKBeaconTransmitter * _Nonnull sharedTransmitter;)
+ (AWSDKBeaconTransmitter * _Nonnull)sharedTransmitter SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;

@interface AWSDKBeaconTransmitter (SWIFT_EXTENSION(AWSDK))
/// A method to return Timestamp for last successful Beacon.
///
/// returns:
/// Timestamp for last successful Beacon as Date object.
- (NSDate * _Nullable)lastSuccessfulBeaconTimeStamp SWIFT_WARN_UNUSED_RESULT;
/// Send a Beacon with APNS Token to console.
/// \param updatedAPNSToken APNS Token to send to Console
///
/// \param completion Completion Block to execute on Beacon Send completion
///
- (void)sendBeaconWithUpdatedAPNSToken:(NSString * _Nonnull)updatedAPNSToken completion:(void (^ _Nullable)(BOOL, NSError * _Nullable))completion;
/// Method to schedule Sending Beacon at specific time interval. This method will call completion block only on
/// initial attempt to send beacon.
/// \param transmitFrequency Frequency to send beacon to console. Setting Beacon to less than 60 seconds will reset to 60.
///
/// \param onInitialBeaconSendCompletion Completion Block to be called on initial beacon sent and scheduled future Beacon Sends.
///
- (void)startSendingDeviceStatusBeaconWithTransmitFrequency:(NSTimeInterval)transmitFrequency onInitialBeaconSendCompletion:(void (^ _Nullable)(BOOL, NSError * _Nullable))onInitialBeaconSendCompletion;
/// Method to stop current Send Beacon Operation.
- (void)stopSendingDeviceStatusBeacon;
/// Send Device Status Beacon to Console.
/// \param completion Completion block to be called with result of the network operation.
///
- (void)sendDeviceStatusBeaconWithCompletion:(void (^ _Nullable)(BOOL, NSError * _Nullable))completion;
@end


SWIFT_CLASS_NAMED("SSLPinningInterface")
@interface AWSSLPinningInterface : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface AWSSLPinningInterface (SWIFT_EXTENSION(AWSDK))
+ (NSArray<NSString *> * _Nullable)getStoredPublicKeysForPinningForHost:(NSString * _Nonnull)host SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWSSOStatus, "SSOStatus", closed) {
  AWSSOStatusUnknown = 0,
  AWSSOStatusEnabled = 1,
  AWSSOStatusDisabled = 2,
};

typedef SWIFT_ENUM_NAMED(NSUInteger, AWSecTrustStrictness, "SecTrustStrictness", closed) {
  AWSecTrustStrictnessIgnore = 0,
  AWSecTrustStrictnessStrict = 1,
};

typedef SWIFT_ENUM_NAMED(NSInteger, AWSettingLogLevel, "SettingLogLevel", closed) {
  AWSettingLogLevelOff = -1,
  AWSettingLogLevelError = 0,
  AWSettingLogLevelWarning = 1,
  AWSettingLogLevelInformation = 2,
  AWSettingLogLevelDebug = 3,
};

enum AWSharedDeviceStatus : NSUInteger;

/// Protocol describing  a type to hold information representing CICO workflow based Shared Device
SWIFT_PROTOCOL_NAMED("SharedDeviceInformation")
@protocol AWSharedDeviceInformation
/// Boolean value representing whether Check-In, Check-out is enabled and allowed for current device enrollment
@property (nonatomic, readonly) BOOL isDeviceStagingEnabled;
/// Enum value representing current device sharing status
@property (nonatomic, readonly) enum AWSharedDeviceStatus sharedDeviceStatus;
/// Opaque string representing current CICO session maintained by the UEM Console
@property (nonatomic, readonly, copy) NSString * _Nullable userContextID;
/// Timestamp of this information.
@property (nonatomic, readonly, copy) NSDate * _Nonnull timestamp;
@end

/// @frozen public enum representing Device Sharing Status
typedef SWIFT_ENUM_NAMED(NSUInteger, AWSharedDeviceStatus, "SharedDeviceStatus", closed) {
/// Device Sharing status is not known at this moment. This also reflects that CICO is not possible with in current enrollment.
  AWSharedDeviceStatusUnknown = 0,
/// Device is Checked-In and there is no active user currently using this device.
  AWSharedDeviceStatusCheckedInUnassigned = 1,
/// Device is Checked-Out and assigned to a user
  AWSharedDeviceStatusCheckedOutAssigned = 2,
};


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


@interface SupportInformationController (SWIFT_EXTENSION(AWSDK))
/// The shared instance to use to retrieve the support information
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SupportInformationController * _Nonnull sharedInstance;)
+ (SupportInformationController * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// Retrieve the support information for email and telephone that’s configured on console
/// @return AWError.SDK.General.moduleNotInitialized If calling this API directly without initializing the
/// SDK and not reaching the delegate call for initial check done then an error will occur
/// @return AWError.SDK.CoreNetwork.CTL.createRequestFailure(error.localizedDescription) - network related failure
/// @return AWError.SDK.General.jsonDeserializationFailed - could not unwrap the response data which is supposed to be JSON
/// @return AWError.SDK.General.configurationValuesUnavailable.error - An Error was returned on the server. Check the error message for a possible message
/// @return SupportInformation If an object is returned, check that there is no error message and use the data accordingly.
- (void)retrieveSupportInfoWithCompletion:(void (^ _Nonnull)(id <AWConsoleSupportInformation> _Nullable, NSError * _Nullable))completion;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWUnenrolledReason, "UnenrollmentReason", closed) {
  AWUnenrolledReasonServerUnenrolled = 0,
  AWUnenrolledReasonUserFailedToAuthenticate = 1,
};


/// The UnmanagedCompliancePayload is a settings payload that comes down from the WS1 Server inside the settings profile.
/// This payload contains the information related to on device compliance, also refered to as unmanaged compliance. Specifically
/// the sdk receives the complianceDeliveryEndpoint and the complianceReportingEndpoint urls from this payload which tell where
/// the compliance settings should be fetched from and where the compliance results should be reported to.
SWIFT_CLASS_NAMED("UnmanagedComplianceConfigurationPayload")
@interface AWUnmanagedCompliancePayload : ProfilePayload
/// The url of the delivery endpoint from which the compliance policies should be fetched.
@property (nonatomic, readonly, copy) NSURL * _Nullable complianceDeliveryEndpoint;
/// The url of the reporting endpoint where the compliance evaluation results should be reported to.
@property (nonatomic, readonly, copy) NSURL * _Nullable complianceReportingEndpoint;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("UserInformation")
@interface AWUserInformation : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull userName;
@property (nonatomic, readonly, copy) NSString * _Nonnull userIdentifier;
@property (nonatomic, readonly, copy) NSString * _Nonnull firstName;
@property (nonatomic, readonly, copy) NSString * _Nonnull lastName;
@property (nonatomic, readonly, copy) NSString * _Nonnull email;
@property (nonatomic, readonly, copy) NSString * _Nonnull domain;
@property (nonatomic, readonly, copy) NSString * _Nonnull groupID;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


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


@interface UserInformationController (SWIFT_EXTENSION(AWSDK))
/// The singleton instance of UserInformationController to use for retrieving the the current user’s enrollment information.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) UserInformationController * _Nonnull sharedInstance;)
+ (UserInformationController * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT;
/// @brief Retrieve the user information.
/// @return If calling this API directly without initializing the SDK and not reaching the delegate call for initial check done then an error will occur
- (void)retrieveUserInfoWithCompletionHandler:(void (^ _Nonnull)(AWUserInformation * _Nullable, NSError * _Nullable))completionHandler;
@end


/// This class provide methods to cleanup SDK container data.
SWIFT_CLASS_NAMED("WS1SDKContainerCleaner")
@interface AWWS1SDKContainerCleaner : NSObject
/// This methods performs a thorough cleanup of all of the VMWare
/// Workspace One SDK Data. Invoking this method will cause all of the
/// SDK data to be deleted for this app and any app sharing keychain with
/// this app. The data cannot be recovered again.
- (void)destroyContainerData;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC5AWSDK18WS1SDKDataProvider")
@interface WS1SDKDataProvider : NSObject
/// Provides current SDK logs data encoded in utf8 string format
///
/// throws:
/// error of type <code>NSError</code> with domain <code>AWSDKErrorDomains.sdkDataProvider</code> and code defined by enum <code>AWSDKLogDataProviderError</code>
///
/// returns:
/// current SDK logs in a <code>Data</code>
- (NSData * _Nullable)fetchSDKLogDataAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Provides unsent compromised logs data encoded in utf8 string format
///
/// throws:
/// error of type <code>NSError</code> with domain <code>AWSDKErrorDomains.sdkDataProvider</code> and code defined by enum <code>AWSDKLogDataProviderError</code>
///
/// returns:
/// compromised logs in a <code>Data</code>
- (NSData * _Nullable)fetchCompromisedLogDataAndReturnError:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, AWWebsiteFilterType, "WebsiteFilterType", closed) {
  AWWebsiteFilterTypeUnknown = 0,
  AWWebsiteFilterTypeDeny = 1,
  AWWebsiteFilterTypeAllow = 2,
};


SWIFT_CLASS_NAMED("WebsiteFilteringPayload")
@interface AWWebsiteFilteringPayload : ProfilePayload
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull websiteFilterCategories;
@property (nonatomic, readonly) NSInteger websiteFilterId;
@property (nonatomic, readonly) enum AWWebsiteFilterType filterType;
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary OBJC_DESIGNATED_INITIALIZER;
@end

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

#else
#error unsupported Swift architecture
#endif
