#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.3.1 effective-5.10 (swiftlang-6.3.1.1.2 clang-2100.0.123.102)
#ifndef GSSDK_SWIFT_H
#define GSSDK_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif // defined(__OBJC__)
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module"
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
#  define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
#  define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#pragma clang diagnostic pop
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef unsigned char char8_t;
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# if (defined(__cplusplus) && __cplusplus >= 201103L) ||      (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) ||      __has_feature(objc_fixed_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
# else
#  define SWIFT_ENUM(_type, _name, _extensibility) _type _name; enum 
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM_TAG)
# if (defined(__cplusplus) && __cplusplus >= 201103L) ||      (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) ||      __has_feature(objc_fixed_enum)
#  define SWIFT_ENUM_TAG enum
# else
#  define SWIFT_ENUM_TAG
# endif
#endif
#if !defined(SWIFT_ENUM_FWD_DECL)
# if (defined(__cplusplus) && __cplusplus >= 201103L) ||      (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) ||      __has_feature(objc_fixed_enum)
#  define SWIFT_ENUM_FWD_DECL(_type, _name) enum _name : _type;
# else
#  define SWIFT_ENUM_FWD_DECL(_type, _name) typedef _type _name;
# 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_AVAILABILITY_DOMAIN)
# define SWIFT_AVAILABILITY_DOMAIN(dom, ...) __attribute__((availability(domain: dom, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
#  define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
#  define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction 
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT 
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
#  define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL 
#endif
#endif
#if !__has_feature(nullability)
# define _Nonnull
# define _Nullable
# define _Null_unspecified
#elif !defined(__OBJC__)
# pragma clang diagnostic ignored "-Wnullability-extension"
#endif
#if !__has_feature(nullability_nullable_result)
# define _Nullable_result _Nullable
#endif
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif

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

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

#if defined(__cplusplus)
extern "C" {
#endif

#if defined(__cplusplus)
} // extern "C"
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import Dispatch;
@import Foundation;
@import ObjectiveC;
@import UIKit;
#endif

#import <GSSDK/GSSDK.h>

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

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

#if defined(__OBJC__)

@class NSString;
/// Entry point of the SDK. Use this to initialize the SDK with your license key.
SWIFT_CLASS("_TtC5GSSDK3GSK")
@interface GSK : NSObject
/// Returns the Genius Scan SDK version
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull sdkVersion;)
+ (NSString * _Nonnull)sdkVersion SWIFT_WARN_UNUSED_RESULT;
/// Sets the Genius Scan SDK license key with auto-refresh enabled.
/// See <code>setLicenseKey:autoRefresh:</code>
+ (void)setLicenseKey:(NSString * _Nonnull)licenseKey;
/// Sets the Genius Scan SDK license key, while optionally enabling auto-refresh.
/// This method doesn’t return an error but will log warnings should the key be invalid or expired. All other SDK methods that return errors will report
/// an error if there is a problem with the license key, and you must handle them to ensure you provide a good “degraded” experience.
/// For instance, you can prompt the user to update the application to use the scanning feature in case they use a version of the application with an expired license key.
/// important:
/// This method must be called with a valid license key before any use of the SDK methods.
/// \param licenseKey A valid license key. You must publish a new version of the app with an updated license key before the key expires.
///
/// \param autoRefresh If true, the SDK will attempt to automatically refresh the license key to prevent any diruption of service on devices that wouldn’t have
/// updated to the latest version of your app containing the new keys. If <code>autoRefresh</code> is enabled, the following information is sent to the Genius Scan
/// SDK servers: the current license key, a device-unique UUID, and the current version of the app.
///
+ (void)setLicenseKey:(NSString * _Nonnull)licenseKey autoRefresh:(BOOL)autoRefresh;
/// Checks that the Genius Scan SDK was correctly initialized with a valid license key.
///
/// throws:
/// An error if the license key is invalid or expired.
+ (BOOL)checkInitializationAndReturnError:(NSError * _Nullable * _Nullable)error;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// A barcode such as 1D barcodes or QR codes.
SWIFT_CLASS("_TtC5GSSDK10GSKBarcode")
@interface GSKBarcode : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface GSKBarcode (SWIFT_EXTENSION(GSSDK))
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

@interface GSKBarcode (SWIFT_EXTENSION(GSSDK))
@property (nonatomic, readonly) NSUInteger hash;
@end

@class GSKBarcodeScanFlowConfiguration;
@class UIViewController;
@class GSKBarcodeScanFlowResult;
/// A UI flow for scanning barcodes and QR codes using the device camera.
/// Configure the flow with <code>GSKBarcodeScanFlowConfiguration</code> to select the
/// barcode types to detect and whether batch mode is enabled. Present it from
/// a view controller and await a <code>GSKBarcodeScanFlowResult</code> containing the
/// decoded barcodes.
/// important:
/// Camera access requires <code>NSCameraUsageDescription</code> in
/// <code>Info.plist</code>.
SWIFT_CLASS("_TtC5GSSDK18GSKBarcodeScanFlow")
@interface GSKBarcodeScanFlow : NSObject
/// Initializes a new barcode scan flow
/// \param configuration Configuration for the barcode scanning
///
- (nonnull instancetype)initWithConfiguration:(GSKBarcodeScanFlowConfiguration * _Nonnull)configuration OBJC_DESIGNATED_INITIALIZER;
/// Starts the barcode scanning flow by presenting a full-screen camera interface.
/// This method presents a camera view controller that continuously scans for barcodes and QR codes.
/// The scanning process respects the code types specified in the flow’s configuration.
/// The method uses Swift’s async/await pattern, suspending until either:
/// <ul>
///   <li>
///     A barcode is successfully detected (except in batch mode)
///   </li>
///   <li>
///     The user taps the done button (batch mode)
///   </li>
///   <li>
///     The user cancels the operation
///   </li>
///   <li>
///     An error occurs during setup or scanning
///   </li>
/// </ul>
/// The behavior varies based on the configuration’s isBatchModeEnabled:
/// <ul>
///   <li>
///     <code>false</code>: Returns immediately after detecting one or more codes in a single frame
///   </li>
///   <li>
///     <code>true</code>: Collects unique codes over time until the user taps the done button
///   </li>
/// </ul>
/// Example usage:
/// \code
/// let flow = GSKBarcodeScanFlow()
/// do {
///     let result = try await flow.resultByStarting(fromViewController: self)
///     print("Scanned codes: \(result.barcodes.map { $0.value })")
/// } catch GSKScanFlowError.cancellation {
///     print("User canceled scanning")
/// } catch {
///     print("Scanning failed: \(error)")
/// }
///
/// \endcodeimportant:
/// This method requires camera permissions. Ensure your app’s Info.plist includes
/// the <code>NSCameraUsageDescription</code> key with an appropriate description.
/// note:
/// The camera interface is presented with <code>modalPresentationStyle</code> set to <code>.fullScreen</code>
/// for an immersive scanning experience.
/// \param viewController The view controller from which to present the camera interface.
/// This should typically be the currently visible view controller.
///
///
/// throws:
///
/// <ul>
///   <li>
///     A <code>GSKScanFlowError</code>
///   </li>
/// </ul>
///
/// returns:
/// A <code>GSKBarcodeScanFlowResult</code> containing the detected barcodes with their
/// decoded values and format types.
- (void)resultByStartingFromViewController:(UIViewController * _Nonnull)viewController completionHandler:(void (^ _Nonnull)(GSKBarcodeScanFlowResult * _Nullable, NSError * _Nullable))completionHandler;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSError;
@interface GSKBarcodeScanFlow (SWIFT_EXTENSION(GSSDK))
/// Instantiates a <code>GSKBarcodeScanFlow</code> instance with the provided configuration.
/// This initializer is only available from Objective-C.
+ (nonnull instancetype)barcodeScanFlowWithConfiguration:(GSKBarcodeScanFlowConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Starts the barcode scanning flow.
/// @param viewController The view controller to present the barcode scanning interface from.
/// @param successBlock A completion block/closure that will be called on the main
/// thread upon successful completion of the scan flow. It receives a <code>GSKBarcodeScanFlowResult</code> object as
/// a parameter. This object gives you access to the scanned codes.
/// @param failureBlock A block/closure called if an error was encountered.
/// This method is only available from Objective-C.
- (void)startFromViewController:(UIViewController * _Nonnull)viewController success:(void (^ _Nonnull)(GSKBarcodeScanFlowResult * _Nonnull))successBlock failure:(void (^ _Nonnull)(NSError * _Nonnull))failureBlock;
@end

@class UIColor;
/// Configuration for the UI barcode scanning flow
/// This class allows customization of which barcode and QR code formats should be detected
/// during the scanning process. By default, all supported formats are enabled.
SWIFT_CLASS("_TtC5GSSDK31GSKBarcodeScanFlowConfiguration")
@interface GSKBarcodeScanFlowConfiguration : NSObject
/// Whether batch mode is enabled for code detection.
/// This setting controls how codes are detected and when they are returned:
/// <ul>
///   <li>
///     <code>false</code>: Detect multiple codes simultaneously in a single frame and return immediately (default)
///   </li>
///   <li>
///     <code>true</code>: Collect multiple codes over time before returning when user taps Done
///   </li>
/// </ul>
/// Example:
/// \code
/// // Standard mode - return codes immediately (default)
/// let standardConfig = GSKBarcodeScanFlowConfiguration(isBatchModeEnabled: false)
///
/// // Batch mode - collect codes over time
/// let batchConfig = GSKBarcodeScanFlowConfiguration(isBatchModeEnabled: true)
///
/// \endcode
@property (nonatomic) BOOL isBatchModeEnabled;
/// The highlight color used for the UI (overlay). Defaults
/// to <code>.green</code>. For good contrast, we recommend using a bright color.
@property (nonatomic, strong) UIColor * _Nonnull highlightColor;
/// The menu color used for the UI. Defaults to <code>nil</code>, meaning that the system
/// default color will be used (blue on iOS, for example).
@property (nonatomic, strong) UIColor * _Nullable menuColor;
/// Creates a new barcode scan flow configuration with default values
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDictionary;
@interface GSKBarcodeScanFlowConfiguration (SWIFT_EXTENSION(GSSDK))
/// Create a configuration from a dictionary.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
+ (GSKBarcodeScanFlowConfiguration * _Nullable)configurationWithDictionary:(NSDictionary * _Nonnull)dictionary error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Create a configuration from JSON data.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
+ (GSKBarcodeScanFlowConfiguration * _Nullable)configurationWithJSON:(NSString * _Nonnull)json error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end

/// The result of a barcode scanning flow.
/// This class encapsulates the successful outcome of a barcode or QR code scanning session,
/// containing the detected barcode or QR code data.
SWIFT_CLASS("_TtC5GSSDK24GSKBarcodeScanFlowResult")
@interface GSKBarcodeScanFlowResult : NSObject
/// The detected barcodes containing their decoded values and types.
/// This property provides access to an array of detected codes, each containing
/// both the string content and format type (e.g., QR code, Code 128, EAN-13, etc.).
/// <ul>
///   <li>
///     For standard mode: Contains all codes detected in a single frame
///   </li>
///   <li>
///     For batch mode: Contains all codes collected over the scanning session
///   </li>
/// </ul>
@property (nonatomic, readonly, copy) NSArray<GSKBarcode *> * _Nonnull barcodes;
/// Creates a new barcode scan flow result.
/// \param barcodes The detected barcodes.
///
- (nonnull instancetype)initWithBarcodes:(NSArray<GSKBarcode *> * _Nonnull)barcodes OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface GSKBarcodeScanFlowResult (SWIFT_EXTENSION(GSSDK))
/// Returns a dictionary representation of the result
/// The dictionary contains:
/// <ul>
///   <li>
///     barcodes: An array of code dictionaries, each containing:
///     <ul>
///       <li>
///         value: The decoded string value
///       </li>
///       <li>
///         type: The code type as a string (e.g., “qr”, “code128”)
///       </li>
///     </ul>
///   </li>
/// </ul>
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull dictionary;
/// Returns a JSON representation of the result.
/// See <code>dictionary</code> for an explanation of the JSON data’s structure.
- (NSString * _Nonnull)json SWIFT_WARN_UNUSED_RESULT;
@end

/// Represents an error raised by the camera session
typedef SWIFT_ENUM(NSInteger, GSKCameraSessionError, open) {
  GSKCameraSessionErrorOther = -1,
  GSKCameraSessionErrorNotAuthorized = -2,
  GSKCameraSessionErrorLockDevice = -3,
  GSKCameraSessionErrorNoDevice = -4,
  GSKCameraSessionErrorInvalidSetupDependency = -5,
  GSKCameraSessionErrorNoVideoCaptureConnection = -6,
  GSKCameraSessionErrorInvalidData = -7,
  GSKCameraSessionErrorBadInput = -8,
  GSKCameraSessionErrorWarnLockDevice = -1003,
};

@class NSCoder;
@class NSBundle;
/// A camera view controller to scan documents or barcodes.
/// Inherit from this view controller to create a custom scanning experience. Lay out the <code>cameraView</code> as desired:
/// By default, <code>cameraView</code> fills the entire screen. You can disable its resizing mask
/// (<code>cameraView.translatesAutoresizingMaskIntoConstraints</code>) and use Auto Layout constraints.
/// note:
///
/// When a photo of a document is taken, whether manually or automatically, the capture session is paused
/// and a delegate callback (<code>cameraViewController(_:didGenerateScan:)</code>) is called when the photo is ready.
/// In this callback, you can decide whether to exit the camera view controller (if you just need to scan a
/// single page), or keep scanning more images (to support a “batch scanning” flow). For the latter scenario,
/// you will need to resume the camera session (see <code>resume()</code>). You also need to “reveal” the shutter screen
/// (see <code>hideShutterView(animated:)</code>).
SWIFT_CLASS("_TtC5GSSDK23GSKCameraViewController")
@interface GSKCameraViewController : UIViewController
/// Requests camera access if needed.
/// This returns immediately when access is already determined. It only shows the system prompt
/// when access has not been requested yet.
///
/// returns:
/// <code>true</code> when access is authorized.
+ (void)requestCameraAccessWithCompletionHandler:(void (^ _Nonnull)(BOOL))completionHandler;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER SWIFT_UNAVAILABLE;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
/// Manually trigger a photo.
/// Use this to handle the user tapping on a “take photo” button, or your own
/// custom logic to take a photo.
- (void)takePhoto;
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
@end

@interface GSKCameraViewController (SWIFT_EXTENSION(GSSDK))
@end

/// A document detection mode
/// When detecting a document, the camera controller can just highlight the document, or also
/// highlight and trigger the photo when the detection is stable enough.
typedef SWIFT_ENUM(NSInteger, DocumentDetectionMode, open) {
/// Visual highlighting only.
/// The camera will detect document edges and provide visual feedback by drawing
/// a document overlay, but will not automatically capture photos. Users must
/// manually trigger photo capture.
  DocumentDetectionModeHighlightOnly = 0,
/// Highlighting with automatic capture.
/// Similar to <code>highlightOnly</code>, but the camera will automatically take a photo
/// when a stable document is detected for a sufficient duration. This provides
/// a hands-free scanning experience.
  DocumentDetectionModeHighlightAndAutoCapture = 1,
};

@interface GSKCameraViewController (SWIFT_EXTENSION(GSSDK))
@end

/// Constants indicating an interruption reason for the camera session.
typedef SWIFT_ENUM(NSInteger, InterruptionReason, open) {
/// An interruption caused by the app being sent to the background while using a camera.
  InterruptionReasonVideoDeviceNotAvailableInBackground = 0,
/// An interruption caused by the audio hardware temporarily being made unavailable, for instance,
/// for a phone call, or alarm.
  InterruptionReasonAudioDeviceInUseByAnotherClient = 1,
/// An interruption caused by the video device temporarily being made unavailable, for instance,
/// when stolen away by another app.
  InterruptionReasonVideoDeviceInUseByAnotherClient = 2,
/// An interruption caused when the app is running in a multi-app layout, causing resource contention
/// and degraded recording quality of service. Given your present session configuration, the
/// session may only be run if your app occupies the full screen.
  InterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps = 3,
/// An interruption caused by the video device temporarily being made unavailable due to system pressure,
/// such as thermal duress.
  InterruptionReasonVideoDeviceNotAvailableDueToSystemPressure = 4,
  InterruptionReasonUnknown = 5,
};

@interface GSKCameraViewController (SWIFT_EXTENSION(GSSDK))
/// Factory method for a camera view controller with document detection.
/// This is only to be used from Objective-C. From Swift, prefer using <code>init(configuration:)</code> instead.
/// \param documentDetectionMode The document detection mode.
///
/// \param documentOverlayColor The color of the document overlay.
///
+ (void)makeCameraViewControllerWithDocumentDetectionMode:(enum DocumentDetectionMode)documentDetectionMode documentOverlayColor:(UIColor * _Nonnull)documentOverlayColor completionHandler:(void (^ _Nonnull)(GSKCameraViewController * _Nullable, NSError * _Nullable))completionHandler;
@end

@class GSKQuadrangle;
@class GSKScan;
SWIFT_PROTOCOL("_TtP5GSSDK31GSKCameraViewControllerDelegate_")
@protocol GSKCameraViewControllerDelegate
@optional
/// The camera view controller failed with an error.
/// \param cameraViewController The camera view controller
///
/// \param error The encountered error.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController didFailWithError:(NSError * _Nonnull)error;
/// The camera view controller encountered a non-fatal error.
/// \param cameraViewController The camera view controller
///
/// \param error The encountered error.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController didEncounterNonCriticalError:(NSError * _Nonnull)error;
/// The camera view controller was interrupted.
/// This can happen in various cases, including when the user goes to Split View mode on iPad.
/// \param cameraViewController The camera view controller
///
/// \param reason The reason why the camera view controller was interrupted.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController wasInterruptedWithReason:(enum InterruptionReason)reason;
/// The camera view controller resumes after interruption
/// \param cameraViewController The camera view controller
///
- (void)cameraViewControllerInterruptionDidEnd:(GSKCameraViewController * _Nonnull)cameraViewController;
/// The camera view controller is still looking for a quadrangle.
/// This is a general notification about the status of the search: we may or may not have identified
/// its edges. If you want to act on identified edges, listen to the <code>cameraViewController:didFindDocumentWithQuadrangle:</code>
/// delegate method.
/// <ul>
///   <li>
///     Parameters:
///   </li>
///   <li>
///     cameraViewController: The camera view controller
///   </li>
/// </ul>
- (void)cameraViewControllerIsSearchingForDocument:(GSKCameraViewController * _Nonnull)cameraViewController;
/// The camera view controller identified a document in the last frame of the photo stream
/// \param cameraViewController The camera view controller
///
/// \param quadrangle The quadrangle of the document that has been found.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController didFindDocumentWithQuadrangle:(GSKQuadrangle * _Nonnull)quadrangle;
/// The camera view controller couldn’t identify a document in the last frame of the photo stream.
/// This doesn’t mean that the camera view controller has stopped searching for documents or failed.
/// It just means no document has been identified. In this case, you want to clear any overlay.
/// \param cameraViewController The camera view controller
///
- (void)cameraViewControllerFailedToFindDocument:(GSKCameraViewController * _Nonnull)cameraViewController;
/// The camera view controller real-time document detection will soon take the photo of a quadrangle, but if the document
/// detection is not stable enough, the process can still be
/// cancelled.
/// It’s a good time to tell the user to remain stable.
/// Only called when the document detection is set to .highlightAndAutoCapture.
/// \param cameraViewController The camera view controller
///
- (void)cameraViewControllerPhotoStabilizationDidStart:(GSKCameraViewController * _Nonnull)cameraViewController;
/// The camera view controller is about to decide whether to automatically take a photo because the detection was stable enough.
/// This is an override point where you can return <code>false</code> to stop that automatic process from proceeding.
/// \param cameraViewController The camera view controller
///
- (BOOL)cameraViewControllerShouldSnapPhoto:(GSKCameraViewController * _Nonnull)cameraViewController SWIFT_WARN_UNUSED_RESULT;
/// The camera view controller is going to automatically take a photo because the detection was stable enough.
/// The photo taking is underway and cannot be interrupted at this stage.
/// \param cameraViewController The camera view controller
///
/// \param quadrangle The quadrangle of the document that will be photographed.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController willSnapPhotoWithQuadrangle:(GSKQuadrangle * _Nonnull)quadrangle;
/// The camera view controller just took a photo, but it hasn’t been post-processed it yet
/// \param cameraViewController The camera view controller
///
- (void)cameraViewControllerDidSnapPhoto:(GSKCameraViewController * _Nonnull)cameraViewController;
/// The camera view controller has finished processing the photo we just took.
/// \param cameraViewController The camera view controller
///
/// \param scan The scan object that has been generated. The image contained in the scan object is the full,
/// unprocessed image in which the document was detected. Use <code>GSKScanProcessor</code> to process and
/// warp and enhance the scanned document.
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController didGenerateScan:(GSKScan * _Nonnull)scan;
/// Camera view controller has detected barcodes.
/// \param cameraViewController The camera view controller
///
/// \param barcodes The detected barcodes
///
- (void)cameraViewController:(GSKCameraViewController * _Nonnull)cameraViewController didFindBarcodes:(NSArray<GSKBarcode *> * _Nonnull)barcodes;
@end

/// The type of document detected by the document finder.
typedef SWIFT_ENUM(NSInteger, GSKDocumentFinderImageType, closed) {
/// No document present in the image
  GSKDocumentFinderImageTypeNoDocument = 0,
/// A document is present in the image, but no crop or perspective correction has been applied.
  GSKDocumentFinderImageTypeUnwarped = 1,
/// A document is present in the image, and crop and perspective correction have been applied.
  GSKDocumentFinderImageTypeWarped = 2,
/// A document is present in the image, and crop/perspective correction and
/// enhancement have been applied.
  GSKDocumentFinderImageTypeEnhanced = 3,
};

@class GSKPDFDocument;
@protocol GSKDocumentImageProcessor;
@class GSKDocumentGeneratorConfiguration;
/// This class exposes the capability to generate a PDF or TIFF multi-page document file.
SWIFT_CLASS("_TtC5GSSDK20GSKDocumentGenerator")
@interface GSKDocumentGenerator : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Generates a document file based on a document model and a generator configuration.
/// \param document The source document to generate as PDF or TIFF depending on the configuration.
///
/// \param imageProcessor An object used to process each source document’s image before inserting it in the resulting document.
/// Only used when generating a PDF document
///
/// \param configuration The configuration for the document generation.
///
- (BOOL)generate:(GSKPDFDocument * _Nonnull)document imageProcessor:(id <GSKDocumentImageProcessor> _Nonnull)imageProcessor configuration:(GSKDocumentGeneratorConfiguration * _Nonnull)configuration error:(NSError * _Nullable * _Nullable)error;
/// Generates a document file based on a document model and a generator configuration.
/// \param document The source document to generate as PDF or TIFF depending on the configuration.
///
/// \param configuration The configuration for the document generation.
///
- (BOOL)generate:(GSKPDFDocument * _Nonnull)document configuration:(GSKDocumentGeneratorConfiguration * _Nonnull)configuration error:(NSError * _Nullable * _Nullable)error;
@end

SWIFT_ENUM_FWD_DECL(NSInteger, GSKDocumentGeneratorFileFormat)
@class GSKDocumentGeneratorDebugConfiguration;
/// A configuration for the document generator.
SWIFT_CLASS("_TtC5GSSDK33GSKDocumentGeneratorConfiguration")
@interface GSKDocumentGeneratorConfiguration : NSObject
+ (GSKDocumentGeneratorConfiguration * _Nonnull)pdfConfigurationWithOutputFilePath:(NSString * _Nonnull)outputFilePath SWIFT_WARN_UNUSED_RESULT;
+ (GSKDocumentGeneratorConfiguration * _Nonnull)tiffConfigurationWithOutputFilePath:(NSString * _Nonnull)outputFilePath SWIFT_WARN_UNUSED_RESULT;
/// The output file format of the document generator. Must be .pdf or .tiff.
@property (nonatomic, readonly) enum GSKDocumentGeneratorFileFormat outputFileFormat;
/// The path where the generated document will be written. The extension will not be validated.
@property (nonatomic, readonly, copy) NSString * _Nonnull outputFilePath;
/// Custom font file used during the PDF generation to embed an invisible text layer.
/// If nil, a default font is used, which only supports Latin languages.
/// Only used when <code>outputFileFormat</code> is <code>.pdf</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable pdfFontFilePath;
/// Generate a PDF/A document
@property (nonatomic, readonly) BOOL shouldGeneratePDFA;
/// An optional debug configuration to help debug PDF generation problems.
/// Don’t use this in production. Default is nil.
@property (nonatomic, readonly, strong) GSKDocumentGeneratorDebugConfiguration * _Nullable debugConfiguration;
- (nonnull instancetype)initWithOutputFileFormat:(enum GSKDocumentGeneratorFileFormat)outputFileFormat outputFilePath:(NSString * _Nonnull)outputFilePath pdfFontFilePath:(NSString * _Nullable)pdfFontFilePath shouldGeneratePDFA:(BOOL)shouldGeneratePDFA debugConfiguration:(GSKDocumentGeneratorDebugConfiguration * _Nullable)debugConfiguration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface GSKDocumentGeneratorConfiguration (SWIFT_EXTENSION(GSSDK))
/// Initialize an instance of this type with a dictionary.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
- (nullable instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary error:(NSError * _Nullable * _Nullable)error;
/// Initialize an instance of this type with JSON data.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
- (nullable instancetype)initWithJson:(NSString * _Nonnull)json error:(NSError * _Nullable * _Nullable)error;
@end

SWIFT_CLASS("_TtC5GSSDK38GSKDocumentGeneratorDebugConfiguration")
@interface GSKDocumentGeneratorDebugConfiguration : NSObject
/// If true, OCR’ed text will be visible on the PDF.
/// Defaults to false. Use this for debug only
@property (nonatomic, readonly) BOOL isOCRTextShownOnPDF;
- (nonnull instancetype)initWithIsOCRTextShownOnPDF:(BOOL)isOCRTextShownOnPDF OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Error raised while generating a multi-page document
typedef SWIFT_ENUM(NSInteger, GSKDocumentGeneratorError, open) {
/// An internal error. Look at logs or contact us for more details.
  GSKDocumentGeneratorErrorInternal SWIFT_COMPILE_NAME("internal") = 0,
/// A provided file wasn’t found.
  GSKDocumentGeneratorErrorFileNotFound SWIFT_COMPILE_NAME("fileNotFound") = 1,
/// The provided password is invalid for use in a PDF file.
  GSKDocumentGeneratorErrorInvalidPassword SWIFT_COMPILE_NAME("invalidPassword") = 2,
/// The provided page size is unsupported for a PDF file.
  GSKDocumentGeneratorErrorInvalidPageSize SWIFT_COMPILE_NAME("invalidPageSize") = 3,
/// There was an error processing the image associated to a document page.
  GSKDocumentGeneratorErrorProcessorError SWIFT_COMPILE_NAME("processorError") = 4,
/// An input to the document generator is invalid.
  GSKDocumentGeneratorErrorInvalidInput SWIFT_COMPILE_NAME("invalidInput") = 5,
};
static NSString * _Nonnull const GSKDocumentGeneratorErrorDomain = @"GSSDK.GSKDocumentGeneratorError";

typedef SWIFT_ENUM(NSInteger, GSKDocumentGeneratorFileFormat, open) {
  GSKDocumentGeneratorFileFormatPDF SWIFT_COMPILE_NAME("pdf") = 0,
  GSKDocumentGeneratorFileFormatTIFF SWIFT_COMPILE_NAME("tiff") = 1,
};

/// Used to preprocess pages of the PDF generation.
/// When you generate a PDF document from images, you may want to apply some preprocessing to each image
/// before inserting them in the document (for instance resizing them, including a watermark, etc.) You can
/// implement your own PDF_image_processor and pass it when generating a PDF document.
/// to achieve this.
SWIFT_PROTOCOL("_TtP5GSSDK25GSKDocumentImageProcessor_")
@protocol GSKDocumentImageProcessor
/// Process the image and return a file path to the
/// updated image. The PDF processor will delete this temporary
/// image afterwards (only if it’s different from inputFilePath)
/// @return nil if there is an error
- (NSString * _Nullable)process:(NSString * _Nonnull)inputFilePath SWIFT_WARN_UNUSED_RESULT;
@end

@class UIImage;
@class UIView;
/// A view controller that displays a scanned image with an interactive quadrangle overlay
/// for manual cropping and perspective adjustment.
/// <code>GSKEditFrameViewController</code> presents an image and allows the user to refine the detected
/// document boundaries by dragging the quadrangle’s corner and side handles. As the user edits the
/// quadrangle, changes are reflected in the <code>quadrangle</code> property, which is Key-Value
/// Observing (KVO) compliant.
/// The overlay’s appearance—including colors, handle size, transparency, and magnifier
/// behavior—can be customized through the exposed properties. This view controller is
/// typically used after automatic document detection, to let the user fine-tune the crop
/// before further processing (such as perspective correction or export).
SWIFT_CLASS("_TtC5GSSDK26GSKEditFrameViewController")
@interface GSKEditFrameViewController : UIViewController
/// The image on which the quadrangle is overlaid.
@property (nonatomic, strong) UIImage * _Nonnull image;
@property (nonatomic, readonly, strong) UIView * _Nonnull frameView;
/// Used to set the quadrangle to display in the view controller, and to retrieve the new quadrangle edited by the user.
@property (nonatomic, strong) GSKQuadrangle * _Nonnull quadrangle;
/// Insets applied around the image.
/// By default this matches half the quadrangle overlay handle width, so handles remain visible even when
/// the corners are on the edge of the image.
@property (nonatomic) CGFloat inset;
/// Customize the color of the shade within the quadrangle.
@property (nonatomic, strong) UIColor * _Nonnull shadeColor SWIFT_DEPRECATED_MSG("Deprecated in favor of frameView.imageSelection.insideShadeColor.");
/// Customize the color of the shade outside the quadrangle.
@property (nonatomic, strong) UIColor * _Nonnull outsideShadeColor;
/// Customize the color of the line used to draw the quadrangle.
@property (nonatomic, strong) UIColor * _Nonnull lineColor;
/// Customize the width of the frame handles.
@property (nonatomic) CGFloat handleWidth;
/// Customize the transparency of the entire overlay
@property (nonatomic) CGFloat overlayAlpha;
/// Customize the magnifier center style shown while dragging frame handles.
@property (nonatomic) GSKMagnifierViewCenterStyle magnifierViewCenterStyle;
/// \param image The image on which to draw the quadrangle. This is typically the original photo from the camera.
///
/// \param quadrangle The initial quadrangle to display.
///
- (nonnull instancetype)initWithImage:(UIImage * _Nonnull)image quadrangle:(GSKQuadrangle * _Nonnull)quadrangle OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER SWIFT_UNAVAILABLE;
- (void)setQuadrangle:(GSKQuadrangle * _Nonnull)quadrangle animated:(BOOL)animated;
- (void)viewDidLoad;
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
@end

/// A configuration to specify the background cleaning to apply with GSKScanProcessor.
SWIFT_CLASS("_TtC5GSSDK40GSKFilterBackgroundCleaningConfiguration")
@interface GSKFilterBackgroundCleaningConfiguration : NSObject
/// Determines if the edges of the document must be cleaned or not. Cleaning the edges might result in erasing
/// some information that’s close the edges but yields a much cleaner document.
@property (nonatomic, readonly) GSKEdgeCleaning edgeCleaning;
/// Determines if the document’s background is rather light (white) or dark (black).
@property (nonatomic, readonly) GSKBackgroundKind backgroundKind;
/// Determines if the document is composed mainly of text, or contains a mix of text and photos.
@property (nonatomic, readonly) GSKDocumentComposition documentComposition;
/// Determines the strength of the background cleaning. Value between 0 and 1.
@property (nonatomic, readonly) CGFloat strength;
/// \param edgeCleaning If enabled, the document edges will be cleaned up. This helps if the document is torn or folded in
/// the corners, of if the cropping wasn’t perfectly accurate.
///
/// \param backgroundKind If set to dark, the document is considered as having a dark background, and will be processed
/// consequently.
///
/// \param documentComposition If set to “Text and photo”, indicates that document is a composite of text and photos (such
/// as a magazine page). The filter will be less aggressive to preserve the photos.
///
/// \param strength The strength of the filter, between 0 and 1.
///
- (nonnull instancetype)initWithEdgeCleaning:(GSKEdgeCleaning)edgeCleaning backgroundKind:(GSKBackgroundKind)backgroundKind documentComposition:(GSKDocumentComposition)documentComposition strength:(CGFloat)strength OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

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

@interface GSKFilterBackgroundCleaningConfiguration (SWIFT_EXTENSION(GSSDK))
@property (nonatomic, readonly) NSUInteger hash;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

/// A configuration to determine the colors of the output of the GSKScanProcessor.
SWIFT_CLASS("_TtC5GSSDK27GSKFilterColorConfiguration")
@interface GSKFilterColorConfiguration : NSObject
/// A configuration that results in a monochrome document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterColorConfiguration * _Nonnull monochrome;)
+ (GSKFilterColorConfiguration * _Nonnull)monochrome SWIFT_WARN_UNUSED_RESULT;
/// A configuration that results in a grayscale document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterColorConfiguration * _Nonnull grayscale;)
+ (GSKFilterColorConfiguration * _Nonnull)grayscale SWIFT_WARN_UNUSED_RESULT;
/// A configuration that results in a color document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterColorConfiguration * _Nonnull color;)
+ (GSKFilterColorConfiguration * _Nonnull)color SWIFT_WARN_UNUSED_RESULT;
/// The palette of colors
@property (nonatomic, readonly) GSKFilterColorPalette palette;
- (nonnull instancetype)initWithPalette:(GSKFilterColorPalette)palette OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

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

@interface GSKFilterColorConfiguration (SWIFT_EXTENSION(GSSDK))
@property (nonatomic, readonly) NSUInteger hash;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

@class GSKFilterLightingCorrectionConfiguration;
/// The configuration to use when applying a document enhancement filter.
SWIFT_CLASS("_TtC5GSSDK22GSKFilterConfiguration")
@interface GSKFilterConfiguration : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull noOp;)
+ (GSKFilterConfiguration * _Nonnull)noOp SWIFT_WARN_UNUSED_RESULT;
/// A photo filter configuration (no background cleaning)
/// \param lightingCorrectionConfiguration an optional lighting correction configuration. If nil, no correction is applied.
///
/// \param colorConfiguration an optional color configuration. If nil, the color configuration is used.
///
+ (GSKFilterConfiguration * _Nonnull)photoWithLightingCorrectionConfiguration:(GSKFilterLightingCorrectionConfiguration * _Nullable)lightingCorrectionConfiguration colorConfiguration:(GSKFilterColorConfiguration * _Nullable)colorConfiguration SWIFT_WARN_UNUSED_RESULT;
+ (GSKFilterConfiguration * _Nonnull)configurationWithLightingCorrectionConfiguration:(GSKFilterLightingCorrectionConfiguration * _Nullable)lightingCorrectionConfiguration backgroundCleaningConfiguration:(GSKFilterBackgroundCleaningConfiguration * _Nullable)backgroundCleaningConfiguration colorConfiguration:(GSKFilterColorConfiguration * _Nullable)colorConfiguration SWIFT_WARN_UNUSED_RESULT;
/// The lighting configuration
/// Determines the parameters to tune the image levels, contrast.
@property (nonatomic, readonly, strong) GSKFilterLightingCorrectionConfiguration * _Nullable lightingCorrectionConfiguration;
/// The background cleaning configuration
/// Determines the cleaning up of the document’s background.
@property (nonatomic, readonly, strong) GSKFilterBackgroundCleaningConfiguration * _Nullable backgroundCleaningConfiguration;
/// The color configuration
/// Determines the filter’s output colors.
@property (nonatomic, readonly, strong) GSKFilterColorConfiguration * _Nullable colorConfiguration;
/// A filter configuration.
/// \param lightingCorrectionConfiguration an optional lighting correction configuration. If nil, no correction is applied.
///
/// \param backgroundCleaningConfiguration an optional background cleaning configuration. If nil, no background
/// cleaning is applied.
///
/// \param colorConfiguration an optional color configuration. If nil, the color configuration is used.
///
- (nonnull instancetype)initWithLightingCorrectionConfiguration:(GSKFilterLightingCorrectionConfiguration * _Nullable)lightingCorrectionConfiguration backgroundCleaningConfiguration:(GSKFilterBackgroundCleaningConfiguration * _Nullable)backgroundCleaningConfiguration colorConfiguration:(GSKFilterColorConfiguration * _Nullable)colorConfiguration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface GSKFilterConfiguration (SWIFT_EXTENSION(GSSDK))
@property (nonatomic, readonly) NSUInteger hash;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

@interface GSKFilterConfiguration (SWIFT_EXTENSION(GSSDK))
/// A soft document filter resulting in a grayscale document.
/// This filter is ideal for documents with light print such as carbon copy,
/// documents with pale text that you need to preserve, or documents where the
/// text has little contrast with the background.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull softGrayscale;)
+ (GSKFilterConfiguration * _Nonnull)softGrayscale SWIFT_WARN_UNUSED_RESULT;
/// A soft document filter resulting in a color document.
/// This filter is ideal for documents that mix text and images and it also preserves
/// text with low contrast.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull softColor;)
+ (GSKFilterConfiguration * _Nonnull)softColor SWIFT_WARN_UNUSED_RESULT;
/// A strong document filter resulting in a monochrome document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull strongMonochrome;)
+ (GSKFilterConfiguration * _Nonnull)strongMonochrome SWIFT_WARN_UNUSED_RESULT;
/// A strong document filter resulting in a grayscale document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull strongGrayscale;)
+ (GSKFilterConfiguration * _Nonnull)strongGrayscale SWIFT_WARN_UNUSED_RESULT;
/// A strong document filter resulting in a color document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull strongColor;)
+ (GSKFilterConfiguration * _Nonnull)strongColor SWIFT_WARN_UNUSED_RESULT;
/// A filter specially designed for photos.
/// Unlike document filters, this filter will not attempt any background cleaning but will
/// slightly improve the lighting of the image.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull photo;)
+ (GSKFilterConfiguration * _Nonnull)photo SWIFT_WARN_UNUSED_RESULT;
/// A filter specially designed to treat documents with a dark background, in particular white text
/// over a black background.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterConfiguration * _Nonnull darkBackground;)
+ (GSKFilterConfiguration * _Nonnull)darkBackground SWIFT_WARN_UNUSED_RESULT;
@end

/// A configuration to adjust the lighting of a document with GSKScanProcessor.
SWIFT_CLASS("_TtC5GSSDK40GSKFilterLightingCorrectionConfiguration")
@interface GSKFilterLightingCorrectionConfiguration : NSObject
/// A configuration that doesn’t adjust the lighting of a document.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterLightingCorrectionConfiguration * _Nonnull noOp;)
+ (GSKFilterLightingCorrectionConfiguration * _Nonnull)noOp SWIFT_WARN_UNUSED_RESULT;
/// A configuration to adjust the lighting of document containing text.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterLightingCorrectionConfiguration * _Nonnull textDocument;)
+ (GSKFilterLightingCorrectionConfiguration * _Nonnull)textDocument SWIFT_WARN_UNUSED_RESULT;
/// A configuration to adjust the lighting of a document looking like a photo.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKFilterLightingCorrectionConfiguration * _Nonnull photos;)
+ (GSKFilterLightingCorrectionConfiguration * _Nonnull)photos SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) CGFloat minThreshold;
@property (nonatomic, readonly) CGFloat maxThreshold;
- (nonnull instancetype)initWithMinThreshold:(CGFloat)minThreshold maxThreshold:(CGFloat)maxThreshold OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

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

@interface GSKFilterLightingCorrectionConfiguration (SWIFT_EXTENSION(GSSDK))
@property (nonatomic, readonly) NSUInteger hash;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM(NSInteger, GSKFlashStatus, open) {
  GSKFlashStatusAuto = 0,
  GSKFlashStatusOn = 1,
  GSKFlashStatusOff = 2,
};

SWIFT_ENUM_FWD_DECL(NSInteger, GSKIntegrationFramework)
SWIFT_CLASS_NAMED("GSKIntegrationContext")
@interface GSKIntegrationContext : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) enum GSKIntegrationFramework currentFramework;)
+ (enum GSKIntegrationFramework)currentFramework SWIFT_WARN_UNUSED_RESULT;
+ (void)markScanFlowIntegrationDetected;
+ (void)markLowLevelComponentUsed;
+ (void)setFramework:(enum GSKIntegrationFramework)framework;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

typedef SWIFT_ENUM_NAMED(NSInteger, GSKIntegrationFramework, "GSKIntegrationFramework", open) {
  GSKIntegrationFrameworkNative = 0,
  GSKIntegrationFrameworkReactNative = 1,
  GSKIntegrationFrameworkCordova = 2,
  GSKIntegrationFrameworkFlutter = 3,
  GSKIntegrationFrameworkDotnet = 4,
  GSKIntegrationFrameworkCapacitor = 5,
};

/// A document image processor that performs no operation and returns the input file as an output
SWIFT_CLASS("_TtC5GSSDK29GSKNoopDocumentImageProcessor")
@interface GSKNoopDocumentImageProcessor : NSObject <GSKDocumentImageProcessor>
- (NSString * _Nullable)process:(NSString * _Nonnull)inputFilePath SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol GSKLogger;
@class GSKOCRConfiguration;
@class GSKOCRResult;
/// A type that performs Optical Character Recognition (OCR) on a scanned document.
SWIFT_CLASS("_TtC5GSSDK6GSKOCR")
@interface GSKOCR : NSObject
- (nonnull instancetype)initWithLogger:(id <GSKLogger> _Nonnull)logger OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init;
/// Recognize the text in the provided image
/// \param imagePath The path of the image to recognize. Ideally, provide the original, cropped image, and not the enhanced image.
/// The OCR decides what post-processing to apply for the best results.
///
/// \param configuration Configuration for the OCR process, in particular the language in which the OCR is
/// performed. Note that you must provide the appropriate trained data.
///
/// \param progressBlock The progress between 0 and 1. Called on the same thread.
///
///
/// returns:
/// An OCR result.
- (void)recognizeTextForImageAtPath:(NSString * _Nonnull)imagePath configuration:(GSKOCRConfiguration * _Nonnull)configuration onProgress:(void (^ _Nullable)(float))progressBlock completionHandler:(void (^ _Nonnull)(GSKOCRResult * _Nullable, NSError * _Nullable))completionHandler;
@end

/// The configuration for an OCR operation.
SWIFT_CLASS("_TtC5GSSDK19GSKOCRConfiguration")
@interface GSKOCRConfiguration : NSObject
/// Initialize an OCR configuration for the modern OCR engine.
/// \param languageTags The language codes to perform OCR with.
///
+ (GSKOCRConfiguration * _Nonnull)configurationWithLanguageTags:(NSArray<NSString *> * _Nonnull)languageTags SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class GSKTextLayout;
/// The results of an OCR operation
SWIFT_CLASS("_TtC5GSSDK12GSKOCRResult")
@interface GSKOCRResult : NSObject
/// The recognized text, formatted.
@property (nonatomic, readonly, copy) NSString * _Nonnull text;
/// The recognized text, as a structured text layout.
@property (nonatomic, readonly, strong) GSKTextLayout * _Nonnull textLayout;
- (nonnull instancetype)initWithText:(NSString * _Nonnull)text textLayout:(GSKTextLayout * _Nonnull)textLayout;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSDate;
@class GSKPDFPage;
/// Describes the structure of a PDF document for the PDF generator.
SWIFT_CLASS("_TtC5GSSDK14GSKPDFDocument")
@interface GSKPDFDocument : NSObject
/// If provided, this title will be included in the PDF document properties
@property (nonatomic, readonly, copy) NSString * _Nullable title;
/// If provided, this password will be used to protect the PDF document.
/// It will need to be entered to view or edit the document.
/// AES-256 encryption is used.
/// An empty password is treated as no password.
@property (nonatomic, readonly, copy) NSString * _Nullable password;
/// If provided, the keywords will be included in the PDF document properties
@property (nonatomic, readonly, copy) NSString * _Nullable keywords;
/// If provided, this date will be included in the PDF document properties
@property (nonatomic, readonly, copy) NSDate * _Nullable creationDate;
/// If provided, this date will be included in the PDF document properties
@property (nonatomic, readonly, copy) NSDate * _Nullable lastUpdateDate;
/// List of pages that will be included in the PDF document
@property (nonatomic, readonly, copy) NSArray<GSKPDFPage *> * _Nonnull pages;
- (nonnull instancetype)initWithTitle:(NSString * _Nullable)title password:(NSString * _Nullable)password keywords:(NSString * _Nullable)keywords creationDate:(NSDate * _Nullable)creationDate lastUpdate:(NSDate * _Nullable)lastUpdate pages:(NSArray<GSKPDFPage *> * _Nonnull)pages OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface GSKPDFDocument (SWIFT_EXTENSION(GSSDK))
/// Initialize an instance of this type with a dictionary.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
- (nullable instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary error:(NSError * _Nullable * _Nullable)error;
/// Initialize an instance of this type with JSON data.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
- (nullable instancetype)initWithJson:(NSString * _Nonnull)json error:(NSError * _Nullable * _Nullable)error;
@end

@class GSKPDFSize;
/// Describes a page of a PDF document for the PDF generator.
SWIFT_CLASS("_TtC5GSSDK10GSKPDFPage")
@interface GSKPDFPage : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull filePath;
@property (nonatomic, readonly, strong) GSKPDFSize * _Nonnull inchesSize;
@property (nonatomic, readonly, strong) GSKTextLayout * _Nullable textLayout;
- (nonnull instancetype)initWithFilePath:(NSString * _Nonnull)filePath inchesSize:(GSKPDFSize * _Nonnull)inchesSize textLayout:(GSKTextLayout * _Nullable)textLayout OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Physical size of a PDF page in inches.
/// If the aspect ratio doesn’t match the aspect ratio of the page in pixels,
/// margins will be added on both sides of the page image.
/// If 0 is provided for the width or height, it is computed to match the aspect ratio
/// of the image. Eg, for a receipt, we usually use width = 3.54f and height = 0.
SWIFT_CLASS("_TtC5GSSDK10GSKPDFSize")
@interface GSKPDFSize : NSObject
@property (nonatomic, readonly) double width;
@property (nonatomic, readonly) double height;
- (nonnull instancetype)initWithWidth:(double)width height:(double)height OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, GSKReceiptCategory, open) {
  GSKReceiptCategoryGas = 0,
  GSKReceiptCategoryTransportation = 1,
  GSKReceiptCategoryAccomodation = 2,
  GSKReceiptCategoryRestaurant = 3,
  GSKReceiptCategorySupermarket = 4,
  GSKReceiptCategoryOther = 5,
};

/// A VAT rate and its associated amount detected on a receipt.
SWIFT_CLASS("_TtC5GSSDK13GSKReceiptVAT")
@interface GSKReceiptVAT : NSObject
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class GSKScanFlowConfiguration;
/// A UI-driven scan flow for turning physical documents into processed digital pages.
/// Create an instance with <code>GSKScanFlowConfiguration</code> to choose the source
/// (camera, photo library, or image URL), multi-page behavior, output format,
/// filters, OCR, and structured-data extraction. Present the flow from a view
/// controller and await a <code>GSKScanFlowResult</code> with the captured pages and the
/// optional multi-page document.
/// important:
/// If you start a scan flow with the camera, your app must declare the
/// <code>NSCameraUsageDescription</code> key in <code>Info.plist</code>.
SWIFT_CLASS("_TtC5GSSDK11GSKScanFlow")
@interface GSKScanFlow : NSObject
- (nonnull instancetype)initWithConfiguration:(GSKScanFlowConfiguration * _Nonnull)configuration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class GSKScanFlowResult;
@interface GSKScanFlow (SWIFT_EXTENSION(GSSDK))
/// Instantiates a <code>GSKScanFlow</code> instance with the provided configuration.
/// This initializer is only available from Objective-C.
+ (nonnull instancetype)scanFlowWithConfiguration:(GSKScanFlowConfiguration * _Nonnull)configuration SWIFT_WARN_UNUSED_RESULT;
/// Present the scan flow.
/// @param viewController The view controller to present the scan flow from.
/// @param completionBlock A completion block/closure that will be called on the main
/// thread upon completion of the scan flow. It receives a <code>GSKScanFlowResult</code> object as
/// a parameter. This object gives you access to the scanned documents.
/// @param errorBlock A block/closure called if an error was encountered.
- (void)startFromViewController:(UIViewController * _Nonnull)viewController onSuccess:(void (^ _Nonnull)(GSKScanFlowResult * _Nonnull))completionBlock failure:(void (^ _Nonnull)(NSError * _Nonnull))errorBlock;
@end

SWIFT_ENUM_FWD_DECL(NSUInteger, GSKScanFlowSource)
@class NSURL;
SWIFT_ENUM_FWD_DECL(NSInteger, GSKScanOrientation)
SWIFT_ENUM_FWD_DECL(NSInteger, GSKScanFlowFilterType)
SWIFT_ENUM_FWD_DECL(NSUInteger, GSKScanFlowPDFPageSize)
SWIFT_ENUM_FWD_DECL(NSUInteger, GSKScanFlowFlashMode)
SWIFT_ENUM_FWD_DECL(NSUInteger, GSKScanFlowMultiPageFormat)
@class GSKScanFlowOCRConfiguration;
/// Enables configuration of a <code>GSKScanFlow</code> instance.
/// Pass an instance of this class to the initializer of <code>GSKScanFlow</code>
/// to build the desired scan flow.
SWIFT_CLASS("_TtC5GSSDK24GSKScanFlowConfiguration")
@interface GSKScanFlowConfiguration : NSObject
/// Specifies the source for the scanned documents (eg. the camera, …).
/// If source is <code>.imageURL</code>, then you must assign a <code>sourceImageURL</code>.
@property (nonatomic) enum GSKScanFlowSource source;
/// The image URL if the <code>source</code> is <code>.imageURL</code>.
@property (nonatomic, copy) NSURL * _Nullable sourceImageURL;
/// Whether multi page mode should be used. Only applies when the source
/// is <code>.camera</code>. When multipage mode is active, the user will have the
/// opportunity to snap multiple scans in a row and the output document
/// will contain all those pages. When multipage mode is off, the user
/// will only scan a single page. The output document will always contain
/// a single page. Defaults to <code>true</code>.
@property (nonatomic) BOOL multiPage;
/// Whether the user should be presented with a screen that lets them review all
/// captured scans at the end of the scan flow, where they’ll be able to edit each
/// scan once more before finally submitting the captured scans for processing.
/// Defaults to <code>false</code>.
@property (nonatomic) BOOL showFinalReview;
/// What orientation that a scan should be rotated to after it’s been captured.
/// Defaults to <code>automatic</code>. See <code>GSKScanOrientation</code> for more information.
@property (nonatomic) enum GSKScanOrientation defaultScanOrientation;
/// Any specific kind of post-processing to use. Defaults to <code>.automatic</code>.
@property (nonatomic) enum GSKScanFlowFilterType defaultFilter;
/// The minimum readability level that scanned documents are required to have. If a scan has a lower
/// readability level, then a warning will be shown as part of the scanning flow, and the user will be
/// prompted to retry the scan in question.
@property (nonatomic) GSKReadabilityLevel requiredReadabilityLevel;
/// Whether to skip showing the post-processing screen. We only recommend
/// enabling this option when scanning structured data. Generally, you want
/// the user to visually confirm the quality of each scan.
@property (nonatomic) BOOL skipPostProcessingScreen;
/// Select which actions to display within the post-processing screen.
/// Defaults to all actions.
@property (nonatomic) GSKScanFlowPostProcessingActions postProcessingActions;
/// Determines the size of the pages when generating PDFs. Defaults to <code>fit</code>.
@property (nonatomic) enum GSKScanFlowPDFPageSize pdfPageSize;
/// Whether the flash button should be hidden. Defaults to <code>false</code>.
@property (nonatomic) BOOL flashButtonHidden;
/// Whether the photo library button should be hidden during camera-based scan flows. Defaults to <code>false</code>.
@property (nonatomic) BOOL photoLibraryButtonHidden;
/// Determines the default flash mode. Combine this with <code>flashButtonHidden</code>
/// if you want to only allow a specific flash mode. Defaults to <code>.auto</code>.
@property (nonatomic) enum GSKScanFlowFlashMode defaultFlashMode;
/// Determines the document format. Defaults to <code>.PDF</code>.
@property (nonatomic) enum GSKScanFlowMultiPageFormat multiPageFormat;
/// Optional password used to protect generated PDF documents.
/// An empty password is treated as no password.
/// This only applies when <code>multiPageFormat</code> is <code>.pdf</code>.
@property (nonatomic, copy) NSString * _Nullable pdfPassword;
/// Custom font file used during PDF generation to embed an invisible text
/// layer. If <code>nil</code>, a default font is used, which only supports Latin languages.
@property (nonatomic, copy) NSURL * _Nullable pdfFontFileURL;
/// The background color used for the UI. Defaults to <code>.black</code>.
@property (nonatomic, strong) UIColor * _Nonnull backgroundColor;
/// The foreground color used for the UI (text and icons). Defaults to <code>.white</code>.
@property (nonatomic, strong) UIColor * _Nonnull foregroundColor;
/// The highlight color used for the UI (document detection overlay). Defaults
/// to <code>.blue</code>.
@property (nonatomic, strong) UIColor * _Nonnull highlightColor;
/// The menu color used for the UI. Defaults to <code>nil</code>, meaning that the system
/// default color will be used (blue on iOS, for example).
@property (nonatomic, strong) UIColor * _Nullable menuColor;
/// JPEG quality used to compress captured images. Between 0 and 100, with 100
/// being the best quality. Defaults to <code>60</code>.
@property (nonatomic) NSInteger jpegQuality;
/// Max scan dimension in pixels when generating PDF files. All scans included
/// in PDF files will be scaled so that both their height and width are smaller
/// than this value, while maintaining their aspect ratio. Defaults to <code>0</code>, which
/// means no scaling is applied.
@property (nonatomic) NSInteger pdfMaxScanDimension;
/// The configuration for Optical Character Recognition. Default is <code>nil</code>, which
/// means no OCR is performed.
@property (nonatomic, strong) GSKScanFlowOCRConfiguration * _Nullable ocrConfiguration;
/// The types of structured data you want to extract from the document. This is
/// an option set so you can combine multiple values.
@property (nonatomic) GSKScanFlowStructuredData structuredData;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface GSKScanFlowConfiguration (SWIFT_EXTENSION(GSSDK))
- (BOOL)validate:(NSError * _Nullable * _Nullable)error;
@end

@interface GSKScanFlowConfiguration (SWIFT_EXTENSION(GSSDK))
/// Create a configuration from a dictionary.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
+ (nullable instancetype)configurationWithDictionary:(NSDictionary * _Nonnull)dictionary error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Create a configuration from JSON data.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
+ (nullable instancetype)configurationWithJSON:(NSString * _Nonnull)json error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end

/// Enum that defines various numeric error codes that can occur during a scan flow.
/// Cross-platform plugins expose the matching string code as the <code>code</code> field in their structured error payloads.
/// | String code | Description | Suggested handling |
/// | — | — | — |
/// | <code>cancellation_error</code> | The user canceled the document or barcode scan flow. | Treat as a normal exit; do not show an error. |
/// | <code>configuration_error</code> | The configuration or input parameters are invalid. | Fix the configuration before retrying. |
/// | <code>licensing_error</code> | The license key is invalid, expired, or not initialized. | Verify the license key and contact support if needed. |
/// | <code>capture_error</code> | The camera or capture session failed. | Let the user retry; restart the device if the problem persists. |
/// | <code>storage_space_error</code> | There is not enough storage space to write generated files. | Ask the user to free up storage space and retry. |
/// | <code>internal_error</code> | An unexpected SDK error occurred. | Show a generic error and collect the underlying error for diagnostics. |
typedef SWIFT_ENUM(NSInteger, GSKScanFlowErrorCode, open) {
/// User has canceled the scan flow
  GSKScanFlowCancellationErrorCode SWIFT_COMPILE_NAME("cancellation") = 999,
/// A general error due to an incorrect configuration. Verify that your
/// inputs match the API requirements.
  GSKScanFlowConfigurationErrorCode SWIFT_COMPILE_NAME("configuration") = 1000,
/// A licensing error. This is a developer error and you should contact the
/// Genius Scan SDK support team to make sure you have a valid license key.
  GSKScanFlowLicensingErrorCode SWIFT_COMPILE_NAME("licensing") = 1001,
/// An error that happened while capturing the scans. This can sometimes be recovered
/// by restarting the device.
  GSKScanFlowCaptureErrorCode SWIFT_COMPILE_NAME("capture") = 1002,
/// An error caused by low storage space. This can be recovered by cleaning up
/// storage space and trying again.
  GSKScanFlowStorageSpaceErrorCode SWIFT_COMPILE_NAME("storageSpace") = 1003,
/// An internal error. This is a catch-all category, and the underlying error will
/// give more details.
  GSKScanFlowInternalErrorCode SWIFT_COMPILE_NAME("internal") = 9999,
};

SWIFT_CLASS("_TtC5GSSDK26GSKScanFlowErrorCodeBridge")
@interface GSKScanFlowErrorCodeBridge : NSObject
+ (NSString * _Nonnull)stringCodeForRawValue:(NSInteger)rawValue SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// The different possible filters for the scanner UI.
/// Each case maps to a predefined filter configuration except <code>.automatic</code>.
typedef SWIFT_ENUM(NSInteger, GSKScanFlowFilterType, open) {
  GSKScanFlowFilterNone SWIFT_COMPILE_NAME("none") = 0,
/// Automatic filter
  GSKScanFlowFilterAutomatic SWIFT_COMPILE_NAME("automatic") = 1,
/// Automatic filter with a monochrome output
  GSKScanFlowFilterAutomaticDocumentMonochrome SWIFT_COMPILE_NAME("automaticDocumentMonochrome") = 2,
/// Automatic filter with a grayscale output
  GSKScanFlowFilterAutomaticDocumentGrayscale SWIFT_COMPILE_NAME("automaticDocumentGrayscale") = 3,
/// Automatic filter with a color output
  GSKScanFlowFilterAutomaticDocumentColor SWIFT_COMPILE_NAME("automaticDocumentColor") = 4,
/// A soft gray scale filter, ideal for documents containing both text and photos, or for text documents with
/// a low-contrast between the text and the background.
  GSKScanFlowFilterSoftGrayscale SWIFT_COMPILE_NAME("softGrayscale") = 5,
/// A soft color filter, ideal for documents containing both text and photos
  GSKScanFlowFilterSoftColor SWIFT_COMPILE_NAME("softColor") = 6,
/// A strong monochrome filter, ideal for text documents
  GSKScanFlowFilterStrongMonochrome SWIFT_COMPILE_NAME("strongMonochrome") = 7,
/// A strong grayscale filter, ideal for text documents
  GSKScanFlowFilterStrongGrayscale SWIFT_COMPILE_NAME("strongGrayscale") = 8,
/// A strong color filter, ideal for text documents with some color
  GSKScanFlowFilterStrongColor SWIFT_COMPILE_NAME("strongColor") = 9,
/// A filter that ensures best results for documents with a dark background
  GSKScanFlowFilterDarkBackground SWIFT_COMPILE_NAME("darkBackground") = 10,
/// A filter designed to improve scans of photos.
  GSKScanFlowFilterPhoto SWIFT_COMPILE_NAME("photo") = 11,
};

/// The capture screen flash mode.
typedef SWIFT_ENUM(NSUInteger, GSKScanFlowFlashMode, open) {
/// Let the system determine whether to turn on the flash based on the lighting conditions.
  GSKScanFlowFlashModeAuto = 0,
/// Force the flash on.
  GSKScanFlowFlashModeOn = 1,
/// Force the flash off.
  GSKScanFlowFlashModeOff = 2,
};

/// The format of the exported document.
typedef SWIFT_ENUM(NSUInteger, GSKScanFlowMultiPageFormat, open) {
  GSKScanFlowNone SWIFT_COMPILE_NAME("none") = 0,
  GSKScanFlowPDF SWIFT_COMPILE_NAME("pdf") = 1,
  GSKScanFlowTIFF SWIFT_COMPILE_NAME("tiff") = 2,
};

/// The configuration for text recognition
SWIFT_CLASS("_TtC5GSSDK27GSKScanFlowOCRConfiguration")
@interface GSKScanFlowOCRConfiguration : NSObject
/// The BCP47 language tags to process OCR with.
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull languageTags;
/// The formats in which the OCR result is made available in
/// the ScanFlow result. Defaults to all formats.
@property (nonatomic) GSKScanFlowOCROutputFormats outputFormats;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// The result of the text recognition.
SWIFT_CLASS("_TtC5GSSDK20GSKScanFlowOCRResult")
@interface GSKScanFlowOCRResult : NSObject
/// The raw text recognized in the document.
@property (nonatomic, copy) NSString * _Nullable text;
/// The text layout of the recognized text.
@property (nonatomic, copy) NSString * _Nullable hocrTextLayout;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// The generated PDF paper size.
typedef SWIFT_ENUM(NSUInteger, GSKScanFlowPDFPageSize, open) {
/// PDF page with a width of 8.27 inch (A4 width) and fitting height.
  GSKScanFlowPDFPageFit SWIFT_COMPILE_NAME("fit") = 0,
/// ISO A4 (21cm x 29.7cm).
  GSKScanFlowPDFPageA4 SWIFT_COMPILE_NAME("A4") = 1,
/// US Letter (8.5in x 11in).
  GSKScanFlowPDFPageLetter SWIFT_COMPILE_NAME("letter") = 2,
};

@class GSKScanFlowScan;
/// The result of a scan flow.
SWIFT_CLASS("_TtC5GSSDK17GSKScanFlowResult")
@interface GSKScanFlowResult : NSObject
/// Document containing the pages that were scanned during the scan
/// flow. The format is specified by the <code>multiPageFormat</code> property of
/// the <code>GSKScanFlowConfiguration</code> used for the scan flow. This is <code>nil</code>
/// when <code>multiPageFormat</code> is <code>.none</code> or if document generation failed.
@property (nonatomic, copy) NSURL * _Nullable multiPageDocumentURL;
/// The individual scans taken during the scan flow.
/// Each scan object contains both the original and the enhanced scans.
@property (nonatomic, copy) NSArray<GSKScanFlowScan *> * _Nonnull scans;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface GSKScanFlowResult (SWIFT_EXTENSION(GSSDK))
/// A dictionary representation of the result.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull dictionary;
/// Return a JSON representation of the result.
/// This is used for interfacing with cross-platform plugins but shouldn’t
/// be used in native projects.
- (NSString * _Nonnull)json SWIFT_WARN_UNUSED_RESULT;
@end

@class GSKScanFlowStructuredDataResult;
/// A page captured by the scan flow.
SWIFT_CLASS("_TtC5GSSDK15GSKScanFlowScan")
@interface GSKScanFlowScan : NSObject
/// The original JPEG out of the camera.
/// Note that this image might be rotated, and needs to be read
/// with its EXIF orientation to be properly displayed. <code>UIImage</code>
/// methods will properly take care of that.
@property (nonatomic, copy) NSString * _Nonnull originalFilePath;
/// The enhanced, processed, image.
@property (nonatomic, copy) NSString * _Nonnull enhancedFilePath;
/// If OCR was performed, the recognized text.
@property (nonatomic, strong) GSKScanFlowOCRResult * _Nullable ocrResult;
/// If structured data extraction was performed, the structured data.
@property (nonatomic, strong) GSKScanFlowStructuredDataResult * _Nullable structuredData;
- (nonnull instancetype)initWithOriginalFilePath:(NSString * _Nonnull)originalFilePath enhancedFilePath:(NSString * _Nonnull)enhancedFilePath OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// The source for a scan flow
typedef SWIFT_ENUM(NSUInteger, GSKScanFlowSource, open) {
/// Scan using the camera
  GSKScanFlowSourceCamera = 0,
/// Import a file from a URL
  GSKScanFlowSourceImageURL = 1,
/// Import a file from the user’s photo library
  GSKScanFlowSourceLibrary = 2,
};

@class GSKStructuredDataBankDetails;
@class GSKStructuredDataContact;
@class GSKStructuredDataReceipt;
/// The result of a structured data extraction.
SWIFT_CLASS("_TtC5GSSDK31GSKScanFlowStructuredDataResult")
@interface GSKScanFlowStructuredDataResult : NSObject
/// Present if bank details extraction was requested, <code>nil</code> otherwise.
@property (nonatomic, strong) GSKStructuredDataBankDetails * _Nullable bankDetails;
/// Present if business card contact extraction was requested and a contact was
/// successfully extracted, <code>nil</code> otherwise.
@property (nonatomic, strong) GSKStructuredDataContact * _Nullable businessCardContact;
/// Present if receipt extraction was requested and a receipt/invoice was
/// successfully extracted, <code>nil</code> otherwise.
@property (nonatomic, strong) GSKStructuredDataReceipt * _Nullable receipt;
/// Present if barcode extraction was requested and codes were successfully extracted, empty otherwise.
@property (nonatomic, copy) NSArray<GSKBarcode *> * _Nonnull barcodes;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Enum that describes how a document should be oriented/rotated
/// after it’s been captured.
typedef SWIFT_ENUM(NSInteger, GSKScanOrientation, open) {
/// The document’s original orientation should be used. No rotation
/// should be applied.
  GSKScanOrientationOriginal = 0,
/// The document should be automatically rotated to its ideal orientation.
  GSKScanOrientationAutomatic = 1,
};

/// Address data extracted from a business card document through OCR.
SWIFT_CLASS("_TtC5GSSDK24GSKStructuredDataAddress")
@interface GSKStructuredDataAddress : NSObject
/// The city component of the address.
@property (nonatomic, readonly, copy) NSString * _Nullable city;
/// The postal/zip code component of the address.
@property (nonatomic, readonly, copy) NSString * _Nullable postalCode;
/// The street name component of the address.
@property (nonatomic, readonly, copy) NSString * _Nullable street;
/// The state component of the address.
@property (nonatomic, readonly, copy) NSString * _Nullable state;
/// The country component of the address.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// The bank details extracted from a document through OCR.
SWIFT_CLASS("_TtC5GSSDK28GSKStructuredDataBankDetails")
@interface GSKStructuredDataBankDetails : NSObject
/// The IBAN if successfully extracted, otherwise is <code>nil</code>.
@property (nonatomic, copy) NSString * _Nullable iban;
/// The BIC code if successfully extracted, otherwise is <code>nil</code>.
@property (nonatomic, copy) NSString * _Nullable bic;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class GSKStructuredDataPhoneNumber;
@class CNContact;
/// Contact data extracted from a business card document through OCR.
SWIFT_CLASS("_TtC5GSSDK24GSKStructuredDataContact")
@interface GSKStructuredDataContact : NSObject
/// Any name that appears on the business card. Contains the full name, including all components.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// Any organization that appears on the business card.
@property (nonatomic, readonly, copy) NSString * _Nullable organization;
/// Any address that appears on the business card.
@property (nonatomic, readonly, strong) GSKStructuredDataAddress * _Nullable address;
/// The phone numbers that appear on the business card.
@property (nonatomic, readonly, copy) NSArray<GSKStructuredDataPhoneNumber *> * _Nonnull phoneNumbers;
/// The links/URLs that appear on the business card.
@property (nonatomic, readonly, copy) NSArray<NSURL *> * _Nonnull links;
/// The email addresses that appear on the business card.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull emailAddresses;
/// Return a <code>CNContact</code> representation of the contact data within this instance.
- (CNContact * _Nonnull)asCNContact SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Class that enables structured data to be extracted from
/// scanned documents.
SWIFT_CLASS("_TtC5GSSDK26GSKStructuredDataExtractor")
@interface GSKStructuredDataExtractor : NSObject
- (nonnull instancetype)init;
@end

@interface GSKStructuredDataExtractor (SWIFT_EXTENSION(GSSDK))
/// Extract any bank details that were found in a given document by
/// passing in the result of performing OCR on that document. Use
/// <code>GSKOCR</code> to obtain a <code>GSKOCRResult</code> instance. Note that if OCR
/// was performed for languages that don’t support structured data extraction,
/// then this method will throw an error.
- (void)bankDetailsFromOCRResult:(GSKOCRResult * _Nonnull)ocrResult completionHandler:(void (^ _Nonnull)(GSKStructuredDataBankDetails * _Nullable, NSError * _Nullable))completionHandler;
/// Extract any business card contact that was found in a given document
/// by passing in the result of performing OCR on that document. Use
/// <code>GSKOCR</code> to obtain a <code>GSKOCRResult</code> instance. Note that if OCR
/// was performed for languages that don’t support structured data extraction,
/// then this method will throw an error.
- (void)businessCardContactFromOCRResult:(GSKOCRResult * _Nonnull)ocrResult completionHandler:(void (^ _Nonnull)(GSKStructuredDataContact * _Nullable, NSError * _Nullable))completionHandler;
/// Extract any receipt/invoice information that was found in a given
/// document by passing in the result of performing OCR on that document.
/// Use <code>GSKOCR</code> to obtain a <code>GSKOCRResult</code> instance. Note that if OCR
/// was performed for languages that don’t support structured data extraction,
/// then this method will throw an error.
- (void)receiptFromOCRResult:(GSKOCRResult * _Nonnull)ocrResult completionHandler:(void (^ _Nonnull)(GSKStructuredDataReceipt * _Nullable, NSError * _Nullable))completionHandler;
@end

/// Enum defining errors that can be thrown by <code>GSKStructuredDataExtractor</code>.
/// Note that thrown errors will be wrapped in <code>NSError</code> containers.
typedef SWIFT_ENUM(NSInteger, GSKStructuredDataExtractorError, open) {
  GSKStructuredDataExtractorErrorMissingRequiredOCRMetadata = -1,
};
static NSString * _Nonnull const GSKStructuredDataExtractorErrorDomain = @"GSSDK.GSKStructuredDataExtractorError";

/// Phone number data extracted from a business card document through OCR.
SWIFT_CLASS("_TtC5GSSDK28GSKStructuredDataPhoneNumber")
@interface GSKStructuredDataPhoneNumber : NSObject
/// The label of the phone number. For example “Main”, “Office”, etc.
@property (nonatomic, readonly, copy) NSString * _Nonnull label;
/// A string representation of the phone number itself.
@property (nonatomic, readonly, copy) NSString * _Nonnull number;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSLocale;
/// Receipt/invoice details extracted from a document through OCR.
SWIFT_CLASS("_TtC5GSSDK24GSKStructuredDataReceipt")
@interface GSKStructuredDataReceipt : NSObject
/// The locale that the receipt is in, if successfully extracted, otherwise <code>nil</code>.
@property (nonatomic, readonly, copy) NSLocale * _Nullable locale;
/// The merchant that the receipt is from, if successfully extracted, otherwise <code>nil</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable merchant;
/// The code of currency that the receipt is in, if successfully extracted, otherwise <code>nil</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable currency;
/// Any date that appears on the receipt, if successfully extracted, otherwise <code>nil</code>.
@property (nonatomic, readonly, copy) NSDate * _Nullable date;
/// The VAT number of the merchant, if successfully extracted, otherwise <code>nil</code>.
@property (nonatomic, readonly, copy) NSString * _Nullable vatNumber;
/// The value-added tax (VAT) details.
/// This property is an array because a receipt may display multiple VAT rates applying to different items
@property (nonatomic, readonly, copy) NSArray<GSKReceiptVAT *> * _Nonnull vatValues;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_CLASS("_TtC5GSSDK13GSKTextLayout")
@interface GSKTextLayout : NSObject
@property (nonatomic, readonly, copy) NSString * _Nullable hocr;
- (nonnull instancetype)initWithHocr:(NSString * _Nullable)hocr OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Converts an OCR text layout into plain text.
/// A <code>GSKOCRResult</code> contains both raw text and a <code>GSKTextLayout</code>, which preserves spatial information such as
/// bounding boxes and line/word positions. This converter reconstructs the raw text from a <code>GSKTextLayout</code> by
/// traversing its bounding boxes in reading order and grouping content into paragraphs.
/// Use this when you want to retain only the spatial representation (for highlighting, selection, reflow, etc.)
/// and regenerate the plain-text representation on demand, rather than storing both.
SWIFT_CLASS("_TtC5GSSDK28GSKTextLayoutToTextConverter")
@interface GSKTextLayoutToTextConverter : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

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

SWIFT_CLASS("_TtC5GSSDK25GSKUIBackgroundProcessing")
@interface GSKUIBackgroundProcessing : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) GSKUIBackgroundProcessing * _Nonnull shared;)
+ (GSKUIBackgroundProcessing * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, strong) dispatch_queue_t _Nonnull documentGenerationQueue;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

SWIFT_CLASS("_TtC5GSSDK14GSSDKResources")
@interface GSSDKResources : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) NSBundle * _Nonnull bundle;)
+ (NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface UIViewController (SWIFT_EXTENSION(GSSDK))
/// Return a status bar style appropriate for this view controller
/// based on the contrast between the status bar’s contents and the
/// view controller’s background color.
@property (nonatomic, readonly) UIStatusBarStyle gsk_statusBarStyleBasedOnContrast;
/// Return the interface orientations that this view controller
/// should support based on the current device.
@property (nonatomic, readonly) UIInterfaceOrientationMask gsk_supportedInterfaceOrientations;
@end

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

#else
#error unsupported Swift architecture
#endif
