#if 0
#elif defined(__arm64e__) && __arm64e__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef SENTRY_SWIFT_H
#define SENTRY_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

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

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

#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#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
#endif

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

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
#  define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
#  define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction 
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT 
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
#  define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL 
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import Dispatch;
@import Foundation;
@import MetricKit;
@import ObjectiveC;
@import UIKit;
#endif

#import <Sentry/Sentry.h>

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

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

#if defined(__OBJC__)



@class SentryDispatchQueueWrapper;
@class SentryDefaultCurrentDateProvider;
@class SentryDefaultUIDeviceWrapper;

SWIFT_CLASS_NAMED("Dependencies")
@interface SentryDependencies : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDispatchQueueWrapper * _Nonnull dispatchQueueWrapper;)
+ (SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDefaultCurrentDateProvider * _Nonnull dateProvider;)
+ (SentryDefaultCurrentDateProvider * _Nonnull)dateProvider SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDefaultUIDeviceWrapper * _Nonnull uiDeviceWrapper;)
+ (SentryDefaultUIDeviceWrapper * _Nonnull)uiDeviceWrapper SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end





@class NSString;

SWIFT_CLASS("_TtC6Sentry19HTTPHeaderSanitizer")
@interface HTTPHeaderSanitizer : NSObject
+ (NSDictionary<NSString *, NSString *> * _Nonnull)sanitizeHeaders:(NSDictionary<NSString *, NSString *> * _Nonnull)headers SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSNumber;
@protocol SentryObjCRuntimeWrapper;

SWIFT_CLASS("_TtC6Sentry13LoadValidator")
@interface LoadValidator : NSObject
+ (void)checkForDuplicatedSDKWithImageName:(NSString * _Nonnull)imageName imageAddress:(NSNumber * _Nonnull)imageAddress imageSize:(NSNumber * _Nonnull)imageSize objcRuntimeWrapper:(id <SentryObjCRuntimeWrapper> _Nonnull)objcRuntimeWrapper dispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end





@class NSOperationQueue;
@class NSNotification;
@protocol NSObject;

SWIFT_PROTOCOL("_TtP6Sentry33SentryNSNotificationCenterWrapper_")
@protocol SentryNSNotificationCenterWrapper
- (void)addObserver:(id _Nonnull)observer selector:(SEL _Nonnull)aSelector name:(NSNotificationName _Nullable)aName object:(id _Nullable)anObject;
- (id <NSObject> _Nonnull)addObserverForName:(NSNotificationName _Nullable)name object:(id _Nullable)obj queue:(NSOperationQueue * _Nullable)queue usingBlock:(void (^ _Nonnull)(NSNotification * _Nonnull))block SWIFT_WARN_UNUSED_RESULT;
- (void)removeObserver:(id _Nonnull)observer name:(NSNotificationName _Nullable)aName object:(id _Nullable)anObject;
- (void)postNotification:(NSNotification * _Nonnull)notification;
@end


@interface NSNotificationCenter (SWIFT_EXTENSION(Sentry)) <SentryNSNotificationCenterWrapper>
@end

@class SentryExperimentalOptions;

@interface SentryOptions (SWIFT_EXTENSION(Sentry))
/// This aggregates options for experimental features.
/// Be aware that the options available for experimental can change at any time.
@property (nonatomic, readonly, strong) SentryExperimentalOptions * _Nonnull experimental;
@end


SWIFT_CLASS("_TtC6Sentry27PlaceholderProcessInfoClass")
@interface PlaceholderProcessInfoClass : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry28PlaceholderSentryApplication")
@interface PlaceholderSentryApplication : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry23SentryProcessInfoSource_")
@protocol SentryProcessInfoSource
@property (nonatomic, readonly, copy) NSString * _Nonnull processDirectoryPath;
@property (nonatomic, readonly, copy) NSString * _Nullable processPath;
@property (nonatomic, readonly) NSInteger processorCount;
@property (nonatomic, readonly) NSProcessInfoThermalState thermalState;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nonnull environment;
@property (nonatomic, readonly) BOOL isiOSAppOnMac SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(watchos,introduced=7.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0);
@property (nonatomic, readonly) BOOL isMacCatalystApp SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0);
@end


@interface NSProcessInfo (SWIFT_EXTENSION(Sentry)) <SentryProcessInfoSource>
@property (nonatomic, readonly, copy) NSString * _Nonnull processDirectoryPath;
@property (nonatomic, readonly, copy) NSString * _Nullable processPath;
@end


SWIFT_CLASS("_TtC6Sentry22SentryANRStoppedResult")
@interface SentryANRStoppedResult : NSObject
@property (nonatomic, readonly) NSTimeInterval minDuration;
@property (nonatomic, readonly) NSTimeInterval maxDuration;
- (nonnull instancetype)initWithMinDuration:(NSTimeInterval)minDuration maxDuration:(NSTimeInterval)maxDuration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol SentryANRTrackerDelegate;

SWIFT_PROTOCOL("_TtP6Sentry16SentryANRTracker_")
@protocol SentryANRTracker
- (void)addListener:(id <SentryANRTrackerDelegate> _Nonnull)listener;
- (void)removeListener:(id <SentryANRTrackerDelegate> _Nonnull)listener;
/// Only used for tests.
- (void)clear;
@end

enum SentryANRType : NSInteger;

/// The  methods are called from a  background thread.
SWIFT_PROTOCOL("_TtP6Sentry24SentryANRTrackerDelegate_")
@protocol SentryANRTrackerDelegate
- (void)anrDetectedWithType:(enum SentryANRType)type;
- (void)anrStoppedWithResult:(SentryANRStoppedResult * _Nullable)result;
@end

typedef SWIFT_ENUM(NSInteger, SentryANRType, open) {
  SentryANRTypeFatalFullyBlocking = 0,
  SentryANRTypeFatalNonFullyBlocking = 1,
  SentryANRTypeFullyBlocking = 2,
  SentryANRTypeNonFullyBlocking = 3,
  SentryANRTypeUnknown = 4,
};


SWIFT_CLASS("_TtC6Sentry23SentryAppHangTypeMapper")
@interface SentryAppHangTypeMapper : NSObject
+ (NSString * _Nonnull)getExceptionTypeWithAnrType:(enum SentryANRType)anrType SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nonnull)getFatalExceptionTypeWithNonFatalErrorType:(NSString * _Nonnull)nonFatalErrorType SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isExceptionTypeAppHangWithExceptionType:(NSString * _Nonnull)exceptionType SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;

SWIFT_CLASS("_TtC6Sentry14SentryAppState")
@interface SentryAppState : NSObject <SentrySerializable>
@property (nonatomic, readonly, copy) NSString * _Nullable releaseName;
@property (nonatomic, readonly, copy) NSString * _Nonnull osVersion;
@property (nonatomic, readonly, copy) NSString * _Nonnull vendorId;
@property (nonatomic, readonly) BOOL isDebugging;
/// The boot time of the system rounded down to seconds. As the precision of the serialization is
/// only milliseconds and a precision of seconds is enough we round down to seconds. With this we
/// avoid getting different dates before and after serialization.
/// warning:
/// We must not send this information off device because Apple forbids that.
/// We are allowed send the amount of time that has elapsed between events that occurred within the
/// app though. For more information see
/// https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278394.
@property (nonatomic, readonly, copy) NSDate * _Nonnull systemBootTimestamp;
@property (nonatomic) BOOL isActive;
@property (nonatomic) BOOL wasTerminated;
@property (nonatomic) BOOL isANROngoing;
@property (nonatomic) BOOL isSDKRunning;
- (nonnull instancetype)initWithReleaseName:(NSString * _Nullable)releaseName osVersion:(NSString * _Nonnull)osVersion vendorId:(NSString * _Nonnull)vendorId isDebugging:(BOOL)isDebugging systemBootTimestamp:(NSDate * _Nonnull)systemBootTimestamp OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithJSONObject:(NSDictionary<NSString *, id> * _Nonnull)jsonObject OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIWindow;
@class UIScene;
@protocol UIApplicationDelegate;

SWIFT_PROTOCOL("_TtP6Sentry17SentryApplication_")
@protocol SentryApplication
@property (nonatomic, readonly) BOOL mainThread_isActive;
/// Returns the application state available at @c UIApplication.sharedApplication.applicationState
/// Must be called on the main thread.
@property (nonatomic, readonly) UIApplicationState unsafeApplicationState;
/// All windows connected to scenes.
- (NSArray<UIWindow *> * _Nullable)getWindows SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSSet<UIScene *> * _Nonnull connectedScenes SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(ios,introduced=13.0);
@property (nonatomic, readonly, strong) id <UIApplicationDelegate> _Nullable delegate;
/// Use @c [SentryUIApplication relevantViewControllers] and convert the
/// result to a string array with the class name of each view controller.
- (NSArray<NSString *> * _Nullable)relevantViewControllersNames SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry26SentryBaggageSerialization")
@interface SentryBaggageSerialization : NSObject
+ (NSString * _Nonnull)encodeDictionary:(NSDictionary<NSString *, NSString *> * _Nonnull)dictionary SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)decode:(NSString * _Nonnull)baggage SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryBinaryImageInfo;

/// This class listens to <code>SentryCrashBinaryImageCache</code> to keep a copy of the loaded binaries
/// information in a sorted collection that will be used to symbolicate frames with better
/// performance.
SWIFT_CLASS_NAMED("SentryBinaryImageCache")
@interface SentryBinaryImageCache : NSObject
@property (nonatomic, readonly, copy) NSArray<SentryBinaryImageInfo *> * _Nullable cache;
- (void)start:(BOOL)isDebug;
- (void)stop;
- (void)binaryImageAdded:(char const * _Nullable)imageName vmAddress:(uint64_t)vmAddress address:(uint64_t)address size:(uint64_t)size uuid:(uint8_t const * _Nullable)uuid;
+ (NSString * _Nullable)convertUUID:(uint8_t const * _Nullable)value SWIFT_WARN_UNUSED_RESULT;
- (void)binaryImageRemoved:(uint64_t)imageAddress;
- (SentryBinaryImageInfo * _Nullable)imageByAddress:(uint64_t)address SWIFT_WARN_UNUSED_RESULT;
- (NSSet<NSString *> * _Nonnull)imagePathsForInAppInclude:(NSString * _Nonnull)inAppInclude SWIFT_WARN_UNUSED_RESULT;
- (NSArray<SentryBinaryImageInfo *> * _Nonnull)getAllBinaryImages SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SentryBinaryImageInfo")
@interface SentryBinaryImageInfo : NSObject
@property (nonatomic, copy) NSString * _Nonnull name;
@property (nonatomic, copy) NSString * _Nullable uuid;
@property (nonatomic) uint64_t vmAddress;
@property (nonatomic) uint64_t address;
@property (nonatomic) uint64_t size;
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name uuid:(NSString * _Nullable)uuid vmAddress:(uint64_t)vmAddress address:(uint64_t)address size:(uint64_t)size OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryDiscardedEvent;
@protocol SentryCurrentDateProvider;

SWIFT_CLASS("_TtC6Sentry18SentryClientReport")
@interface SentryClientReport : NSObject <SentrySerializable>
- (nonnull instancetype)initWithDiscardedEvents:(NSArray<SentryDiscardedEvent *> * _Nonnull)discardedEvents dateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry18SentryCrashWrapper")
@interface SentryCrashWrapper : NSObject
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull systemInfo;
- (nonnull instancetype)initWithProcessInfoWrapper:(id <SentryProcessInfoSource> _Nonnull)processInfoWrapper OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryScope;

@interface SentryCrashWrapper (SWIFT_EXTENSION(Sentry))
- (void)startBinaryImageCache;
- (void)stopBinaryImageCache;
@property (nonatomic, readonly) BOOL crashedLastLaunch;
@property (nonatomic, readonly) NSTimeInterval durationFromCrashStateInitToLastCrash;
@property (nonatomic, readonly) NSTimeInterval activeDurationSinceLastCrash;
@property (nonatomic, readonly) BOOL isBeingTraced;
@property (nonatomic, readonly) BOOL isSimulatorBuild;
@property (nonatomic, readonly) BOOL isApplicationInForeground;
@property (nonatomic, readonly) uint64_t freeMemorySize;
@property (nonatomic, readonly) uint64_t appMemorySize;
- (void)enrichScope:(SentryScope * _Nonnull)scope;
@end


/// We need a protocol to expose SentryCurrentDateProvider to tests.
/// Mocking the previous private class from <code>SentryTestUtils</code> stopped working in Xcode 16.
SWIFT_PROTOCOL("_TtP6Sentry25SentryCurrentDateProvider_")
@protocol SentryCurrentDateProvider
- (NSDate * _Nonnull)date SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)timezoneOffset SWIFT_WARN_UNUSED_RESULT;
- (uint64_t)systemTime SWIFT_WARN_UNUSED_RESULT;
- (NSTimeInterval)systemUptime SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry32SentryDefaultCurrentDateProvider")
@interface SentryDefaultCurrentDateProvider : NSObject <SentryCurrentDateProvider>
- (NSDate * _Nonnull)date SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)timezoneOffset SWIFT_WARN_UNUSED_RESULT;
/// Returns the absolute timestamp, which has no defined reference point or unit
/// as it is platform dependent.
- (uint64_t)systemTime SWIFT_WARN_UNUSED_RESULT;
- (NSTimeInterval)systemUptime SWIFT_WARN_UNUSED_RESULT;
+ (uint64_t)getAbsoluteTime SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry24SentryObjCRuntimeWrapper_")
@protocol SentryObjCRuntimeWrapper
- (char const * _Nonnull * _Nullable)copyClassNamesForImage:(char const * _Nonnull)image amount:(uint32_t * _Nullable)outCount SWIFT_WARN_UNUSED_RESULT;
- (char const * _Nullable)class_getImageName:(Class _Nonnull)cls SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry31SentryDefaultObjCRuntimeWrapper")
@interface SentryDefaultObjCRuntimeWrapper : NSObject <SentryObjCRuntimeWrapper>
- (char const * _Nonnull * _Nullable)copyClassNamesForImage:(char const * _Nonnull)image amount:(uint32_t * _Nullable)outCount SWIFT_WARN_UNUSED_RESULT;
- (char const * _Nullable)class_getImageName:(Class _Nonnull)cls SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry21SentryUIDeviceWrapper_")
@protocol SentryUIDeviceWrapper
- (void)start;
- (void)stop;
- (NSString * _Nonnull)getSystemVersion SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) UIDeviceOrientation orientation;
@property (nonatomic, readonly) BOOL isBatteryMonitoringEnabled;
@property (nonatomic, readonly) UIDeviceBatteryState batteryState;
@property (nonatomic, readonly) float batteryLevel;
@end


SWIFT_CLASS("_TtC6Sentry28SentryDefaultUIDeviceWrapper")
@interface SentryDefaultUIDeviceWrapper : NSObject <SentryUIDeviceWrapper>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nonnull instancetype)initWithQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)queueWrapper OBJC_DESIGNATED_INITIALIZER;
- (void)start;
- (void)stop;
@property (nonatomic, readonly) UIDeviceOrientation orientation;
@property (nonatomic, readonly) BOOL isBatteryMonitoringEnabled;
@property (nonatomic, readonly) UIDeviceBatteryState batteryState;
@property (nonatomic, readonly) float batteryLevel;
- (NSString * _Nonnull)getSystemVersion SWIFT_WARN_UNUSED_RESULT;
@end

@class UIView;
@class UIImage;

SWIFT_PROTOCOL("_TtP6Sentry18SentryViewRenderer_")
@protocol SentryViewRenderer
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry25SentryDefaultViewRenderer")
@interface SentryDefaultViewRenderer : NSObject <SentryViewRenderer>
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry20SentryDiscardedEvent")
@interface SentryDiscardedEvent : NSObject <SentrySerializable>
@property (nonatomic, readonly) NSUInteger quantity;
- (nonnull instancetype)initWithReason:(NSString * _Nonnull)reason category:(NSString * _Nonnull)category quantity:(NSUInteger)quantity OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry26SentryDispatchQueueWrapper")
@interface SentryDispatchQueueWrapper : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithName:(char const * _Nonnull)name attributes:(dispatch_queue_attr_t _Nullable)attributes OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) dispatch_queue_t _Nonnull queue;
- (void)dispatchAsyncWithBlock:(void (^ _Nonnull)(void))block;
- (void)dispatchAsyncOnMainQueue:(void (^ _Nonnull)(void))block;
- (void)dispatchSyncOnMainQueue:(void (^ _Nonnull)(void))block;
- (void)dispatchSyncOnMainQueue:(void (^ _Nonnull)(void))block timeout:(double)timeout;
- (void)dispatchAfter:(NSTimeInterval)interval block:(void (^ _Nonnull)(void))block;
- (void)dispatchOnce:(long * _Nonnull)predicate block:(void (^ _Nonnull)(void))block;
@property (nonatomic, readonly) BOOL shouldDispatchCancel;
@property (nonatomic, readonly) BOOL shouldCreateDispatchBlock;
@end


/// A wrapper around a dispatch timer source that can be subclassed for mocking in tests.
SWIFT_CLASS("_TtC6Sentry27SentryDispatchSourceWrapper")
@interface SentryDispatchSourceWrapper : NSObject
- (nonnull instancetype)initWithInterval:(NSInteger)interval leeway:(NSInteger)leeway queue:(SentryDispatchQueueWrapper * _Nonnull)queueWrapper eventHandler:(void (^ _Nonnull)(void))eventHandler OBJC_DESIGNATED_INITIALIZER;
- (void)cancel;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry28SentryEnabledFeaturesBuilder")
@interface SentryEnabledFeaturesBuilder : NSObject
+ (NSArray<NSString *> * _Nonnull)getEnabledFeaturesWithOptions:(SentryOptions * _Nullable)options SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryId;
@class SentryEnvelopeItem;
@class SentryEnvelopeHeader;

SWIFT_CLASS("_TtC6Sentry14SentryEnvelope")
@interface SentryEnvelope : NSObject
- (nonnull instancetype)initWithId:(SentryId * _Nullable)id singleItem:(SentryEnvelopeItem * _Nonnull)item SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithHeader:(SentryEnvelopeHeader * _Nonnull)header singleItem:(SentryEnvelopeItem * _Nonnull)item;
- (nonnull instancetype)initWithId:(SentryId * _Nullable)id items:(NSArray<SentryEnvelopeItem *> * _Nonnull)items SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithHeader:(SentryEnvelopeHeader * _Nonnull)header items:(NSArray<SentryEnvelopeItem *> * _Nonnull)items OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) SentryEnvelopeHeader * _Nonnull header;
@property (nonatomic, readonly, copy) NSArray<SentryEnvelopeItem *> * _Nonnull items;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryTraceContext;
@class SentrySdkInfo;

SWIFT_CLASS("_TtC6Sentry20SentryEnvelopeHeader")
@interface SentryEnvelopeHeader : NSObject
/// Initializes an @c SentryEnvelopeHeader object with the specified eventId.
/// @note Sets the @c sdkInfo from @c SentryMeta.
/// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment
/// related to event.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext.
/// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
/// attachment related to event.
/// @param traceContext Current trace state.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId traceContext:(SentryTraceContext * _Nullable)traceContext SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and
/// @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the
/// @c sdkInfo for you.
/// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
/// attachment related to event.
/// @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New
/// instances should always provide a version.
/// @param traceContext Current trace state.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId sdkInfo:(SentrySdkInfo * _Nullable)sdkInfo traceContext:(SentryTraceContext * _Nullable)traceContext OBJC_DESIGNATED_INITIALIZER;
+ (nonnull instancetype)empty SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// The event identifier, if available.
/// An event id exist if the envelope contains an event of items within it are related. i.e
/// Attachments
@property (nonatomic, strong) SentryId * _Nullable eventId;
@property (nonatomic, strong) SentrySdkInfo * _Nullable sdkInfo;
@property (nonatomic, strong) SentryTraceContext * _Nullable traceContext;
/// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used
/// for clock drift correction of the event timestamp. The time zone must be UTC.
/// The timestamp should be generated as close as possible to the transmision of the event,
/// so that the delay between sending the envelope and receiving it on the server-side is
/// minimized.
@property (nonatomic, copy) NSDate * _Nullable sentAt;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryEnvelopeItemHeader;
@class NSData;
@class SentryEvent;
@class SentrySession;
@class SentryUserFeedback;
@class SentryAttachment;
@class SentryReplayEvent;
@class SentryReplayRecording;
@class NSURL;

SWIFT_CLASS("_TtC6Sentry18SentryEnvelopeItem")
@interface SentryEnvelopeItem : NSObject
/// The envelope item header.
@property (nonatomic, readonly, strong) SentryEnvelopeItemHeader * _Nonnull header;
/// The envelope payload.
@property (nonatomic, readonly, copy) NSData * _Nullable data;
/// Designated initializer for creating an envelope item with a header and data.
- (nonnull instancetype)initWithHeader:(SentryEnvelopeItemHeader * _Nonnull)header data:(NSData * _Nullable)data OBJC_DESIGNATED_INITIALIZER;
/// Initializes an envelope item with an event.
- (nonnull instancetype)initWithEvent:(SentryEvent * _Nonnull)event;
/// Initializes an envelope item with a session.
- (nonnull instancetype)initWithSession:(SentrySession * _Nonnull)session;
/// @deprecated Building the envelopes for the new @c SentryFeedback type is done directly in @c
/// -[SentryClient @c captureFeedback:withScope:]
- (nonnull instancetype)initWithUserFeedback:(SentryUserFeedback * _Nonnull)userFeedback SWIFT_DEPRECATED_MSG("Building the envelopes for the new SentryFeedback type is done directly in -[SentryClient captureFeedback:withScope:] so there will be no analog to this initializer for SentryFeedback at this time.");
/// Initializes an envelope item with an attachment.
/// @param attachment The attachment to create the envelope item from.
/// @param maxAttachmentSize The maximum allowed size for the attachment.
/// @return The envelope item or nil if the attachment is too large or cannot be processed.
- (nullable instancetype)initWithAttachment:(SentryAttachment * _Nonnull)attachment maxAttachmentSize:(NSUInteger)maxAttachmentSize;
/// Initializes an envelope item with a client report.
- (nonnull instancetype)initWithClientReport:(SentryClientReport * _Nonnull)clientReport;
/// Initializes an envelope item with replay event and recording data.
- (nullable instancetype)initWithReplayEvent:(SentryReplayEvent * _Nonnull)replayEvent replayRecording:(SentryReplayRecording * _Nonnull)replayRecording video:(NSURL * _Nonnull)video;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Each item type must have a data category name mapped to it; see SentryDataCategoryMapper
/// While these envelope item types might look similar to the data categories,
/// they are not identical, and have slight differences.
SWIFT_CLASS("_TtC6Sentry23SentryEnvelopeItemTypes")
@interface SentryEnvelopeItemTypes : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull event;)
+ (NSString * _Nonnull)event SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull session;)
+ (NSString * _Nonnull)session SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull userFeedback;)
+ (NSString * _Nonnull)userFeedback SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull feedback;)
+ (NSString * _Nonnull)feedback SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull transaction;)
+ (NSString * _Nonnull)transaction SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull attachment;)
+ (NSString * _Nonnull)attachment SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull clientReport;)
+ (NSString * _Nonnull)clientReport SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull profile;)
+ (NSString * _Nonnull)profile SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull replayVideo;)
+ (NSString * _Nonnull)replayVideo SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull statsd;)
+ (NSString * _Nonnull)statsd SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull profileChunk;)
+ (NSString * _Nonnull)profileChunk SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull log;)
+ (NSString * _Nonnull)log SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SentryEventDecodable")
@interface SentryEventDecodable : SentryEvent
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry18SentryEventDecoder")
@interface SentryEventDecoder : NSObject
+ (SentryEvent * _Nullable)decodeEventWithJsonData:(NSData * _Nonnull)jsonData SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry25SentryExperimentalOptions")
@interface SentryExperimentalOptions : NSObject
/// Enables swizzling of<code>NSData</code> to automatically track file operations.
/// note:
/// Swizzling is enabled by setting <code>SentryOptions.enableSwizzling</code> to <code>true</code>.
/// This option allows you to disable swizzling for <code>NSData</code> only, while keeping swizzling enabled for other classes.
/// This is useful if you want to use manual tracing for file operations.
@property (nonatomic) BOOL enableDataSwizzling;
/// Enables swizzling of<code>NSFileManager</code> to automatically track file operations.
/// note:
/// Swizzling is enabled by setting <code>SentryOptions.enableSwizzling</code> to <code>true</code>.
/// This option allows you to disable swizzling for <code>NSFileManager</code> only, while keeping swizzling enabled for other classes.
/// This is useful if you want to use manual tracing for file operations.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. We’ll enable it by default in a future release.
@property (nonatomic) BOOL enableFileManagerSwizzling;
/// A more reliable way to report unhandled C++ exceptions.
/// This approach hooks into all instances of the <code>__cxa_throw</code> function, which provides a more comprehensive and consistent exception handling across an app’s runtime, regardless of the number of C++ modules or how they’re linked. It helps in obtaining accurate stack traces.
/// note:
/// The mechanism of hooking into <code>__cxa_throw</code> could cause issues with symbolication on iOS due to caching of symbol references.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. We’ll enable it by default in a future major release.
@property (nonatomic) BOOL enableUnhandledCPPExceptionsV2;
/// Forces enabling of session replay in unreliable environments.
/// Due to internal changes with the release of Liquid Glass on iOS 26.0, the masking of text and images can not be reliably guaranteed.
/// Therefore the SDK uses a defensive programming approach to disable the session replay integration by default, unless the environment is detected as reliable.
/// Indicators for reliable environments include:
/// important:
/// This flag allows to re-enable the session replay integration on iOS 26.0 and later, but please be aware that text and images may not be masked as expected.
/// note:
/// See <a href="https://github.com/getsentry/sentry-cocoa/issues/6389">GitHub issues #6389</a> for more information.
/// <ul>
///   <li>
///     Running on an older version of iOS that doesn’t have Liquid Glass (iOS 18 or earlier)
///   </li>
///   <li>
///     UIDesignRequiresCompatibility is explicitly set to YES in Info.plist
///   </li>
///   <li>
///     The app was built with Xcode < 26.0 (DTXcode < 2600)
///   </li>
/// </ul>
@property (nonatomic) BOOL enableSessionReplayInUnreliableEnvironment;
/// Logs are considered beta.
@property (nonatomic) BOOL enableLogs;
- (void)validateOptions:(NSDictionary<NSString *, id> * _Nullable)options;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry19SentryExtraPackages")
@interface SentryExtraPackages : NSObject
+ (void)addPackageName:(NSString * _Nullable)name version:(NSString * _Nullable)version;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum SentryFeedbackSource : NSInteger;

SWIFT_CLASS("_TtC6Sentry14SentryFeedback")
@interface SentryFeedback : NSObject
@property (nonatomic, readonly, strong) SentryId * _Nonnull eventId;
/// \param associatedEventId The ID for an event you’d like associated with the feedback. 
///
/// \param attachments Data objects for any attachments. Currently the web UI only supports showing one attached image, like for a screenshot. 
///
- (nonnull instancetype)initWithMessage:(NSString * _Nonnull)message name:(NSString * _Nullable)name email:(NSString * _Nullable)email source:(enum SentryFeedbackSource)source associatedEventId:(SentryId * _Nullable)associatedEventId attachments:(NSArray<NSData *> * _Nullable)attachments OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryFeedbackSource, open) {
  SentryFeedbackSourceWidget = 0,
  SentryFeedbackSourceCustom = 1,
};


@interface SentryFeedback (SWIFT_EXTENSION(Sentry)) <SentrySerializable>
@end


@interface SentryFeedback (SWIFT_EXTENSION(Sentry))
/// note:
/// Currently there is only a single attachment possible, for the screenshot, of which there can be only one.
- (NSArray<SentryAttachment *> * _Nonnull)attachmentsForEnvelope SWIFT_WARN_UNUSED_RESULT;
@end


@interface SentryFeedback (SWIFT_EXTENSION(Sentry))
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry18SentryFileContents")
@interface SentryFileContents : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull path;
@property (nonatomic, readonly, copy) NSData * _Nonnull contents;
- (nonnull instancetype)initWithPath:(NSString * _Nonnull)path contents:(NSData * _Nonnull)contents OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_PROTOCOL("_TtP6Sentry25SentryFileManagerProtocol_")
@protocol SentryFileManagerProtocol
- (void)moveState:(NSString * _Nonnull)stateFilePath toPreviousState:(NSString * _Nonnull)previousStateFilePath;
- (NSData * _Nullable)readDataFromPath:(NSString * _Nonnull)path error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (BOOL)writeData:(NSData * _Nonnull)data toPath:(NSString * _Nonnull)path;
- (void)removeFileAtPath:(NSString * _Nonnull)path;
- (NSURL * _Nonnull)getSentryPathAsURL SWIFT_WARN_UNUSED_RESULT;
@end

@class SentryFrame;

SWIFT_CLASS("_TtC6Sentry18SentryFrameRemover")
@interface SentryFrameRemover : NSObject
/// Removes Sentry SDK frames until a frame from a different package is found.
/// @discussion When a user includes Sentry as a static library, the package is the same as the
/// application. Therefore removing frames with a package containing “sentry” doesn’t work. We can’t
/// look into the function name as in release builds, the function name can be obfuscated, or we
/// remove functions that are not from this SDK and contain “sentry”. Therefore this logic only works
/// for apps including Sentry dynamically.
+ (NSArray<SentryFrame *> * _Nonnull)removeNonSdkFrames:(NSArray<SentryFrame *> * _Nonnull)frames SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry23SentryFramesDelayResult")
@interface SentryFramesDelayResult : NSObject
/// The frames delay for the passed time period. If frame delay can’t be calculated this is -1.
@property (nonatomic, readonly) CFTimeInterval delayDuration;
@property (nonatomic, readonly) NSUInteger framesContributingToDelayCount;
- (nonnull instancetype)initWithDelayDuration:(CFTimeInterval)delayDuration framesContributingToDelayCount:(NSUInteger)framesContributingToDelayCount OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry26SentryGlobalEventProcessor")
@interface SentryGlobalEventProcessor : NSObject
- (void)addEventProcessor:(SentryEvent * _Nullable (^ _Nonnull)(SentryEvent * _Nonnull))newProcessor;
- (SentryEvent * _Nullable)reportAll:(SentryEvent * _Nonnull)event;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSUUID;

SWIFT_CLASS("_TtC6Sentry8SentryId")
@interface SentryId : NSObject
/// A @c SentryId with an empty UUID “00000000000000000000000000000000”.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryId * _Nonnull empty;)
+ (SentryId * _Nonnull)empty SWIFT_WARN_UNUSED_RESULT;
/// Returns a 32 lowercase character hexadecimal string description of the @c SentryId, such as
/// “12c2d058d58442709aa2eca08bf20986”.
@property (nonatomic, readonly, copy) NSString * _Nonnull sentryIdString;
/// Creates a @c SentryId with a random UUID.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Creates a SentryId with the given UUID.
- (nonnull instancetype)initWithUuid:(NSUUID * _Nonnull)uuid OBJC_DESIGNATED_INITIALIZER;
/// Creates a @c SentryId from a 32 character hexadecimal string without dashes such as
/// “12c2d058d58442709aa2eca08bf20986” or a 36 character hexadecimal string such as such as
/// “12c2d058-d584-4270-9aa2-eca08bf20986”.
/// @return SentryId.empty for invalid strings.
- (nonnull instancetype)initWithUUIDString:(NSString * _Nonnull)uuidString OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@property (nonatomic, readonly) NSUInteger hash;
@end



/// This class detects whether a framework belongs to the app or not. We differentiate between three
/// different types of frameworks.
/// First, the main executable of the app, which’s name can be retrieved by @c CFBundleExecutable. To
/// mark this framework as “in-app” the caller needs to pass in the @c CFBundleExecutable to
/// @c inAppIncludes.
/// Next, there are private frameworks embedded in the application bundle. Both app supporting
/// frameworks as CocoaLumberJack, Sentry, RXSwift, etc., and frameworks written by the user fall
/// into this category. These frameworks can be both “in-app” or not. As we expect most frameworks of
/// this category to be supporting frameworks, we mark them not as “in-app”. If a user wants such a
/// framework to be “in-app”, they need to pass the name into @c inAppIncludes. For dynamic
/// frameworks, the location is usually in the bundle under
/// /Frameworks/FrameworkName.framework/FrameworkName. As for static frameworks, the location is the
/// same as the main executable; this class marks all static frameworks as “in-app”. To remove static
/// frameworks from being “in-app”, Sentry uses stack trace grouping rules on the server.
/// Last, this class marks all public frameworks as not “in-app”. Such frameworks are bound
/// dynamically and are usually located at /Library/Frameworks or ~/Library/Frameworks. For
/// simulators, the location can be something like
/// /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/…
SWIFT_CLASS("_TtC6Sentry16SentryInAppLogic")
@interface SentryInAppLogic : NSObject
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull inAppIncludes;
/// Initializes @c SentryInAppLogic with @c inAppIncludes and @c inAppExcludes.
/// To work properly for Apple applications the @c inAppIncludes should contain the
/// @c CFBundleExecutable, which is the name of the bundle’s executable file.
/// @param inAppIncludes A list of string prefixes of framework names that belong to the app. This
/// option takes precedence over @c inAppExcludes.
/// @param inAppExcludes A list of string prefixes of framework names that do not belong to the app,
/// but rather to third-party packages. Modules considered not part of the app will be hidden from
/// stack traces by default.
- (nonnull instancetype)initWithInAppIncludes:(NSArray<NSString *> * _Nonnull)inAppIncludes inAppExcludes:(NSArray<NSString *> * _Nonnull)inAppExcludes OBJC_DESIGNATED_INITIALIZER;
/// Determines if the framework belongs to the app by using @c inAppIncludes and @c inAppExcludes.
/// Before checking this method lowercases the strings and uses only the @c lastPathComponent of the
/// @c imagePath.
/// @param imagePath the full path of the binary image.
/// @return @c YES if the framework located at the @c imagePath starts with a prefix of
/// @c inAppIncludes. @c NO if the framework located at the @c imagePath doesn’t start with a prefix of
/// @c inAppIncludes or start with a prefix of @c inAppExcludes.
- (BOOL)isInApp:(NSString * _Nullable)imagePath SWIFT_WARN_UNUSED_RESULT;
/// Determines if the class belongs to the app by getting its framework and checking with
/// @c -[isInApp:]
/// @param targetClass the class to check.
/// @return @c YES if the @c targetClass belongs to a framework included in @c inAppIncludes.
/// @c NO if targetClass does not belong to a framework in @c inAppIncludes or belongs to a framework in
/// @c inAppExcludes.
- (BOOL)isClassInApp:(Class _Nonnull)targetClass SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isImageNameInApp:(NSString * _Nonnull)imageName inAppInclude:(NSString * _Nonnull)inAppInclude SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSError;

SWIFT_PROTOCOL("_TtP6Sentry30SentryInfoPlistWrapperProvider_")
@protocol SentryInfoPlistWrapperProvider
/// Retrieves a value from the app’s <code>Info.plist</code> file for the given key and trys to cast it to a <code>String</code>.
/// note:
/// The return value can not be nullable, because a throwing function in Objective-C uses <code>nil</code> to indicate an error:
/// \code
/// Throwing method cannot be a member of an '@objc' protocol because it returns a value of optional type 'String?'; 'nil' indicates failure to Objective-C
///
/// \endcode\param key The key for which to retrieve the value from the <code>Info.plist</code>.
///
///
/// throws:
/// An error if the value cannot be cast to type <code>String</code> or <code>SentryInfoPlistError.keyNotFound</code> if the key was not found or the value is <code>nil</code>
///
/// returns:
/// The value associated with the specified key cast to type <code>String</code>
- (NSString * _Nullable)getAppValueStringFor:(NSString * _Nonnull)key error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Retrieves a value from the app’s <code>Info.plist</code> file for the given key and trys to cast it to a <code>Bool</code>.
/// note:
/// This method can not use <code>throws</code> because a falsy return value would indicate an error in Objective-C:
/// \code
/// Throwing method cannot be a member of an '@objc' protocol because it returns a value of type 'Bool'; return 'Void' or a type that bridges to an Objective-C class
///
/// \endcode<ul>
///   <li>
///     Parameters
///     <ul>
///       <li>
///         key: The key for which to retrieve the value from the <code>Info.plist</code>.
///       </li>
///       <li>
///         error: A pointer to a an <code>NSError</code> to return an error value.
///       </li>
///     </ul>
///   </li>
/// </ul>
///
/// throws:
/// An error if the value cannot be cast to type <code>String</code> or <code>SentryInfoPlistError.keyNotFound</code> if the value is <code>nil</code>
///
/// returns:
/// The value associated with the specified key cast to type <code>String</code>
- (BOOL)getAppValueBooleanFor:(NSString * _Nonnull)key errorPtr:(NSError * _Nullable * _Nullable)errorPtr SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry22SentryInfoPlistWrapper")
@interface SentryInfoPlistWrapper : NSObject <SentryInfoPlistWrapperProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (BOOL)getAppValueBooleanFor:(NSString * _Nonnull)key errorPtr:(NSError * _Nullable * _Nullable)errPtr SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getAppValueStringFor:(NSString * _Nonnull)key error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


typedef SWIFT_ENUM(NSUInteger, SentryLevel, open) {
  kSentryLevelNone SWIFT_COMPILE_NAME("none") = 0,
  kSentryLevelDebug SWIFT_COMPILE_NAME("debug") = 1,
  kSentryLevelInfo SWIFT_COMPILE_NAME("info") = 2,
  kSentryLevelWarning SWIFT_COMPILE_NAME("warning") = 3,
  kSentryLevelError SWIFT_COMPILE_NAME("error") = 4,
  kSentryLevelFatal SWIFT_COMPILE_NAME("fatal") = 5,
};


SWIFT_CLASS("_TtC6Sentry17SentryLevelHelper")
@interface SentryLevelHelper : NSObject
+ (NSString * _Nonnull)nameForLevel:(enum SentryLevel)level SWIFT_WARN_UNUSED_RESULT;
+ (enum SentryLevel)levelForName:(NSString * _Nullable)name SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


enum SentryStructuredLogLevel : NSInteger;
@class SentryStructuredLogAttribute;

/// A structured log entry that captures log data with associated attribute metadata.
/// Use the <code>options.beforeSendLog</code> callback to modify or filter log data.
SWIFT_CLASS("_TtC6Sentry9SentryLog")
@interface SentryLog : NSObject
/// The timestamp when the log event occurred
@property (nonatomic, copy) NSDate * _Nonnull timestamp;
/// The trace ID to associate this log with distributed tracing
@property (nonatomic, strong) SentryId * _Nonnull traceId;
/// The severity level of the log entry
@property (nonatomic) enum SentryStructuredLogLevel level;
/// The main log message content
@property (nonatomic, copy) NSString * _Nonnull body;
/// A dictionary of structured attributes added to the log entry
@property (nonatomic, copy) NSDictionary<NSString *, SentryStructuredLogAttribute *> * _Nonnull attributes;
/// Numeric representation of the severity level (Int)
@property (nonatomic, strong) NSNumber * _Nullable severityNumber;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface SentryLog (SWIFT_EXTENSION(Sentry))
@end


/// A typed attribute that can be attached to structured log entries.
/// <code>Attribute</code> provides a type-safe way to store structured data alongside log messages.
/// Supports String, Bool, Int, and Double types.
SWIFT_CLASS_NAMED("Attribute")
@interface SentryStructuredLogAttribute : NSObject
/// The type identifier for this attribute (“string”, “boolean”, “integer”, “double”)
@property (nonatomic, readonly, copy) NSString * _Nonnull type;
/// The actual value stored in this attribute
@property (nonatomic, readonly) id _Nonnull value;
- (nonnull instancetype)initWithString:(NSString * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithBoolean:(BOOL)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithInteger:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDouble:(double)value OBJC_DESIGNATED_INITIALIZER;
/// Creates a double attribute from a float value
- (nonnull instancetype)initWithFloat:(float)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface SentryLog (SWIFT_EXTENSION(Sentry))
@end

/// Represents the severity level of a structured log entry.
/// Log levels are ordered by severity from least (<code>trace</code>) to most severe (<code>fatal</code>).
/// Each level corresponds to a numeric severity value following the OpenTelemetry specification.
typedef SWIFT_ENUM_NAMED(NSInteger, SentryStructuredLogLevel, "Level", open) {
  SentryStructuredLogLevelTrace = 0,
  SentryStructuredLogLevelDebug = 1,
  SentryStructuredLogLevelInfo = 2,
  SentryStructuredLogLevelWarn = 3,
  SentryStructuredLogLevelError = 4,
  SentryStructuredLogLevelFatal = 5,
};


@class SentryClient;

SWIFT_CLASS("_TtC6Sentry16SentryLogBatcher")
@interface SentryLogBatcher : NSObject
/// Initializes a new SentryLogBatcher.
/// important:
/// The <code>dispatchQueue</code> parameter MUST be a serial queue to ensure thread safety.
/// Passing a concurrent queue will result in undefined behavior and potential data races.
/// \param client The SentryClient to use for sending logs
///
/// \param flushTimeout The timeout interval after which buffered logs will be flushed
///
/// \param maxBufferSizeBytes The maximum buffer size in bytes before triggering an immediate flush
///
/// \param dispatchQueue A <em>serial</em> dispatch queue wrapper for thread-safe access to mutable state
///
- (nonnull instancetype)initWithClient:(SentryClient * _Nonnull)client flushTimeout:(NSTimeInterval)flushTimeout maxBufferSizeBytes:(NSInteger)maxBufferSizeBytes dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue OBJC_DESIGNATED_INITIALIZER;
/// Convenience initializer with default flush timeout and buffer size.
/// important:
/// The <code>dispatchQueue</code> parameter MUST be a serial queue to ensure thread safety.
/// Passing a concurrent queue will result in undefined behavior and potential data races.
/// \param client The SentryClient to use for sending logs
///
/// \param dispatchQueue A <em>serial</em> dispatch queue wrapper for thread-safe access to mutable state
///
- (nonnull instancetype)initWithClient:(SentryClient * _Nonnull)client dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// <em>EXPERIMENTAL</em> - A structured logging API for Sentry.
/// <code>SentryLogger</code> provides a structured logging interface that captures log entries
/// and sends them to Sentry. Supports multiple log levels (trace, debug, info, warn,
/// error, fatal) and allows attaching arbitrary attributes for enhanced context.
/// <h2>Supported Attribute Types</h2>
/// note:
/// Sentry Logs is currently in Beta. See the <a href="https://docs.sentry.io/product/explore/logs/">Sentry Logs Documentation</a>.
/// warning:
/// This API is experimental and subject to change without notice.
/// <ul>
///   <li>
///     <code>String</code>, <code>Bool</code>, <code>Int</code>, <code>Double</code>
///   </li>
///   <li>
///     <code>Float</code> (converted to <code>Double</code>)
///   </li>
///   <li>
///     Other types (converted to string)
///   </li>
/// </ul>
/// <h2>Usage</h2>
/// \code
/// let logger = SentrySDK.logger
/// logger.info("User logged in", attributes: ["userId": "12345"])
/// logger.error("Payment failed", attributes: ["errorCode": 500])
///
/// // Structured string interpolation with automatic type detection
/// logger.info("User \(userId) processed \(count) items with \(percentage)% success")
/// logger.debug("Processing \(itemCount) items, active: \(isActive)")
/// logger.warn("Retry attempt \(currentAttempt) of \(maxAttempts) failed")
///
/// \endcode
SWIFT_CLASS("_TtC6Sentry12SentryLogger")
@interface SentryLogger : NSObject
/// Logs a trace-level message.
- (void)trace:(NSString * _Nonnull)body;
/// Logs a trace-level message with additional attributes.
- (void)trace:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a debug-level message.
- (void)debug:(NSString * _Nonnull)body;
/// Logs a debug-level message with additional attributes.
- (void)debug:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs an info-level message.
- (void)info:(NSString * _Nonnull)body;
/// Logs an info-level message with additional attributes.
- (void)info:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a warning-level message.
- (void)warn:(NSString * _Nonnull)body;
/// Logs a warning-level message with additional attributes.
- (void)warn:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs an error-level message.
- (void)error:(NSString * _Nonnull)body;
/// Logs an error-level message with additional attributes.
- (void)error:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a fatal-level message.
- (void)fatal:(NSString * _Nonnull)body;
/// Logs a fatal-level message with additional attributes.
- (void)fatal:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryMXFrame;

SWIFT_CLASS("_TtC6Sentry17SentryMXCallStack")
@interface SentryMXCallStack : NSObject
@property (nonatomic, copy) NSArray<SentryMXFrame *> * _Nonnull callStackRootFrames;
@property (nonatomic, readonly, copy) NSArray<SentryMXFrame *> * _Nonnull flattenedRootFrames;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// JSON specification of MXCallStackTree can be found here https://developer.apple.com/documentation/metrickit/mxcallstacktree/3552293-jsonrepresentation
SWIFT_CLASS("_TtC6Sentry21SentryMXCallStackTree")
@interface SentryMXCallStackTree : NSObject
@property (nonatomic, readonly, copy) NSArray<SentryMXCallStack *> * _Nonnull callStacks;
@property (nonatomic, readonly) BOOL callStackPerThread;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry13SentryMXFrame")
@interface SentryMXFrame : NSObject
@property (nonatomic, copy) NSUUID * _Nonnull binaryUUID;
@property (nonatomic) NSInteger offsetIntoBinaryTextSegment;
@property (nonatomic, copy) NSString * _Nullable binaryName;
@property (nonatomic) uint64_t address;
@property (nonatomic, copy) NSArray<SentryMXFrame *> * _Nullable subFrames;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol SentryMXManagerDelegate;
@class MXDiagnosticPayload;

SWIFT_CLASS("_TtC6Sentry15SentryMXManager") SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(maccatalyst,introduced=15.0) SWIFT_AVAILABILITY(macos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=15.0)
@interface SentryMXManager : NSObject <MXMetricManagerSubscriber>
- (nonnull instancetype)initWithDisableCrashDiagnostics:(BOOL)disableCrashDiagnostics OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, weak) id <SentryMXManagerDelegate> _Nullable delegate;
- (void)receiveReports;
- (void)pauseReports;
- (void)didReceiveDiagnosticPayloads:(NSArray<MXDiagnosticPayload *> * _Nonnull)payloads;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class MXCrashDiagnostic;
@class MXDiskWriteExceptionDiagnostic;
@class MXCPUExceptionDiagnostic;
@class MXHangDiagnostic;

SWIFT_PROTOCOL("_TtP6Sentry23SentryMXManagerDelegate_") SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(maccatalyst,introduced=15.0) SWIFT_AVAILABILITY(macos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=15.0)
@protocol SentryMXManagerDelegate
- (void)didReceiveCrashDiagnostic:(MXCrashDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveDiskWriteExceptionDiagnostic:(MXDiskWriteExceptionDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveCpuExceptionDiagnostic:(MXCPUExceptionDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveHangDiagnostic:(MXHangDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
@end

@protocol SentryRedactOptions;
@class NSCoder;

SWIFT_CLASS("_TtC6Sentry24SentryMaskingPreviewView")
@interface SentryMaskingPreviewView : UIView
@property (nonatomic) float opacity;
- (nonnull instancetype)initWithRedactOptions:(id <SentryRedactOptions> _Nonnull)redactOptions OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (void)didMoveToSuperview;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

@class SentryMeasurementUnit;

SWIFT_CLASS("_TtC6Sentry22SentryMeasurementValue")
@interface SentryMeasurementValue : NSObject
@property (nonatomic, readonly, strong) NSNumber * _Nonnull value;
@property (nonatomic, readonly, strong) SentryMeasurementUnit * _Nullable unit;
- (nonnull instancetype)initWithValue:(NSNumber * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithValue:(NSNumber * _Nonnull)value unit:(SentryMeasurementUnit * _Nonnull)unit OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// For proper statistics in release health, we need to make sure we don’t send session updates
/// without sending a session init first. In other words, we can’t drop a session init. The
/// @c SentryFileManager deletes an envelope once the maximum amount of envelopes is stored. When
/// this happens and the envelope to delete contains a session init we look for the next envelope
/// containing a session update for the same session. If such a session envelope is found we migrate
/// the init flag. If none is found we delete the envelope. We don’t migrate other envelope items as
/// events.
SWIFT_CLASS("_TtC6Sentry24SentryMigrateSessionInit")
@interface SentryMigrateSessionInit : NSObject
/// Checks if the envelope of the passed file path contains an envelope item with a session init. If
/// it does it iterates over all envelopes and looks for a session with the same session id. If such
/// a session is found the init flag is set to @c true, the envelope is updated with keeping other
/// envelope items and headers, and the updated envelope is stored to the disk keeping its path.
/// @param envelope The envelope to delete
/// @param envelopesDirPath The path of the directory where the envelopes are stored.
/// @param envelopeFilePaths An array containing the file paths of envelopes to check if they contain
/// a session init.
/// @return @c true if the function migrated the session init. @c false if not.
+ (BOOL)migrateSessionInit:(SentryEnvelope * _Nullable)envelope envelopesDirPath:(NSString * _Nonnull)envelopesDirPath envelopeFilePaths:(NSArray<NSString *> * _Nonnull)envelopeFilePaths;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry27SentryMobileProvisionParser")
@interface SentryMobileProvisionParser : NSObject
@property (nonatomic, readonly) BOOL mobileProvisionProfileProvisionsAllDevices;
- (nonnull instancetype)init;
- (BOOL)hasEmbeddedMobileProvisionProfile SWIFT_WARN_UNUSED_RESULT;
@end



@class NSTimer;

SWIFT_CLASS("_TtC6Sentry20SentryNSTimerFactory")
@interface SentryNSTimerFactory : NSObject
- (NSTimer * _Nonnull)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^ _Nonnull)(NSTimer * _Nonnull))block;
- (NSTimer * _Nonnull)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id _Nonnull)aTarget selector:(SEL _Nonnull)aSelector userInfo:(id _Nullable)userInfo repeats:(BOOL)yesOrNo;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@class SentryVideoInfo;

SWIFT_PROTOCOL("_TtP6Sentry22SentryReplayVideoMaker_")
@protocol SentryReplayVideoMaker <NSObject>
- (void)addFrameAsyncWithTimestamp:(NSDate * _Nonnull)timestamp maskedViewImage:(UIImage * _Nonnull)maskedViewImage forScreen:(NSString * _Nullable)forScreen;
- (void)releaseFramesUntil:(NSDate * _Nonnull)date;
- (void)createVideoInBackgroundWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end completion:(void (^ _Nonnull)(NSArray<SentryVideoInfo *> * _Nonnull))completion;
- (NSArray<SentryVideoInfo *> * _Nonnull)createVideoWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry20SentryOnDemandReplay")
@interface SentryOnDemandReplay : NSObject <SentryReplayVideoMaker>
@property (nonatomic) float videoScale;
@property (nonatomic) NSInteger bitRate;
@property (nonatomic) NSInteger frameRate;
@property (nonatomic) NSUInteger cacheMaxSize;
- (nonnull instancetype)initWithOutputPath:(NSString * _Nonnull)outputPath processingQueue:(SentryDispatchQueueWrapper * _Nonnull)processingQueue assetWorkerQueue:(SentryDispatchQueueWrapper * _Nonnull)assetWorkerQueue OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithContentFrom:(NSString * _Nonnull)outputPath processingQueue:(SentryDispatchQueueWrapper * _Nonnull)processingQueue assetWorkerQueue:(SentryDispatchQueueWrapper * _Nonnull)assetWorkerQueue;
- (void)addFrameAsyncWithTimestamp:(NSDate * _Nonnull)timestamp maskedViewImage:(UIImage * _Nonnull)maskedViewImage forScreen:(NSString * _Nullable)screen;
- (void)releaseFramesUntil:(NSDate * _Nonnull)date;
@property (nonatomic, readonly, copy) NSDate * _Nullable oldestFrameDate;
- (void)createVideoInBackgroundWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end completion:(void (^ _Nonnull)(NSArray<SentryVideoInfo *> * _Nonnull))completion;
- (NSArray<SentryVideoInfo *> * _Nonnull)createVideoWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


enum SentryProfileLifecycle : NSInteger;

/// An object containing configuration for the Sentry profiler.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// If either <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code> are
/// set to a non-nil value such that transaction-based profiling is being used, these settings
/// will have no effect, nor will <code>SentrySDK.startProfiler()</code> or <code>SentrySDK.stopProfiler()</code>.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
SWIFT_CLASS("_TtC6Sentry20SentryProfileOptions")
@interface SentryProfileOptions : NSObject
/// The mode to use for starting and stopping the profiler, either manually or automatically.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// Default: <code>SentryProfileLifecycleManual</code>.
/// note:
/// If either <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code> are
/// set to a non-nil value such that transaction-based profiling is being used, then setting
/// this property has no effect.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) enum SentryProfileLifecycle lifecycle;
/// The % of user sessions in which to enable profiling.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// The decision whether or not to sample profiles is computed using this sample rate
/// when the SDK is started, and applies to any requests to start the profiler–regardless of
/// <code>lifecycle</code>– until the app resigns its active status. It is then reevaluated on subsequent
/// foreground events. The duration of time that a sample decision prevails between
/// launch/foreground and background is referred to as a profile session.
/// note:
/// Backgrounding and foregrounding the app starts a new user session and sampling is
/// re-evaluated. If there is no active trace when the app is backgrounded, profiling stops
/// before the app backgrounds. If there is an active trace and profiling is in-flight when the
/// app is foregrounded again, the same profiling session should continue until the last root
/// span in that trace finishes — this means that the re-evaluated sample rate does not actually
/// take effect until the profiler is started again.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) float sessionSampleRate;
/// Start the profiler as early as possible during the app lifecycle to capture more activity
/// during your app’s launch.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// <code>sessionSampleRate</code> is evaluated on the previous launch and only takes effect when
/// app start profiling activates on the next launch.
/// note:
/// If <code>lifecycle</code> is <code>manual</code>, profiling is started automatically on startup, but you
/// must manually call <code>SentrySDK.stopProfiler()</code> whenever you app startup to be complete. If
/// <code>lifecycle</code> is <code>trace</code>, profiling is started automatically on startup, and will
/// automatically be stopped when the root span that is associated with app startup ends.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) BOOL profileAppStarts;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Different modes for starting and stopping the profiler.
typedef SWIFT_ENUM(NSInteger, SentryProfileLifecycle, open) {
/// Profiling is controlled manually, and is independent of transactions & spans. Developers
/// must use<code>SentrySDK.startProfiler()</code> and <code>SentrySDK.stopProfiler()</code> to manage the profile
/// session. If the session is sampled, <code>SentrySDK.startProfiler()</code> will always start
/// profiling.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
  SentryProfileLifecycleManual = 0,
/// Profiling is automatically started when there is at least 1 active root span, and
/// automatically stopped when there are 0 root spans.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// This mode only works if tracing is enabled.
/// note:
/// Profiling respects both <code>SentryProfileOptions.profileSessionSampleRate</code> and
/// the existing sampling configuration for tracing
/// (<code>SentryOptions.tracesSampleRate</code>/<code>SentryOptions.tracesSampler</code>). Sampling will be
/// re-evaluated on a per root span basis.
/// note:
/// If there are multiple overlapping root spans, where some are sampled and some or
/// not, profiling will continue until the end of the last sampled root span. Profiling data
/// will not be linked with spans that are not sampled.
/// note:
/// When the last root span finishes, the profiler will continue running until the
/// end of the current timed interval. If a new root span starts before this interval
/// completes, the profiler will instead continue running until the next root span stops, at
/// which time it will attempt to stop again in the same way.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
  SentryProfileLifecycleTrace = 1,
};


SWIFT_PROTOCOL_NAMED("SentryRRWebEventProtocol")
@protocol SentryRRWebEvent <SentrySerializable>
@end


SWIFT_CLASS("_TtC6Sentry16SentryRRWebEvent")
@interface SentryRRWebEvent : NSObject <SentryRRWebEvent>
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable data;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry22SentryRRWebCustomEvent")
@interface SentryRRWebCustomEvent : SentryRRWebEvent
@end


SWIFT_CLASS("_TtC6Sentry26SentryRRWebBreadcrumbEvent")
@interface SentryRRWebBreadcrumbEvent : SentryRRWebCustomEvent
- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp category:(NSString * _Nonnull)category message:(NSString * _Nullable)message level:(enum SentryLevel)level data:(NSDictionary<NSString *, id> * _Nullable)data OBJC_DESIGNATED_INITIALIZER;
@end





SWIFT_CLASS("_TtC6Sentry20SentryRRWebSpanEvent")
@interface SentryRRWebSpanEvent : SentryRRWebCustomEvent
- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp endTimestamp:(NSDate * _Nonnull)endTimestamp operation:(NSString * _Nonnull)operation description:(NSString * _Nonnull)description data:(NSDictionary<NSString *, id> * _Nonnull)data OBJC_DESIGNATED_INITIALIZER;
@end


/// Protocol for generating random numbers.
SWIFT_PROTOCOL("_TtP6Sentry20SentryRandomProtocol_")
@protocol SentryRandomProtocol
/// Returns a random number uniformly distributed over the interval [0.0 , 1.0].
- (double)nextNumber SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry12SentryRandom")
@interface SentryRandom : NSObject <SentryRandomProtocol>
/// Returns a random number uniformly distributed over the interval [0.0 , 1.0].
- (double)nextNumber SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_PROTOCOL("_TtP6Sentry19SentryRedactOptions_")
@protocol SentryRedactOptions
@property (nonatomic, readonly) BOOL maskAllText;
@property (nonatomic, readonly) BOOL maskAllImages;
@property (nonatomic, readonly, copy) NSArray<Class> * _Nonnull maskedViewClasses;
@property (nonatomic, readonly, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
@end


SWIFT_CLASS("_TtC6Sentry26SentryRedactDefaultOptions")
@interface SentryRedactDefaultOptions : NSObject <SentryRedactOptions>
@property (nonatomic) BOOL maskAllText;
@property (nonatomic) BOOL maskAllImages;
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry22SentryRedactViewHelper")
@interface SentryRedactViewHelper : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (void)maskView:(UIView * _Nonnull)view;
+ (void)unmaskView:(UIView * _Nonnull)view;
+ (void)clipOutView:(UIView * _Nonnull)view;
+ (void)maskSwiftUI:(UIView * _Nonnull)view;
@end

@class SentryBreadcrumb;

SWIFT_PROTOCOL("_TtP6Sentry31SentryReplayBreadcrumbConverter_")
@protocol SentryReplayBreadcrumbConverter <NSObject>
- (id <SentryRRWebEvent> _Nullable)convertFrom:(SentryBreadcrumb * _Nonnull)breadcrumb SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL("_TtP6Sentry30SentryReplayDisplayLinkWrapper_")
@protocol SentryReplayDisplayLinkWrapper
- (BOOL)isRunning SWIFT_WARN_UNUSED_RESULT;
- (void)invalidate;
- (void)linkWithTarget:(id _Nonnull)withTarget selector:(SEL _Nonnull)selector;
@end

enum SentryReplayType : NSInteger;

SWIFT_CLASS("_TtC6Sentry17SentryReplayEvent")
@interface SentryReplayEvent : SentryEvent
@property (nonatomic, readonly, copy) NSDate * _Nonnull replayStartTimestamp;
@property (nonatomic, readonly) enum SentryReplayType replayType;
/// Number of the segment in the replay.
/// This is an incremental number
@property (nonatomic, readonly) NSInteger segmentId;
/// This will be used to store the name of the screens
/// that appear during the duration of the replay segment.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable urls;
- (nonnull instancetype)initWithEventId:(SentryId * _Nonnull)eventId replayStartTimestamp:(NSDate * _Nonnull)replayStartTimestamp replayType:(enum SentryReplayType)replayType segmentId:(NSInteger)segmentId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum SentryReplayQuality : NSInteger;

SWIFT_CLASS("_TtC6Sentry19SentryReplayOptions")
@interface SentryReplayOptions : NSObject <SentryRedactOptions>
/// Indicates the percentage in which the replay for the session will be created.
/// note:
/// The value needs to be <code>>= 0.0</code> and <code><= 1.0</code>. When setting a value out of range the SDK sets it
/// to the default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.sessionSegmentDuration</code> for the default duration of the replay.
/// <ul>
///   <li>
///     Specifying @c 0 means never, @c 1.0 means always.
///   </li>
/// </ul>
@property (nonatomic) float sessionSampleRate;
/// Indicates the percentage in which a 30 seconds replay will be send with error events.
/// note:
/// The value needs to be >= 0.0 and <= 1.0. When setting a value out of range the SDK sets it
/// to the default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.errorReplayDuration</code> for the default duration of the replay.
/// <ul>
///   <li>
///     Specifying 0 means never, 1.0 means always.
///   </li>
/// </ul>
@property (nonatomic) float onErrorSampleRate;
/// Indicates whether session replay should redact all text in the app
/// by drawing a black rectangle over it.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskAllText</code> for the default value.
@property (nonatomic) BOOL maskAllText;
/// Indicates whether session replay should redact all non-bundled image
/// in the app by drawing a black rectangle over it.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskAllImages</code> for the default value.
@property (nonatomic) BOOL maskAllImages;
/// Indicates the quality of the replay.
/// The higher the quality, the higher the CPU and bandwidth usage.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.quality</code> for the default value.
@property (nonatomic) enum SentryReplayQuality quality;
/// A list of custom UIView subclasses that need
/// to be masked during session replay.
/// By default Sentry already mask text and image elements from UIKit
/// Every child of a view that is redacted will also be redacted.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskedViewClasses</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
/// A list of custom UIView subclasses to be ignored
/// during masking step of the session replay.
/// The views of given classes will not be redacted but their children may be.
/// This property has precedence over <code>redactViewTypes</code>.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.unmaskedViewClasses</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
/// Alias for <code>enableViewRendererV2</code>.
/// This flag is deprecated and will be removed in a future version.
/// Please use <code>enableViewRendererV2</code> instead.
@property (nonatomic) BOOL enableExperimentalViewRenderer SWIFT_DEPRECATED_MSG("", "enableViewRendererV2");
/// Enables the up to 5x faster new view renderer used by the Session Replay integration.
/// Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// <em>up to 4-5x faster rendering</em> (reducing <code>~160ms</code> to <code>~36ms</code> per frame) on older devices.
/// experiment:
/// In case you are noticing issues with the new view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>.
/// Eventually, we will remove this feature flag and use the new view renderer by default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.enableViewRendererV2</code> for the default value.
@property (nonatomic) BOOL enableViewRendererV2;
/// Enables up to 5x faster but incomplete view rendering used by the Session Replay integration.
/// Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// up to <em>5x faster render times</em> (reducing <code>~160ms</code> to <code>~30ms</code> per frame).
/// This flag controls the way the view hierarchy is drawn into a graphics context for the session replay. By default, the view hierarchy is drawn using
/// the <code>UIView.drawHierarchy(in:afterScreenUpdates:)</code> method, which is the most complete way to render the view hierarchy. However,
/// this method can be slow, especially when rendering complex views, therefore enabling this flag will switch to render the underlying <code>CALayer</code> instead.
/// note:
/// This flag can only be used together with <code>enableViewRendererV2</code> with up to 20% faster render times.
/// warning:
/// Rendering the view hiearchy using the <code>CALayer.render(in:)</code> method can lead to rendering issues, especially when using custom views.
/// For complete rendering, it is recommended to set this option to <code>false</code>. In case you prefer performance over completeness, you can
/// set this option to <code>true</code>.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. In case you are noticing issues with the experimental
/// view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>. Eventually, we will
/// mark this feature as stable and remove the experimental flag, but will keep it disabled by default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.enableFastViewRendering</code> for the default value.
@property (nonatomic) BOOL enableFastViewRendering;
/// Defines the quality of the session replay.
/// Higher bit rates better quality, but also bigger files to transfer.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.quality</code> for the default value.
@property (nonatomic, readonly) NSInteger replayBitRate;
/// The scale related to the window size at which the replay will be created
/// note:
/// The scale is used to reduce the size of the replay.
@property (nonatomic, readonly) float sizeScale;
/// Number of frames per second of the replay.
/// The more the havier the process is.
/// The minimum is 1, if set to zero this will change to 1.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.frameRate</code> for the default value.
@property (nonatomic) NSUInteger frameRate;
/// The maximum duration of replays for error events.
@property (nonatomic) NSTimeInterval errorReplayDuration;
/// The maximum duration of the segment of a session replay.
@property (nonatomic) NSTimeInterval sessionSegmentDuration;
/// The maximum duration of a replay session.
/// note:
/// See  <code>SentryReplayOptions.DefaultValues.maximumDuration</code> for the default value.
@property (nonatomic) NSTimeInterval maximumDuration;
/// Initialize session replay options disabled
/// note:
/// This initializer is added for Objective-C compatibility, as constructors with default values
/// are not supported in Objective-C.
/// note:
/// See <code>SentryReplayOptions.DefaultValues</code> for the default values of each parameter.
- (nonnull instancetype)init;
/// Initializes a new instance of <code>SentryReplayOptions</code> using a dictionary.
/// warning:
/// This initializer is primarily used by Hybrid SDKs and is not intended for public use.
/// \param dictionary A dictionary containing the configuration options for the session replay.
///
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary;
/// Initializes a new instance of <code>SentryReplayOptions</code> with the specified parameters.
/// note:
/// See <code>SentryReplayOptions.DefaultValues</code> for the default values of each parameter.
/// \param sessionSampleRate Sample rate used to determine the percentage of replays of sessions that will be uploaded.
///
/// \param onErrorSampleRate Sample rate used to determine the percentage of replays of error events that will be uploaded.
///
/// \param maskAllText Flag to redact all text in the app by drawing a rectangle over it.
///
/// \param maskAllImages Flag to redact all images in the app by drawing a rectangle over it.
///
/// \param enableViewRendererV2 Enables the up to 5x faster view renderer.
///
/// \param enableFastViewRendering Enables faster but incomplete view rendering. See <code>SentryReplayOptions.enableFastViewRendering</code> for more information.
///
- (nonnull instancetype)initWithSessionSampleRate:(float)sessionSampleRate onErrorSampleRate:(float)onErrorSampleRate maskAllText:(BOOL)maskAllText maskAllImages:(BOOL)maskAllImages enableViewRendererV2:(BOOL)enableViewRendererV2 enableFastViewRendering:(BOOL)enableFastViewRendering;
@end

/// Enum to define the quality of the session replay.
typedef SWIFT_ENUM(NSInteger, SentryReplayQuality, open) {
/// Video Scale: 80%
/// Bit Rate: 20.000
  SentryReplayQualityLow = 0,
/// Video Scale: 100%
/// Bit Rate: 40.000
  SentryReplayQualityMedium = 1,
/// Video Scale: 100%
/// Bit Rate: 60.000
  SentryReplayQualityHigh = 2,
};


SWIFT_CLASS("_TtC6Sentry21SentryReplayRecording")
@interface SentryReplayRecording : NSObject
- (nonnull instancetype)initWithSegmentId:(NSInteger)segmentId video:(SentryVideoInfo * _Nonnull)video extraEvents:(NSArray<id <SentryRRWebEvent>> * _Nonnull)extraEvents;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryReplayType, open) {
  SentryReplayTypeSession = 0,
  SentryReplayTypeBuffer = 1,
};



@protocol SentrySpan;
@class SentryReplayApi;
@class SentryTransactionContext;
@class NSException;
@class SentryFeedbackAPI;
@class SentryUser;

/// The main entry point for the Sentry SDK.
/// We recommend using <code>start(configureOptions:)</code> to initialize Sentry.
SWIFT_CLASS("_TtC6Sentry9SentrySDK")
@interface SentrySDK : NSObject
/// The current active transaction or span bound to the scope.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) id <SentrySpan> _Nullable span;)
+ (id <SentrySpan> _Nullable)span SWIFT_WARN_UNUSED_RESULT;
/// Indicates whether the Sentry SDK is enabled.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL isEnabled;)
+ (BOOL)isEnabled SWIFT_WARN_UNUSED_RESULT;
/// API to control session replay
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryReplayApi * _Nonnull replay;)
+ (SentryReplayApi * _Nonnull)replay SWIFT_WARN_UNUSED_RESULT;
/// API to access Sentry logs
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryLogger * _Nonnull logger;)
+ (SentryLogger * _Nonnull)logger SWIFT_WARN_UNUSED_RESULT;
/// Inits and configures Sentry (<code>SentryHub</code>, <code>SentryClient</code>) and sets up all integrations. Make sure to
/// set a valid DSN.
/// note:
/// Call this method on the main thread. When calling it from a background thread, the
/// SDK starts on the main thread async.
+ (void)startWithOptions:(SentryOptions * _Nonnull)options;
/// Inits and configures Sentry (<code>SentryHub</code>, <code>SentryClient</code>) and sets up all integrations. Make sure to
/// set a valid DSN.
/// note:
/// Call this method on the main thread. When calling it from a background thread, the
/// SDK starts on the main thread async.
+ (void)startWithConfigureOptions:(void (^ _Nonnull)(SentryOptions * _Nonnull))configureOptions;
/// Captures a manually created event and sends it to Sentry.
/// \param event The event to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event;
/// Captures a manually created event and sends it to Sentry. Only the data in this scope object will
/// be added to the event. The global scope will be ignored.
/// \param event The event to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event withScope:(SentryScope * _Nonnull)scope;
/// Captures a manually created event and sends it to Sentry. Maintains the global scope but mutates
/// scope data for only this call.
/// \param event The event to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param name The transaction name.
///
/// \param operation Short code identifying the type of operation the span is measuring.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithName:(NSString * _Nonnull)name operation:(NSString * _Nonnull)operation;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param name The transaction name.
///
/// \param operation Short code identifying the type of operation the span is measuring.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithName:(NSString * _Nonnull)name operation:(NSString * _Nonnull)operation bindToScope:(BOOL)bindToScope;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext bindToScope:(BOOL)bindToScope;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
/// \param customSamplingContext Additional information about the sampling context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext bindToScope:(BOOL)bindToScope customSamplingContext:(NSDictionary<NSString *, id> * _Nonnull)customSamplingContext;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param customSamplingContext Additional information about the sampling context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext customSamplingContext:(NSDictionary<NSString *, id> * _Nonnull)customSamplingContext;
/// Captures an error event and sends it to Sentry.
/// \param error The error to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error;
/// Captures an error event and sends it to Sentry. Only the data in this scope object will be added
/// to the event. The global scope will be ignored.
/// \param error The error to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error withScope:(SentryScope * _Nonnull)scope;
/// Captures an error event and sends it to Sentry. Maintains the global scope but mutates scope data
/// for only this call.
/// \param error The error to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures an exception event and sends it to Sentry.
/// \param exception The exception to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception;
/// Captures an exception event and sends it to Sentry. Only the data in this scope object will be
/// added to the event. The global scope will be ignored.
/// \param exception The exception to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception withScope:(SentryScope * _Nonnull)scope;
/// Captures an exception event and sends it to Sentry. Maintains the global scope but mutates scope
/// data for only this call.
/// \param exception The exception to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures a message event and sends it to Sentry.
/// \param message The message to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message;
/// Captures a message event and sends it to Sentry. Only the data in this scope object will be added
/// to the event. The global scope will be ignored.
/// \param message The message to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message withScope:(SentryScope * _Nonnull)scope;
/// Captures a message event and sends it to Sentry. Maintains the global scope but mutates scope
/// data for only this call.
/// \param message The message to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures user feedback that was manually gathered and sends it to Sentry.
/// \param userFeedback The user feedback to send to Sentry.
///
+ (void)captureUserFeedback:(SentryUserFeedback * _Nonnull)userFeedback SWIFT_DEPRECATED_MSG("Use SentrySDK.back or use or configure our new managed UX with SentryOptions.configureUserFeedback.");
/// Captures user feedback that was manually gathered and sends it to Sentry.
/// warning:
/// This is an experimental feature and may still have bugs.
/// note:
/// If you’d prefer not to have to build the UI required to gather the feedback from the user,
/// see <code>SentryOptions.configureUserFeedback</code> to customize a fully managed integration. See
/// https://docs.sentry.io/platforms/apple/user-feedback/ for more information.
/// \param feedback The feedback to send to Sentry.
///
+ (void)captureFeedback:(SentryFeedback * _Nonnull)feedback;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryFeedbackAPI * _Nonnull feedback SWIFT_AVAILABILITY(ios,introduced=13.0);)
+ (SentryFeedbackAPI * _Nonnull)feedback SWIFT_WARN_UNUSED_RESULT;
/// Adds a <code>Breadcrumb</code> to the current <code>Scope</code> of the current <code>Hub</code>. If the total number of breadcrumbs
/// exceeds the <code>SentryOptions.maxBreadcrumbs</code> the SDK removes the oldest breadcrumb.
/// \param crumb The <code>Breadcrumb</code> to add to the current <code>Scope</code> of the current <code>Hub</code>.
///
+ (void)addBreadcrumb:(SentryBreadcrumb * _Nonnull)crumb;
/// Use this method to modify the current <code>Scope</code> of the current <code>Hub</code>. The SDK uses the <code>Scope</code> to attach
/// contextual data to events.
/// \param callback The callback for configuring the current <code>Scope</code> of the current <code>Hub</code>.
///
+ (void)configureScope:(void (^ _Nonnull)(SentryScope * _Nonnull))callback;
/// Checks if the last program execution terminated with a crash.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL crashedLastRun;)
+ (BOOL)crashedLastRun SWIFT_WARN_UNUSED_RESULT;
/// Checks if the SDK detected a start-up crash during SDK initialization.
/// note:
/// The SDK init waits synchronously for up to 5 seconds to flush out events if the app crashes
/// within 2 seconds after the SDK init.
///
/// returns:
/// true if the SDK detected a start-up crash and false if not.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL detectedStartUpCrash;)
+ (BOOL)detectedStartUpCrash SWIFT_WARN_UNUSED_RESULT;
/// Set <code>user</code> to the current <code>Scope</code> of the current <code>Hub</code>.
/// note:
/// You must start the SDK before calling this method, otherwise it doesn’t set the user.
/// \param user The user to set to the current <code>Scope</code>.
///
+ (void)setUser:(SentryUser * _Nullable)user;
/// Starts a new <code>SentrySession</code>. If there’s a running <code>SentrySession</code>, it ends it before starting the
/// new one. You can use this method in combination with <code>endSession</code> to manually track
/// sessions. The SDK uses <code>SentrySession</code> to inform Sentry about release and project
/// associated project health.
+ (void)startSession;
/// Ends the current <code>SentrySession</code>. You can use this method in combination with <code>startSession</code> to
/// manually track <code>SentrySessions</code>. The SDK uses <code>SentrySession</code> to inform Sentry about release and
/// project associated project health.
+ (void)endSession;
/// This forces a crash, useful to test the <code>SentryCrash</code> integration.
/// note:
/// The SDK can’t report a crash when a debugger is attached. Your application needs to run
/// without a debugger attached to capture the crash and send it to Sentry the next time you launch
/// your application.
+ (void)crash;
/// Reports to the ongoing <code>UIViewController</code> transaction
/// that the screen contents are fully loaded and displayed,
/// which will create a new span.
/// seealso:
///
/// https://docs.sentry.io/platforms/cocoa/performance/instrumentation/automatic-instrumentation/#time-to-full-display
+ (void)reportFullyDisplayed;
/// Pauses sending detected app hangs to Sentry.
/// This method doesn’t close the detection of app hangs. Instead, the app hang detection
/// will ignore detected app hangs until you call <code>resumeAppHangTracking</code>.
+ (void)pauseAppHangTracking;
/// Resumes sending detected app hangs to Sentry.
+ (void)resumeAppHangTracking;
/// Waits synchronously for the SDK to flush out all queued and cached items for up to the specified
/// timeout in seconds. If there is no internet connection, the function returns immediately. The SDK
/// doesn’t dispose the client or the hub.
/// note:
/// This might take slightly longer than the specified timeout if there are many batched logs to capture.
/// \param timeout The time to wait for the SDK to complete the flush.
///
+ (void)flush:(NSTimeInterval)timeout;
/// Closes the SDK, uninstalls all the integrations, and calls <code>flush</code> with
/// <code>SentryOptions.shutdownTimeInterval</code>.
+ (void)close;
/// Start a new continuous profiling session if one is not already running.
/// warning:
/// Continuous profiling mode is experimental and may still contain bugs.
/// note:
/// Unlike transaction-based profiling, continuous profiling does not take into account
/// <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code>. If either of those
/// options are set, this method does nothing.
/// note:
/// Taking into account the above note, if <code>SentryOptions.configureProfiling</code> is not set,
/// calls to this method will always start a profile if one is not already running. This includes app
/// launch profiles configured with <code>SentryOptions.enableAppLaunchProfiling</code>.
/// note:
/// If neither <code>SentryOptions.profilesSampleRate</code> nor <code>SentryOptions.profilesSampler</code> are
/// set, and <code>SentryOptions.configureProfiling</code> is set, this method does nothing if the profiling
/// session is not sampled with respect to <code>SentryOptions.profileSessionSampleRate</code>, or if it is
/// sampled but the profiler is already running.
/// note:
/// If neither <code>SentryOptions.profilesSampleRate</code> nor <code>SentryOptions.profilesSampler</code> are
/// set, and <code>SentryOptions.configureProfiling</code> is set, this method does nothing if
/// <code>SentryOptions.profileLifecycle</code> is set to <code>trace</code>. In this scenario, the profiler is
/// automatically started and stopped depending on whether there is an active sampled span, so it is
/// not permitted to manually start profiling.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
/// seealso:
/// https://docs.sentry.io/platforms/apple/guides/ios/profiling/#continuous-profiling
+ (void)startProfiler;
/// Stop a continuous profiling session if there is one ongoing.
/// warning:
/// Continuous profiling mode is experimental and may still contain bugs.
/// note:
/// Does nothing if <code>SentryOptions.profileLifecycle</code> is set to <code>trace</code>.
/// note:
/// Does not immediately stop the profiler. Profiling data is uploaded at regular timed
/// intervals; when the current interval completes, then the profiler stops and the data gathered
/// during that last interval is uploaded.
/// note:
/// If a new call to <code>startProfiler</code> that would start the profiler is made before the last
/// interval completes, the profiler will continue running until another call to stop is made.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
/// seealso:
/// https://docs.sentry.io/platforms/apple/guides/ios/profiling/#continuous-profiling
+ (void)stopProfiler;
/// note:
/// Conceptually internal but needs to be marked public with SPI for ObjC visibility
+ (void)clearLogger;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A note on the thread safety:
/// The methods configure and log don’t use synchronization mechanisms, meaning they aren’t strictly speaking thread-safe.
/// Still, you can use log from multiple threads. The problem is that when you call configure while
/// calling log from multiple threads, you experience a race condition. It can take a bit until all
/// threads know the new config. As the SDK should only call configure once when starting, we do accept
/// this race condition. Adding locks for evaluating the log level for every log invocation isn’t
/// acceptable, as this adds a significant overhead for every log call. Therefore, we exclude SentryLog
/// from the ThreadSanitizer as it produces false positives. The tests call configure multiple times,
/// and the thread sanitizer would surface these race conditions. We accept these race conditions for
/// the log messages in the tests over adding locking for all log messages.
SWIFT_CLASS("_TtC6Sentry12SentrySDKLog")
@interface SentrySDKLog : NSObject
+ (void)logWithMessage:(NSString * _Nonnull)message andLevel:(enum SentryLevel)level;
/// @return @c YES if the current logging configuration will log statements at the current level,
/// @c NO if not.
+ (BOOL)willLogAtLevel:(enum SentryLevel)level SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry19SentrySDKLogSupport")
@interface SentrySDKLogSupport : NSObject
+ (void)configure:(BOOL)isDebug diagnosticLevel:(enum SentryLevel)diagnosticLevel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Describes the settings for the Sentry SDK
/// @see https://develop.sentry.dev/sdk/event-payloads/sdk/
SWIFT_CLASS("_TtC6Sentry17SentrySDKSettings")
@interface SentrySDKSettings : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithOptions:(SentryOptions * _Nullable)options OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDict:(NSDictionary * _Nonnull)dict OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic) BOOL autoInferIP;
- (NSDictionary * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry34SentrySRDefaultBreadcrumbConverter")
@interface SentrySRDefaultBreadcrumbConverter : NSObject <SentryReplayBreadcrumbConverter>
/// This function will convert the SDK breadcrumbs to session replay breadcrumbs in a format that the front-end understands.
/// Any deviation in the information will cause the breadcrumb or the information itself to be discarded
/// in order to avoid unknown behavior in the front-end.
- (id <SentryRRWebEvent> _Nullable)convertFrom:(SentryBreadcrumb * _Nonnull)breadcrumb SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry26SentryScopePersistentStore")
@interface SentryScopePersistentStore : NSObject
- (nullable instancetype)initWithFileManager:(id <SentryFileManagerProtocol> _Nullable)fileManager OBJC_DESIGNATED_INITIALIZER;
- (void)moveAllCurrentStateToPreviousState;
- (NSDictionary<NSString *, NSDictionary<NSString *, id> *> * _Nullable)readPreviousContextFromDisk SWIFT_WARN_UNUSED_RESULT;
- (SentryUser * _Nullable)readPreviousUserFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)readPreviousDistFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)readPreviousEnvironmentFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, NSString *> * _Nullable)readPreviousTagsFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)readPreviousExtrasFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSString *> * _Nullable)readPreviousFingerprintFromDisk SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end








@class SentryViewPhotographer;

SWIFT_CLASS("_TtC6Sentry22SentryScreenshotSource")
@interface SentryScreenshotSource : NSObject
- (nonnull instancetype)init;
- (nonnull instancetype)initWithPhotographer:(SentryViewPhotographer * _Nonnull)photographer OBJC_DESIGNATED_INITIALIZER;
/// Get a screenshot of every open window in the app.
///
/// returns:
/// An array of UIImage instances.
- (NSArray<UIImage *> * _Nonnull)appScreenshotsFromMainThread SWIFT_WARN_UNUSED_RESULT;
/// Get a screenshot of every open window in the app.
///
/// returns:
/// An array of Data instances containing PNG images.
- (NSArray<NSData *> * _Nonnull)appScreenshotDatasFromMainThread SWIFT_WARN_UNUSED_RESULT;
/// Save the current app screen shots in the given directory.
/// If an app has more than one screen, one image for each screen will be saved.
/// \param imagesDirectoryPath The path where the images should be saved.
///
- (void)saveScreenShots:(NSString * _Nonnull)imagesDirectoryPath;
- (NSArray<UIImage *> * _Nonnull)appScreenshots SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSData *> * _Nonnull)appScreenshotsData SWIFT_WARN_UNUSED_RESULT;
@end


/// Describes the Sentry SDK and its configuration used to capture and transmit an event.
/// @note Both name and version are required.
/// @see https://develop.sentry.dev/sdk/event-payloads/sdk/
SWIFT_CLASS("_TtC6Sentry13SentrySdkInfo")
@interface SentrySdkInfo : NSObject <SentrySerializable>
+ (nonnull instancetype)global SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// The name of the SDK. Examples: sentry.cocoa, sentry.cocoa.vapor, …
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The version of the SDK. It should have the Semantic Versioning format MAJOR.MINOR.PATCH, without
/// any prefix (no v or anything else in front of the major version number). Examples:
/// 0.1.0, 1.0.0, 2.0.0-beta0
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// A list of names identifying enabled integrations. The list should
/// have all enabled integrations, including default integrations. Default
/// integrations are included because different SDK releases may contain different
/// default integrations.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull integrations;
/// A list of feature names identifying enabled SDK features. This list
/// should contain all enabled SDK features. On some SDKs, enabling a feature in the
/// options also adds an integration. We encourage tracking such features with either
/// integrations or features but not both to reduce the payload size.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull features;
/// A list of packages that were installed as part of this SDK or the
/// activated integrations. Each package consists of a name in the format
/// source:identifier and version.
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, NSString *> *> * _Nonnull packages;
/// A set of settings as part of this SDK.
@property (nonatomic, readonly, strong) SentrySDKSettings * _Nonnull settings;
- (nonnull instancetype)initWithOptions:(SentryOptions * _Nullable)options SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithName:(NSString * _Nullable)name version:(NSString * _Nullable)version integrations:(NSArray<NSString *> * _Nullable)integrations features:(NSArray<NSString *> * _Nullable)features packages:(NSArray<NSDictionary<NSString *, NSString *> *> * _Nullable)packages settings:(SentrySDKSettings * _Nonnull)settings OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDict:(NSDictionary * _Nonnull)dict;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry16SentrySdkPackage")
@interface SentrySdkPackage : NSObject
+ (NSDictionary<NSString *, NSString *> * _Nullable)global SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry24SentrySerializationSwift")
@interface SentrySerializationSwift : NSObject
+ (SentrySession * _Nullable)sessionWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
+ (SentryAppState * _Nullable)appStateWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithJSONObject:(id _Nonnull)jsonObject SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithEnvelope:(SentryEnvelope * _Nonnull)envelope SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithSession:(SentrySession * _Nonnull)session SWIFT_WARN_UNUSED_RESULT;
+ (SentryEnvelope * _Nullable)envelopeWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum SentrySessionStatus : NSUInteger;

/// The SDK uses SentrySession to inform Sentry about release and project associated project health.
SWIFT_CLASS("_TtC6Sentry13SentrySession")
@interface SentrySession : NSObject <NSCopying>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Designated initializer.
- (nonnull instancetype)initWithReleaseName:(NSString * _Nonnull)releaseName distinctId:(NSString * _Nonnull)distinctId OBJC_DESIGNATED_INITIALIZER;
/// Initializes @c SentrySession from a JSON object.
/// @param jsonObject The @c jsonObject containing the session.
/// @return The @c SentrySession or @c nil if @c jsonObject contains an error.
- (nullable instancetype)initWithJSONObject:(NSDictionary<NSString *, id> * _Nonnull)jsonObject OBJC_DESIGNATED_INITIALIZER;
- (void)endSessionExitedWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)endSessionCrashedWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)endSessionAbnormalWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)incrementErrors;
@property (nonatomic, readonly, copy) NSUUID * _Nonnull sessionId;
@property (nonatomic, readonly, copy) NSDate * _Nonnull started;
@property (nonatomic, readonly) enum SentrySessionStatus status;
@property (nonatomic) NSUInteger errors;
@property (nonatomic, readonly) NSUInteger sequence;
@property (nonatomic, readonly, copy) NSString * _Nonnull distinctId;
@property (nonatomic, readonly, strong) NSNumber * _Nullable flagInit;
@property (nonatomic, readonly, copy) NSDate * _Nullable timestamp;
@property (nonatomic, readonly, strong) NSNumber * _Nullable duration;
@property (nonatomic, readonly, copy) NSString * _Nullable releaseName;
@property (nonatomic, copy) NSString * _Nullable environment;
@property (nonatomic, strong) SentryUser * _Nullable user;
@property (nonatomic, copy) NSString * _Nullable abnormalMechanism;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (void)setFlagInit;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@protocol SentryViewScreenshotProvider;
@class SentryTouchTracker;
@protocol SentrySessionReplayDelegate;
@protocol SentrySessionReplayEnvironmentCheckerProvider;

SWIFT_CLASS("_TtC6Sentry19SentrySessionReplay")
@interface SentrySessionReplay : NSObject
@property (nonatomic, readonly) BOOL isFullSession;
@property (nonatomic, readonly, strong) SentryId * _Nullable sessionReplayId;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable replayTags;
@property (nonatomic, strong) id <SentryViewScreenshotProvider> _Nonnull screenshotProvider;
@property (nonatomic, strong) id <SentryReplayBreadcrumbConverter> _Nonnull breadcrumbConverter;
- (nonnull instancetype)initWithReplayOptions:(SentryReplayOptions * _Nonnull)replayOptions experimentalOptions:(SentryExperimentalOptions * _Nonnull)experimentalOptions replayFolderPath:(NSURL * _Nonnull)replayFolderPath screenshotProvider:(id <SentryViewScreenshotProvider> _Nonnull)screenshotProvider replayMaker:(id <SentryReplayVideoMaker> _Nonnull)replayMaker breadcrumbConverter:(id <SentryReplayBreadcrumbConverter> _Nonnull)breadcrumbConverter touchTracker:(SentryTouchTracker * _Nullable)touchTracker dateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider delegate:(id <SentrySessionReplayDelegate> _Nonnull)delegate displayLinkWrapper:(id <SentryReplayDisplayLinkWrapper> _Nonnull)displayLinkWrapper environmentChecker:(id <SentrySessionReplayEnvironmentCheckerProvider> _Nonnull)environmentChecker OBJC_DESIGNATED_INITIALIZER;
- (void)startWithRootView:(UIView * _Nonnull)rootView fullSession:(BOOL)fullSession;
- (void)pauseSessionMode;
- (void)pause;
- (void)resume;
- (void)captureReplayForEvent:(SentryEvent * _Nonnull)event;
- (BOOL)captureReplay;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP6Sentry27SentrySessionReplayDelegate_")
@protocol SentrySessionReplayDelegate <NSObject>
- (BOOL)sessionReplayShouldCaptureReplayForError SWIFT_WARN_UNUSED_RESULT;
- (void)sessionReplayNewSegmentWithReplayEvent:(SentryReplayEvent * _Nonnull)replayEvent replayRecording:(SentryReplayRecording * _Nonnull)replayRecording videoUrl:(NSURL * _Nonnull)videoUrl;
- (void)sessionReplayStartedWithReplayId:(SentryId * _Nonnull)replayId;
- (NSArray<SentryBreadcrumb *> * _Nonnull)breadcrumbsForSessionReplay SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)currentScreenNameForSessionReplay SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL("_TtP6Sentry45SentrySessionReplayEnvironmentCheckerProvider_")
@protocol SentrySessionReplayEnvironmentCheckerProvider
/// Checks if the runtime environment is considered unreliable with regards to Session Replay masking.
///
/// returns:
/// <code>true</code> if reliable, otherwise <code>false</code>
- (BOOL)isReliable SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry37SentrySessionReplayEnvironmentChecker")
@interface SentrySessionReplayEnvironmentChecker : NSObject <SentrySessionReplayEnvironmentCheckerProvider>
- (nonnull instancetype)initWithInfoPlistWrapper:(id <SentryInfoPlistWrapperProvider> _Nonnull)infoPlistWrapper OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isReliable SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


typedef SWIFT_ENUM(NSUInteger, SentrySessionStatus, open) {
  SentrySessionStatusOk = 0,
  SentrySessionStatusExited = 1,
  SentrySessionStatusCrashed = 2,
  SentrySessionStatusAbnormal = 3,
};



SWIFT_CLASS("_TtC6Sentry29SentrySwizzleClassNameExclude")
@interface SentrySwizzleClassNameExclude : NSObject
+ (BOOL)shouldExcludeClassWithClassName:(NSString * _Nonnull)className swizzleClassNameExcludes:(NSSet<NSString *> * _Nonnull)swizzleClassNameExcludes SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A wrapper around sysctl for testability.
SWIFT_CLASS("_TtC6Sentry12SentrySysctl")
@interface SentrySysctl : NSObject
/// Returns the time the system was booted with a precision of microseconds.
/// @warning We must not send this information off device because Apple forbids that.
/// We are allowed send the amount of time that has elapsed between events that occurred within the
/// app though. For more information see
/// https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278394.
@property (nonatomic, readonly, copy) NSDate * _Nonnull systemBootTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull processStartTimestamp;
/// The system time that the process started, as measured in @c SentrySysctl.load, essentially the
/// earliest time we can record a system timestamp, which is the number of nanoseconds since the
/// device booted, which is why we can’t simply convert @c processStartTimestamp to the nanosecond
/// representation of its @c timeIntervalSinceReferenceDate .
@property (nonatomic, readonly) uint64_t runtimeInitSystemTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull runtimeInitTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull moduleInitializationTimestamp;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry19SentryThreadWrapper")
@interface SentryThreadWrapper : NSObject
- (void)sleepForTimeInterval:(NSTimeInterval)timeInterval;
- (void)threadStarted:(NSUUID * _Nonnull)threadID;
- (void)threadFinished:(NSUUID * _Nonnull)threadID;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry27SentryThreadsafeApplication")
@interface SentryThreadsafeApplication : NSObject
- (nonnull instancetype)initWithApplicationProvider:(SWIFT_NOESCAPE id <SentryApplication> _Nullable (^ _Nonnull)(void))applicationProvider notificationCenter:(id <SentryNSNotificationCenterWrapper> _Nonnull)notificationCenter OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly) UIApplicationState applicationState;
@property (nonatomic, readonly) BOOL isActive;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIEvent;

SWIFT_CLASS("_TtC6Sentry18SentryTouchTracker")
@interface SentryTouchTracker : NSObject
- (nonnull instancetype)initWithDateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider scale:(float)scale dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider scale:(float)scale;
- (void)trackTouchFromEvent:(UIEvent * _Nonnull)event;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryTransactionNameSource, open) {
  kSentryTransactionNameSourceCustom SWIFT_COMPILE_NAME("custom") = 0,
  kSentryTransactionNameSourceUrl SWIFT_COMPILE_NAME("url") = 1,
  kSentryTransactionNameSourceRoute SWIFT_COMPILE_NAME("route") = 2,
  kSentryTransactionNameSourceView SWIFT_COMPILE_NAME("view") = 3,
  kSentryTransactionNameSourceComponent SWIFT_COMPILE_NAME("component") = 4,
  kSentryTransactionNameSourceTask SWIFT_COMPILE_NAME("sourceTask") = 5,
};



/// Use this protocol to customize the name used in the automatic
/// UIViewController performance tracker, view hierarchy, and breadcrumbs.
SWIFT_PROTOCOL("_TtP6Sentry32SentryUIViewControllerDescriptor_")
@protocol SentryUIViewControllerDescriptor <NSObject>
/// The custom name of the UIViewController
/// that the Sentry SDK uses for transaction names, breadcrumbs, and
/// view hierarchy.
@property (nonatomic, readonly, copy) NSString * _Nonnull sentryName;
@end

@class SentryDsn;
@class NSURLRequest;

SWIFT_CLASS("_TtC6Sentry23SentryURLRequestFactory")
@interface SentryURLRequestFactory : NSObject
+ (NSURLRequest * _Nullable)envelopeRequestWith:(SentryDsn * _Nonnull)dsn data:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
+ (NSURLRequest * _Nullable)envelopeRequestWith:(NSURL * _Nonnull)url data:(NSData * _Nonnull)data authHeader:(NSString * _Nullable)authHeader error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryUserFeedbackWidgetConfiguration;
@class UIButton;
@class SentryUserFeedbackFormConfiguration;
@class SentryUserFeedbackThemeConfiguration;

/// The settings to use for how the user feedback form is presented, what data is required and how
/// it’s submitted, and some auxiliary hooks to customize the workflow.
SWIFT_CLASS("_TtC6Sentry31SentryUserFeedbackConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackConfiguration : NSObject
/// Whether or not to show animations, like for presenting and dismissing the form.
/// note:
/// Default: <code>true</code>.
@property (nonatomic) BOOL animations;
/// Configuration settings specific to the managed widget that displays the UI form.
/// note:
/// Default: <code>nil</code> to use the default widget settings.
@property (nonatomic, copy) void (^ _Nullable configureWidget)(SentryUserFeedbackWidgetConfiguration * _Nonnull);
/// Use a shake gesture to display the form.
/// note:
/// Default: <code>false</code>
/// note:
/// Setting this to true does not disable the widget. In order to do so, you must set <code>SentryUserFeedbackWidgetConfiguration.autoInject</code> to <code>false</code> using the <code>SentryUserFeedbackConfiguration.configureWidget</code> config builder.
@property (nonatomic) BOOL useShakeGesture;
/// Any time a user takes a screenshot, bring up the form with the screenshot attached.
/// note:
/// Default: <code>false</code>
/// note:
/// Setting this to true does not disable the widget. In order to do so, you must set <code>SentryUserFeedbackWidgetConfiguration.autoInject</code> to <code>false</code> using the <code>SentryUserFeedbackConfiguration.configureWidget</code> config builder.
@property (nonatomic) BOOL showFormForScreenshots;
/// Install a hook for the specified button to show the form when it is pressed.
/// note:
/// If this is set, <code>configureWidget</code> is ignored.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, strong) UIButton * _Nullable customButton;
/// Configuration settings specific to the managed UI form to gather user input.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable configureForm)(SentryUserFeedbackFormConfiguration * _Nonnull);
/// Tags to set on the feedback event. This is a dictionary where keys are strings
/// and values can be different data types such as <code>NSNumber</code>, <code>NSString</code>, etc.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable tags;
/// Called when the managed feedback form is opened.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable onFormOpen)(void);
/// Called when the managed feedback form is closed.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable onFormClose)(void);
/// Called when feedback is successfully submitted via the managed feedback form, indicating that the
/// user correctly filled out the form and confirmed submission. The data dictionary contains the feedback details.
/// note:
/// Default: <code>nil</code>
/// note:
/// This is unrelated to <code>SentrySDK.captureUserFeedback</code> and is not called when using
/// that function.
@property (nonatomic, copy) void (^ _Nullable onSubmitSuccess)(NSDictionary<NSString *, id> * _Nonnull);
/// Called when there is an error submitting feedback via the managed feedback form, like missing
/// required inputs. The error object contains details of the error.
/// note:
/// Default: <code>nil</code>
/// note:
/// This is unrelated to <code>SentrySDK.captureUserFeedback</code> and is not called when using
/// that function.
@property (nonatomic, copy) void (^ _Nullable onSubmitError)(NSError * _Nonnull);
/// Builder for default/light theme overrides.
/// note:
/// On iOS versions predating dark mode (≤12) this is the only theme override used. Apps
/// running on later versions that include dark mode should also consider <code>configureDarkTheme</code>.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable configureTheme)(SentryUserFeedbackThemeConfiguration * _Nonnull);
/// Builder for dark mode theme overrides. If your app does not deploy a different theme for dark
/// mode, but you still want to override some theme settings, assign the same builder to this
/// property as you do for <code>configureTheme</code>.
/// note:
/// Default: <code>nil</code>
/// note:
/// Only applies to iOS ≤12.
@property (nonatomic, copy) void (^ _Nullable configureDarkTheme)(SentryUserFeedbackThemeConfiguration * _Nonnull);
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Settings to control the behavior and appearance of the UI form.
SWIFT_CLASS("_TtC6Sentry35SentryUserFeedbackFormConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackFormConfiguration : NSObject
/// Sets the email and name field text content to the values contained in the current scope’s
/// <code>SentryUser</code> instance, if any.
/// seealso:
/// <code>- [SentrySDK setUser:]</code>
/// note:
/// Default: <code>true</code>
@property (nonatomic) BOOL useSentryUser;
/// Displays the Sentry logo inside of the form.
/// note:
/// Default: <code>true</code>
@property (nonatomic) BOOL showBranding;
/// The title at the top of the feedback form.
/// note:
/// Default: <code>"Report a Bug"</code>
@property (nonatomic, copy) NSString * _Nonnull formTitle;
/// The label for the feedback description input field.
/// note:
/// Default: <code>"Description"</code>
@property (nonatomic, copy) NSString * _Nonnull messageLabel;
/// The placeholder for the feedback description input field.
/// note:
/// Default: <code>"What's the bug? What did you expect?"</code>
@property (nonatomic, copy) NSString * _Nonnull messagePlaceholder;
@property (nonatomic, copy) NSString * _Nonnull messageTextViewAccessibilityLabel;
/// The label shown next to an input field that is required.
/// note:
/// Default: <code>"(Required)"</code>
@property (nonatomic, copy) NSString * _Nonnull isRequiredLabel;
/// The label of the button to remove the screenshot from the form.
/// note:
/// Default: <code>"Remove screenshot"</code>
/// note:
/// ignored if <code>SentryUserFeedbackConfiguration.showFormForScreenshots</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull removeScreenshotButtonLabel;
@property (nonatomic, copy) NSString * _Nonnull removeScreenshotButtonAccessibilityLabel;
/// Requires the name field on the feedback form to be filled in.
/// note:
/// Default: <code>false</code>
@property (nonatomic) BOOL isNameRequired;
/// Displays the name field on the feedback form.
/// note:
/// Default: <code>true</code>
/// note:
/// ignored if <code>isNameRequired</code> is <code>true</code>.
@property (nonatomic) BOOL showName;
/// The label of the name input field.
/// note:
/// Default: <code>"Name"</code>
/// note:
/// ignored if <code>showName</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull nameLabel;
/// The placeholder for the name input field.
/// note:
/// Default: <code>"Your Name"</code>
/// note:
/// ignored if <code>showName</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull namePlaceholder;
@property (nonatomic, copy) NSString * _Nonnull nameTextFieldAccessibilityLabel;
/// Requires the email field on the feedback form to be filled in.
/// note:
/// Default: <code>false</code>
@property (nonatomic) BOOL isEmailRequired;
/// Displays the email field on the feedback form.
/// note:
/// Default: <code>true</code>
/// note:
/// ignored if <code>isEmailRequired</code> is <code>true</code>.
@property (nonatomic) BOOL showEmail;
/// The label of the email input field.
/// note:
/// Default: <code>"Email"</code>
@property (nonatomic, copy) NSString * _Nonnull emailLabel;
/// The placeholder for the email input field.
/// note:
/// Default: <code>"your.email@example.org"</code>
@property (nonatomic, copy) NSString * _Nonnull emailPlaceholder;
@property (nonatomic, copy) NSString * _Nonnull emailTextFieldAccessibilityLabel;
/// The label of the submit button used in the feedback form.
/// note:
/// Default: <code>"Send Bug Report"</code>
@property (nonatomic, copy) NSString * _Nonnull submitButtonLabel;
/// The accessibility label of the form’s “Submit” button.
/// note:
/// Default: <code>submitButtonLabel</code> value
@property (nonatomic, copy) NSString * _Nonnull submitButtonAccessibilityLabel;
/// The label of cancel buttons used in the feedback form.
/// note:
/// Default: <code>"Cancel"</code>
@property (nonatomic, copy) NSString * _Nonnull cancelButtonLabel;
/// The accessibility label of the form’s “Cancel” button.
/// note:
/// Default: <code>cancelButtonLabel</code> value
@property (nonatomic, copy) NSString * _Nonnull cancelButtonAccessibilityLabel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry31SentryUserFeedbackFormViewModel") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackFormViewModel : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@protocol SentryUserFeedbackIntegrationDriverDelegate;

/// An integration managing a workflow for end users to report feedback via Sentry.
/// note:
/// The default method to show the feedback form is via a floating widget placed in the bottom trailing corner of the screen. See the configuration classes for alternative options.
SWIFT_CLASS("_TtC6Sentry35SentryUserFeedbackIntegrationDriver") SWIFT_AVAILABILITY(ios_app_extension,unavailable) SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackIntegrationDriver : NSObject
- (nonnull instancetype)initWithConfiguration:(SentryUserFeedbackConfiguration * _Nonnull)configuration delegate:(id <SentryUserFeedbackIntegrationDriverDelegate> _Nonnull)delegate screenshotSource:(SentryScreenshotSource * _Nonnull)screenshotSource OBJC_DESIGNATED_INITIALIZER;
- (void)showWidget;
- (void)hideWidget;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@class UIPresentationController;

SWIFT_AVAILABILITY(ios_app_extension,unavailable) SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackIntegrationDriver (SWIFT_EXTENSION(Sentry)) <UIAdaptivePresentationControllerDelegate>
- (void)presentationControllerDidDismiss:(UIPresentationController * _Nonnull)presentationController;
@end



SWIFT_PROTOCOL("_TtP6Sentry43SentryUserFeedbackIntegrationDriverDelegate_") SWIFT_AVAILABILITY(ios,introduced=13.0)
@protocol SentryUserFeedbackIntegrationDriverDelegate <NSObject>
- (void)captureWithFeedback:(SentryFeedback * _Nonnull)feedback;
@end

@class UIColor;
@class SentryFormElementOutlineStyle;

/// Settings for overriding theming components for the User Feedback Widget and Form.
SWIFT_CLASS("_TtC6Sentry36SentryUserFeedbackThemeConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackThemeConfiguration : NSObject
/// The font family to use for form text elements.
/// note:
/// Defaults to the system default, if this property is <code>nil</code>.
@property (nonatomic, copy) NSString * _Nullable fontFamily;
/// Foreground text color of the widget and form.
/// note:
/// Default light mode: <code>rgb(43, 34, 51)</code>; dark mode: <code>rgb(235, 230, 239)</code>
@property (nonatomic, strong) UIColor * _Nonnull foreground;
/// Background color of the widget and form.
/// note:
/// Default light mode: <code>rgb(255, 255, 255)</code>; dark mode: <code>rgb(41, 35, 47)</code>
@property (nonatomic, strong) UIColor * _Nonnull background;
/// Foreground color for the form submit button.
/// note:
/// Default: <code>rgb(255, 255, 255)</code> for both dark and light modes
@property (nonatomic, strong) UIColor * _Nonnull submitForeground;
/// Background color for the form submit button in light and dark modes.
/// note:
/// Default: <code>rgb(88, 74, 192)</code> for both light and dark modes
@property (nonatomic, strong) UIColor * _Nonnull submitBackground;
/// Foreground color for the cancel and screenshot buttons.
/// note:
/// Default: Same as <code>foreground</code> for both dark and light modes
@property (nonatomic, strong) UIColor * _Nonnull buttonForeground;
/// Background color for the form cancel and screenshot buttons in light and dark modes.
/// note:
/// Default: Transparent for both light and dark modes
@property (nonatomic, strong) UIColor * _Nonnull buttonBackground;
/// Color used for error-related components (such as text color when there’s an error submitting feedback).
/// note:
/// Default light mode: <code>rgb(223, 51, 56)</code>; dark mode: <code>rgb(245, 84, 89)</code>
@property (nonatomic, strong) UIColor * _Nonnull errorColor;
/// Options for styling the outline of input elements and buttons in the feedback form.
@property (nonatomic, strong) SentryFormElementOutlineStyle * _Nonnull outlineStyle;
/// Background color to use for text inputs in the feedback form.
@property (nonatomic, strong) UIColor * _Nonnull inputBackground;
/// Background color to use for text inputs in the feedback form.
@property (nonatomic, strong) UIColor * _Nonnull inputForeground;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtCC6Sentry36SentryUserFeedbackThemeConfiguration29SentryFormElementOutlineStyle")
@interface SentryFormElementOutlineStyle : NSObject
- (nonnull instancetype)initWithColor:(UIColor * _Nonnull)color cornerRadius:(CGFloat)cornerRadius outlineWidth:(CGFloat)outlineWidth OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Settings for whether to show the widget and how it should appear.
SWIFT_CLASS("_TtC6Sentry37SentryUserFeedbackWidgetConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackWidgetConfiguration : NSObject
/// Automatically inject the widget button into the application UI.
/// note:
/// Default: <code>true</code>
/// warning:
/// Does not currently work for SwiftUI apps. See https://docs.sentry.io/platforms/apple/user-feedback/#swiftui
@property (nonatomic) BOOL autoInject;
/// The label of the injected button that opens up the feedback form when clicked. If <code>nil</code>, no
/// text is displayed and only the icon image is shown.
/// note:
/// Default: <code>"Report a Bug"</code>
@property (nonatomic, copy) NSString * _Nullable labelText;
/// Whether or not to show our icon along with the text in the button.
/// note:
/// Default: <code>true</code>.
@property (nonatomic) BOOL showIcon;
/// The accessibility label of the injected button that opens up the feedback form when clicked.
/// note:
/// Default: <code>labelText</code> value
@property (nonatomic, copy) NSString * _Nullable widgetAccessibilityLabel;
/// The window level of the widget.
/// note:
/// Default: <code>UIWindow.Level.normal + 1</code>
@property (nonatomic) UIWindowLevel windowLevel;
/// The location for positioning the widget.
/// note:
/// Default: <code>[.bottom, .right]</code>
@property (nonatomic) NSDirectionalRectEdge location;
/// The distance to use from the widget button to the <code>safeAreaLayoutGuide</code> of the root view in the widget’s container window.
/// note:
/// Default: <code>UIOffset.zero</code>
@property (nonatomic) UIOffset layoutUIOffset;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry15SentryVideoInfo")
@interface SentryVideoInfo : NSObject
@property (nonatomic, readonly, copy) NSURL * _Nonnull path;
@property (nonatomic, readonly, copy) NSDate * _Nonnull start;
@property (nonatomic, readonly, copy) NSDate * _Nonnull end;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry27SentryViewHierarchyProvider")
@interface SentryViewHierarchyProvider : NSObject
- (nonnull instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper applicationProvider:(id <SentryApplication> _Nullable (^ _Nonnull)(void))applicationProvider OBJC_DESIGNATED_INITIALIZER;
/// Whether we should add <code>accessibilityIdentifier</code> to the view hierarchy.
@property (nonatomic) BOOL reportAccessibilityIdentifier;
/// Get the view hierarchy in a json format.
/// Always runs in the main thread.
- (NSData * _Nullable)appViewHierarchyFromMainThread SWIFT_WARN_UNUSED_RESULT;
- (NSData * _Nullable)appViewHierarchy SWIFT_WARN_UNUSED_RESULT;
- (BOOL)saveViewHierarchy:(NSString * _Nonnull)filePath;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP6Sentry28SentryViewScreenshotProvider_")
@protocol SentryViewScreenshotProvider <NSObject>
- (void)imageWithView:(UIView * _Nonnull)view onComplete:(void (^ _Nonnull)(UIImage * _Nonnull))onComplete;
@end


SWIFT_CLASS("_TtC6Sentry22SentryViewPhotographer")
@interface SentryViewPhotographer : NSObject <SentryViewScreenshotProvider>
/// Creates a view photographer used to convert a view hierarchy to an image.
/// note:
/// The option <code>enableMaskRendererV2</code> is an internal flag, which is not part of the public API.
/// Therefore, it is not part of the the <code>redactOptions</code> parameter, to not further expose it.
/// \param renderer Implementation of the view renderer.
///
/// \param redactOptions Options provided to redact sensitive information.
///
/// \param enableMaskRendererV2 Flag to enable experimental view renderer.
///
- (nonnull instancetype)initWithRenderer:(id <SentryViewRenderer> _Nonnull)renderer redactOptions:(id <SentryRedactOptions> _Nonnull)redactOptions enableMaskRendererV2:(BOOL)enableMaskRendererV2 OBJC_DESIGNATED_INITIALIZER;
- (void)imageWithView:(UIView * _Nonnull)view onComplete:(void (^ _Nonnull)(UIImage * _Nonnull))onComplete;
- (UIImage * _Nonnull)imageWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (void)addIgnoreClasses:(NSArray<Class> * _Nonnull)classes;
- (void)addRedactClasses:(NSArray<Class> * _Nonnull)classes;
- (void)setIgnoreContainerClass:(Class _Nonnull)containerClass;
- (void)setRedactContainerClass:(Class _Nonnull)containerClass;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_CLASS("_TtC6Sentry20SentryViewRendererV2")
@interface SentryViewRendererV2 : NSObject <SentryViewRenderer>
- (nonnull instancetype)initWithEnableFastViewRendering:(BOOL)enableFastViewRendering OBJC_DESIGNATED_INITIALIZER;
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry27SentryViewScreenshotOptions")
@interface SentryViewScreenshotOptions : NSObject <SentryRedactOptions>
/// Enables the up to 5x faster new view renderer.
/// Enabling this flag will reduce the amount of time it takes to render the screenshot on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// <em>up to 4-5x faster rendering</em> (reducing <code>~160ms</code> to <code>~36ms</code>) on older devices.
/// experiment:
/// In case you are noticing issues with the new view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>.
/// Eventually, we will remove this feature flag and use the new view renderer by default.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL enableViewRendererV2;
/// Enables up to 5x faster but incomplete view rendering.
/// Enabling this flag will reduce the amount of time it takes to render the screenshot, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// up to <em>5x faster render times</em> (reducing <code>~160ms</code> to <code>~30ms</code>) on older devices.
/// This flag controls the way the view hierarchy is drawn into a graphics context. By default, the view hierarchy is drawn using
/// the <code>UIView.drawHierarchy(in:afterScreenUpdates:)</code> method, which is the most complete way to render the view hierarchy. However,
/// this method can be slow, especially when rendering complex views, therefore enabling this flag will switch to render the underlying <code>CALayer</code> instead.
/// note:
/// This flag can only be used together with <code>enableViewRendererV2</code> with up to 20% faster render times.
/// warning:
/// Rendering the view hiearchy using the <code>CALayer.render(in:)</code> method can lead to rendering issues, especially when using custom views.
/// For complete rendering, it is recommended to set this option to <code>false</code>. In case you prefer performance over completeness, you can
/// set this option to <code>true</code>.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. In case you are noticing issues with the experimental
/// view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>. Eventually, we will
/// mark this feature as stable and remove the experimental flag, but will keep it disabled by default.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL enableFastViewRendering;
/// Indicates whether the screenshot should redact all non-bundled image
/// in the app by drawing a black rectangle over it.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL maskAllImages;
/// Indicates whether the screenshot should redact all text in the app
/// by drawing a black rectangle over it.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL maskAllText;
/// A list of custom UIView subclasses that need
/// to be masked during the screenshot.
/// By default Sentry already mask text and image elements from UIKit
/// Every child of a view that is redacted will also be redacted.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
/// A list of custom UIView subclasses to be ignored
/// during masking step of the screenshot.
/// The views of given classes will not be redacted but their children may be.
/// This property has precedence over <code>redactViewTypes</code>.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
/// Initialize screenshot options disabled
/// note:
/// This initializer is added for Objective-C compatibility, as constructors with default values
/// are not supported in Objective-C.
/// note:
/// See <code>SentryViewScreenshotOptions.DefaultValues</code> for the default values of each parameter.
- (nonnull instancetype)init;
/// Initializes a new instance of <code>SentryViewScreenshotOptions</code> with the specified parameters.
/// note:
/// See <code>SentryViewScreenshotOptions.DefaultValues</code> for the default values of each parameter.
/// \param enableViewRendererV2 Enables the up to 5x faster view renderer.
///
/// \param enableFastViewRendering Enables faster but incomplete view rendering. See <code>SentryViewScreenshotOptions.enableFastViewRendering</code> for more information.
///
/// \param maskAllText Flag to redact all text in the app by drawing a rectangle over it.
///
/// \param maskAllImages Flag to redact all images in the app by drawing a rectangle over it.
///
/// \param maskedViewClasses A list of custom UIView subclasses that need to be masked during the screenshot.
///
/// \param unmaskedViewClasses A list of custom UIView subclasses to be ignored during masking step of the screenshot.
///
- (nonnull instancetype)initWithEnableViewRendererV2:(BOOL)enableViewRendererV2 enableFastViewRendering:(BOOL)enableFastViewRendering maskAllText:(BOOL)maskAllText maskAllImages:(BOOL)maskAllImages maskedViewClasses:(NSArray<Class> * _Nonnull)maskedViewClasses unmaskedViewClasses:(NSArray<Class> * _Nonnull)unmaskedViewClasses OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end



SWIFT_CLASS("_TtC6Sentry44SentryWatchdogTerminationAttributesProcessor")
@interface SentryWatchdogTerminationAttributesProcessor : NSObject
- (nonnull instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper scopePersistentStore:(SentryScopePersistentStore * _Nonnull)scopePersistentStore OBJC_DESIGNATED_INITIALIZER;
- (void)clear;
- (void)setContext:(NSDictionary<NSString *, NSDictionary<NSString *, id> *> * _Nullable)context;
- (void)setUser:(SentryUser * _Nullable)user;
- (void)setDist:(NSString * _Nullable)dist;
- (void)setEnvironment:(NSString * _Nullable)environment;
- (void)setTags:(NSDictionary<NSString *, NSString *> * _Nullable)tags;
- (void)setExtras:(NSDictionary<NSString *, id> * _Nullable)extras;
- (void)setFingerprint:(NSArray<NSString *> * _Nullable)fingerprint;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIViewController;

SWIFT_CLASS("_TtC6Sentry15SwiftDescriptor")
@interface SwiftDescriptor : NSObject
+ (NSString * _Nonnull)getObjectClassName:(id _Nonnull)object SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nonnull)getViewControllerClassName:(UIViewController * _Nonnull)object SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)getSwiftErrorDescription:(NSError * _Nonnull)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface UIApplication (SWIFT_EXTENSION(Sentry)) <SentryApplication>
- (NSArray<UIWindow *> * _Nullable)getWindows SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSString *> * _Nullable)relevantViewControllersNames SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) UIApplicationState unsafeApplicationState;
@property (nonatomic, readonly) BOOL mainThread_isActive;
@end






@class NSURLSessionTask;

SWIFT_CLASS("_TtC6Sentry20URLSessionTaskHelper")
@interface URLSessionTaskHelper : NSObject
+ (NSString * _Nullable)getGraphQLOperationNameFrom:(NSURLSessionTask * _Nullable)task SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSURLQueryItem;

SWIFT_CLASS("_TtC6Sentry12UrlSanitized")
@interface UrlSanitized : NSObject
@property (nonatomic, readonly, copy) NSString * _Nullable query;
@property (nonatomic, readonly, copy) NSArray<NSURLQueryItem *> * _Nullable queryItems;
@property (nonatomic, readonly, copy) NSString * _Nullable fragment;
- (nonnull instancetype)initWithURL:(NSURL * _Nonnull)url OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nullable sanitizedUrl;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// Adds additional information about what happened to an event.
/// @deprecated Use <code>SentryFeedback</code>.
SWIFT_CLASS_NAMED("UserFeedback") SWIFT_DEPRECATED_MSG("Use SentryFeedback.")
@interface SentryUserFeedback : NSObject <SentrySerializable>
/// The eventId of the event to which the user feedback is associated.
@property (nonatomic, readonly, strong) SentryId * _Nonnull eventId;
/// The name of the user.
@property (nonatomic, copy) NSString * _Nonnull name;
/// The email of the user.
@property (nonatomic, copy) NSString * _Nonnull email;
/// Comments of the user about what happened.
@property (nonatomic, copy) NSString * _Nonnull comments;
/// Initializes SentryUserFeedback and sets the required eventId.
/// \param eventId The eventId of the event to which the user feedback is associated.
///
- (nonnull instancetype)initWithEventId:(SentryId * _Nonnull)eventId OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

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

#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef SENTRY_SWIFT_H
#define SENTRY_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

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

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

#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#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
#endif

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

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
#  define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
#  define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction 
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT 
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
#  define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL 
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import Dispatch;
@import Foundation;
@import MetricKit;
@import ObjectiveC;
@import UIKit;
#endif

#import <Sentry/Sentry.h>

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

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

#if defined(__OBJC__)



@class SentryDispatchQueueWrapper;
@class SentryDefaultCurrentDateProvider;
@class SentryDefaultUIDeviceWrapper;

SWIFT_CLASS_NAMED("Dependencies")
@interface SentryDependencies : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDispatchQueueWrapper * _Nonnull dispatchQueueWrapper;)
+ (SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDefaultCurrentDateProvider * _Nonnull dateProvider;)
+ (SentryDefaultCurrentDateProvider * _Nonnull)dateProvider SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryDefaultUIDeviceWrapper * _Nonnull uiDeviceWrapper;)
+ (SentryDefaultUIDeviceWrapper * _Nonnull)uiDeviceWrapper SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end





@class NSString;

SWIFT_CLASS("_TtC6Sentry19HTTPHeaderSanitizer")
@interface HTTPHeaderSanitizer : NSObject
+ (NSDictionary<NSString *, NSString *> * _Nonnull)sanitizeHeaders:(NSDictionary<NSString *, NSString *> * _Nonnull)headers SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSNumber;
@protocol SentryObjCRuntimeWrapper;

SWIFT_CLASS("_TtC6Sentry13LoadValidator")
@interface LoadValidator : NSObject
+ (void)checkForDuplicatedSDKWithImageName:(NSString * _Nonnull)imageName imageAddress:(NSNumber * _Nonnull)imageAddress imageSize:(NSNumber * _Nonnull)imageSize objcRuntimeWrapper:(id <SentryObjCRuntimeWrapper> _Nonnull)objcRuntimeWrapper dispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end





@class NSOperationQueue;
@class NSNotification;
@protocol NSObject;

SWIFT_PROTOCOL("_TtP6Sentry33SentryNSNotificationCenterWrapper_")
@protocol SentryNSNotificationCenterWrapper
- (void)addObserver:(id _Nonnull)observer selector:(SEL _Nonnull)aSelector name:(NSNotificationName _Nullable)aName object:(id _Nullable)anObject;
- (id <NSObject> _Nonnull)addObserverForName:(NSNotificationName _Nullable)name object:(id _Nullable)obj queue:(NSOperationQueue * _Nullable)queue usingBlock:(void (^ _Nonnull)(NSNotification * _Nonnull))block SWIFT_WARN_UNUSED_RESULT;
- (void)removeObserver:(id _Nonnull)observer name:(NSNotificationName _Nullable)aName object:(id _Nullable)anObject;
- (void)postNotification:(NSNotification * _Nonnull)notification;
@end


@interface NSNotificationCenter (SWIFT_EXTENSION(Sentry)) <SentryNSNotificationCenterWrapper>
@end

@class SentryExperimentalOptions;

@interface SentryOptions (SWIFT_EXTENSION(Sentry))
/// This aggregates options for experimental features.
/// Be aware that the options available for experimental can change at any time.
@property (nonatomic, readonly, strong) SentryExperimentalOptions * _Nonnull experimental;
@end


SWIFT_CLASS("_TtC6Sentry27PlaceholderProcessInfoClass")
@interface PlaceholderProcessInfoClass : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry28PlaceholderSentryApplication")
@interface PlaceholderSentryApplication : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry23SentryProcessInfoSource_")
@protocol SentryProcessInfoSource
@property (nonatomic, readonly, copy) NSString * _Nonnull processDirectoryPath;
@property (nonatomic, readonly, copy) NSString * _Nullable processPath;
@property (nonatomic, readonly) NSInteger processorCount;
@property (nonatomic, readonly) NSProcessInfoThermalState thermalState;
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nonnull environment;
@property (nonatomic, readonly) BOOL isiOSAppOnMac SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(watchos,introduced=7.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0);
@property (nonatomic, readonly) BOOL isMacCatalystApp SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0);
@end


@interface NSProcessInfo (SWIFT_EXTENSION(Sentry)) <SentryProcessInfoSource>
@property (nonatomic, readonly, copy) NSString * _Nonnull processDirectoryPath;
@property (nonatomic, readonly, copy) NSString * _Nullable processPath;
@end


SWIFT_CLASS("_TtC6Sentry22SentryANRStoppedResult")
@interface SentryANRStoppedResult : NSObject
@property (nonatomic, readonly) NSTimeInterval minDuration;
@property (nonatomic, readonly) NSTimeInterval maxDuration;
- (nonnull instancetype)initWithMinDuration:(NSTimeInterval)minDuration maxDuration:(NSTimeInterval)maxDuration OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol SentryANRTrackerDelegate;

SWIFT_PROTOCOL("_TtP6Sentry16SentryANRTracker_")
@protocol SentryANRTracker
- (void)addListener:(id <SentryANRTrackerDelegate> _Nonnull)listener;
- (void)removeListener:(id <SentryANRTrackerDelegate> _Nonnull)listener;
/// Only used for tests.
- (void)clear;
@end

enum SentryANRType : NSInteger;

/// The  methods are called from a  background thread.
SWIFT_PROTOCOL("_TtP6Sentry24SentryANRTrackerDelegate_")
@protocol SentryANRTrackerDelegate
- (void)anrDetectedWithType:(enum SentryANRType)type;
- (void)anrStoppedWithResult:(SentryANRStoppedResult * _Nullable)result;
@end

typedef SWIFT_ENUM(NSInteger, SentryANRType, open) {
  SentryANRTypeFatalFullyBlocking = 0,
  SentryANRTypeFatalNonFullyBlocking = 1,
  SentryANRTypeFullyBlocking = 2,
  SentryANRTypeNonFullyBlocking = 3,
  SentryANRTypeUnknown = 4,
};


SWIFT_CLASS("_TtC6Sentry23SentryAppHangTypeMapper")
@interface SentryAppHangTypeMapper : NSObject
+ (NSString * _Nonnull)getExceptionTypeWithAnrType:(enum SentryANRType)anrType SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nonnull)getFatalExceptionTypeWithNonFatalErrorType:(NSString * _Nonnull)nonFatalErrorType SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isExceptionTypeAppHangWithExceptionType:(NSString * _Nonnull)exceptionType SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;

SWIFT_CLASS("_TtC6Sentry14SentryAppState")
@interface SentryAppState : NSObject <SentrySerializable>
@property (nonatomic, readonly, copy) NSString * _Nullable releaseName;
@property (nonatomic, readonly, copy) NSString * _Nonnull osVersion;
@property (nonatomic, readonly, copy) NSString * _Nonnull vendorId;
@property (nonatomic, readonly) BOOL isDebugging;
/// The boot time of the system rounded down to seconds. As the precision of the serialization is
/// only milliseconds and a precision of seconds is enough we round down to seconds. With this we
/// avoid getting different dates before and after serialization.
/// warning:
/// We must not send this information off device because Apple forbids that.
/// We are allowed send the amount of time that has elapsed between events that occurred within the
/// app though. For more information see
/// https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278394.
@property (nonatomic, readonly, copy) NSDate * _Nonnull systemBootTimestamp;
@property (nonatomic) BOOL isActive;
@property (nonatomic) BOOL wasTerminated;
@property (nonatomic) BOOL isANROngoing;
@property (nonatomic) BOOL isSDKRunning;
- (nonnull instancetype)initWithReleaseName:(NSString * _Nullable)releaseName osVersion:(NSString * _Nonnull)osVersion vendorId:(NSString * _Nonnull)vendorId isDebugging:(BOOL)isDebugging systemBootTimestamp:(NSDate * _Nonnull)systemBootTimestamp OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithJSONObject:(NSDictionary<NSString *, id> * _Nonnull)jsonObject OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIWindow;
@class UIScene;
@protocol UIApplicationDelegate;

SWIFT_PROTOCOL("_TtP6Sentry17SentryApplication_")
@protocol SentryApplication
@property (nonatomic, readonly) BOOL mainThread_isActive;
/// Returns the application state available at @c UIApplication.sharedApplication.applicationState
/// Must be called on the main thread.
@property (nonatomic, readonly) UIApplicationState unsafeApplicationState;
/// All windows connected to scenes.
- (NSArray<UIWindow *> * _Nullable)getWindows SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSSet<UIScene *> * _Nonnull connectedScenes SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(ios,introduced=13.0);
@property (nonatomic, readonly, strong) id <UIApplicationDelegate> _Nullable delegate;
/// Use @c [SentryUIApplication relevantViewControllers] and convert the
/// result to a string array with the class name of each view controller.
- (NSArray<NSString *> * _Nullable)relevantViewControllersNames SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry26SentryBaggageSerialization")
@interface SentryBaggageSerialization : NSObject
+ (NSString * _Nonnull)encodeDictionary:(NSDictionary<NSString *, NSString *> * _Nonnull)dictionary SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)decode:(NSString * _Nonnull)baggage SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryBinaryImageInfo;

/// This class listens to <code>SentryCrashBinaryImageCache</code> to keep a copy of the loaded binaries
/// information in a sorted collection that will be used to symbolicate frames with better
/// performance.
SWIFT_CLASS_NAMED("SentryBinaryImageCache")
@interface SentryBinaryImageCache : NSObject
@property (nonatomic, readonly, copy) NSArray<SentryBinaryImageInfo *> * _Nullable cache;
- (void)start:(BOOL)isDebug;
- (void)stop;
- (void)binaryImageAdded:(char const * _Nullable)imageName vmAddress:(uint64_t)vmAddress address:(uint64_t)address size:(uint64_t)size uuid:(uint8_t const * _Nullable)uuid;
+ (NSString * _Nullable)convertUUID:(uint8_t const * _Nullable)value SWIFT_WARN_UNUSED_RESULT;
- (void)binaryImageRemoved:(uint64_t)imageAddress;
- (SentryBinaryImageInfo * _Nullable)imageByAddress:(uint64_t)address SWIFT_WARN_UNUSED_RESULT;
- (NSSet<NSString *> * _Nonnull)imagePathsForInAppInclude:(NSString * _Nonnull)inAppInclude SWIFT_WARN_UNUSED_RESULT;
- (NSArray<SentryBinaryImageInfo *> * _Nonnull)getAllBinaryImages SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SentryBinaryImageInfo")
@interface SentryBinaryImageInfo : NSObject
@property (nonatomic, copy) NSString * _Nonnull name;
@property (nonatomic, copy) NSString * _Nullable uuid;
@property (nonatomic) uint64_t vmAddress;
@property (nonatomic) uint64_t address;
@property (nonatomic) uint64_t size;
- (nonnull instancetype)initWithName:(NSString * _Nonnull)name uuid:(NSString * _Nullable)uuid vmAddress:(uint64_t)vmAddress address:(uint64_t)address size:(uint64_t)size OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryDiscardedEvent;
@protocol SentryCurrentDateProvider;

SWIFT_CLASS("_TtC6Sentry18SentryClientReport")
@interface SentryClientReport : NSObject <SentrySerializable>
- (nonnull instancetype)initWithDiscardedEvents:(NSArray<SentryDiscardedEvent *> * _Nonnull)discardedEvents dateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry18SentryCrashWrapper")
@interface SentryCrashWrapper : NSObject
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nonnull systemInfo;
- (nonnull instancetype)initWithProcessInfoWrapper:(id <SentryProcessInfoSource> _Nonnull)processInfoWrapper OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryScope;

@interface SentryCrashWrapper (SWIFT_EXTENSION(Sentry))
- (void)startBinaryImageCache;
- (void)stopBinaryImageCache;
@property (nonatomic, readonly) BOOL crashedLastLaunch;
@property (nonatomic, readonly) NSTimeInterval durationFromCrashStateInitToLastCrash;
@property (nonatomic, readonly) NSTimeInterval activeDurationSinceLastCrash;
@property (nonatomic, readonly) BOOL isBeingTraced;
@property (nonatomic, readonly) BOOL isSimulatorBuild;
@property (nonatomic, readonly) BOOL isApplicationInForeground;
@property (nonatomic, readonly) uint64_t freeMemorySize;
@property (nonatomic, readonly) uint64_t appMemorySize;
- (void)enrichScope:(SentryScope * _Nonnull)scope;
@end


/// We need a protocol to expose SentryCurrentDateProvider to tests.
/// Mocking the previous private class from <code>SentryTestUtils</code> stopped working in Xcode 16.
SWIFT_PROTOCOL("_TtP6Sentry25SentryCurrentDateProvider_")
@protocol SentryCurrentDateProvider
- (NSDate * _Nonnull)date SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)timezoneOffset SWIFT_WARN_UNUSED_RESULT;
- (uint64_t)systemTime SWIFT_WARN_UNUSED_RESULT;
- (NSTimeInterval)systemUptime SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry32SentryDefaultCurrentDateProvider")
@interface SentryDefaultCurrentDateProvider : NSObject <SentryCurrentDateProvider>
- (NSDate * _Nonnull)date SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)timezoneOffset SWIFT_WARN_UNUSED_RESULT;
/// Returns the absolute timestamp, which has no defined reference point or unit
/// as it is platform dependent.
- (uint64_t)systemTime SWIFT_WARN_UNUSED_RESULT;
- (NSTimeInterval)systemUptime SWIFT_WARN_UNUSED_RESULT;
+ (uint64_t)getAbsoluteTime SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry24SentryObjCRuntimeWrapper_")
@protocol SentryObjCRuntimeWrapper
- (char const * _Nonnull * _Nullable)copyClassNamesForImage:(char const * _Nonnull)image amount:(uint32_t * _Nullable)outCount SWIFT_WARN_UNUSED_RESULT;
- (char const * _Nullable)class_getImageName:(Class _Nonnull)cls SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry31SentryDefaultObjCRuntimeWrapper")
@interface SentryDefaultObjCRuntimeWrapper : NSObject <SentryObjCRuntimeWrapper>
- (char const * _Nonnull * _Nullable)copyClassNamesForImage:(char const * _Nonnull)image amount:(uint32_t * _Nullable)outCount SWIFT_WARN_UNUSED_RESULT;
- (char const * _Nullable)class_getImageName:(Class _Nonnull)cls SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_PROTOCOL("_TtP6Sentry21SentryUIDeviceWrapper_")
@protocol SentryUIDeviceWrapper
- (void)start;
- (void)stop;
- (NSString * _Nonnull)getSystemVersion SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) UIDeviceOrientation orientation;
@property (nonatomic, readonly) BOOL isBatteryMonitoringEnabled;
@property (nonatomic, readonly) UIDeviceBatteryState batteryState;
@property (nonatomic, readonly) float batteryLevel;
@end


SWIFT_CLASS("_TtC6Sentry28SentryDefaultUIDeviceWrapper")
@interface SentryDefaultUIDeviceWrapper : NSObject <SentryUIDeviceWrapper>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nonnull instancetype)initWithQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)queueWrapper OBJC_DESIGNATED_INITIALIZER;
- (void)start;
- (void)stop;
@property (nonatomic, readonly) UIDeviceOrientation orientation;
@property (nonatomic, readonly) BOOL isBatteryMonitoringEnabled;
@property (nonatomic, readonly) UIDeviceBatteryState batteryState;
@property (nonatomic, readonly) float batteryLevel;
- (NSString * _Nonnull)getSystemVersion SWIFT_WARN_UNUSED_RESULT;
@end

@class UIView;
@class UIImage;

SWIFT_PROTOCOL("_TtP6Sentry18SentryViewRenderer_")
@protocol SentryViewRenderer
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry25SentryDefaultViewRenderer")
@interface SentryDefaultViewRenderer : NSObject <SentryViewRenderer>
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry20SentryDiscardedEvent")
@interface SentryDiscardedEvent : NSObject <SentrySerializable>
@property (nonatomic, readonly) NSUInteger quantity;
- (nonnull instancetype)initWithReason:(NSString * _Nonnull)reason category:(NSString * _Nonnull)category quantity:(NSUInteger)quantity OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry26SentryDispatchQueueWrapper")
@interface SentryDispatchQueueWrapper : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithName:(char const * _Nonnull)name attributes:(dispatch_queue_attr_t _Nullable)attributes OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) dispatch_queue_t _Nonnull queue;
- (void)dispatchAsyncWithBlock:(void (^ _Nonnull)(void))block;
- (void)dispatchAsyncOnMainQueue:(void (^ _Nonnull)(void))block;
- (void)dispatchSyncOnMainQueue:(void (^ _Nonnull)(void))block;
- (void)dispatchSyncOnMainQueue:(void (^ _Nonnull)(void))block timeout:(double)timeout;
- (void)dispatchAfter:(NSTimeInterval)interval block:(void (^ _Nonnull)(void))block;
- (void)dispatchOnce:(long * _Nonnull)predicate block:(void (^ _Nonnull)(void))block;
@property (nonatomic, readonly) BOOL shouldDispatchCancel;
@property (nonatomic, readonly) BOOL shouldCreateDispatchBlock;
@end


/// A wrapper around a dispatch timer source that can be subclassed for mocking in tests.
SWIFT_CLASS("_TtC6Sentry27SentryDispatchSourceWrapper")
@interface SentryDispatchSourceWrapper : NSObject
- (nonnull instancetype)initWithInterval:(NSInteger)interval leeway:(NSInteger)leeway queue:(SentryDispatchQueueWrapper * _Nonnull)queueWrapper eventHandler:(void (^ _Nonnull)(void))eventHandler OBJC_DESIGNATED_INITIALIZER;
- (void)cancel;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry28SentryEnabledFeaturesBuilder")
@interface SentryEnabledFeaturesBuilder : NSObject
+ (NSArray<NSString *> * _Nonnull)getEnabledFeaturesWithOptions:(SentryOptions * _Nullable)options SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryId;
@class SentryEnvelopeItem;
@class SentryEnvelopeHeader;

SWIFT_CLASS("_TtC6Sentry14SentryEnvelope")
@interface SentryEnvelope : NSObject
- (nonnull instancetype)initWithId:(SentryId * _Nullable)id singleItem:(SentryEnvelopeItem * _Nonnull)item SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithHeader:(SentryEnvelopeHeader * _Nonnull)header singleItem:(SentryEnvelopeItem * _Nonnull)item;
- (nonnull instancetype)initWithId:(SentryId * _Nullable)id items:(NSArray<SentryEnvelopeItem *> * _Nonnull)items SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithHeader:(SentryEnvelopeHeader * _Nonnull)header items:(NSArray<SentryEnvelopeItem *> * _Nonnull)items OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) SentryEnvelopeHeader * _Nonnull header;
@property (nonatomic, readonly, copy) NSArray<SentryEnvelopeItem *> * _Nonnull items;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryTraceContext;
@class SentrySdkInfo;

SWIFT_CLASS("_TtC6Sentry20SentryEnvelopeHeader")
@interface SentryEnvelopeHeader : NSObject
/// Initializes an @c SentryEnvelopeHeader object with the specified eventId.
/// @note Sets the @c sdkInfo from @c SentryMeta.
/// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment
/// related to event.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext.
/// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
/// attachment related to event.
/// @param traceContext Current trace state.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId traceContext:(SentryTraceContext * _Nullable)traceContext SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and
/// @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the
/// @c sdkInfo for you.
/// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
/// attachment related to event.
/// @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New
/// instances should always provide a version.
/// @param traceContext Current trace state.
- (nonnull instancetype)initWithId:(SentryId * _Nullable)eventId sdkInfo:(SentrySdkInfo * _Nullable)sdkInfo traceContext:(SentryTraceContext * _Nullable)traceContext OBJC_DESIGNATED_INITIALIZER;
+ (nonnull instancetype)empty SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// The event identifier, if available.
/// An event id exist if the envelope contains an event of items within it are related. i.e
/// Attachments
@property (nonatomic, strong) SentryId * _Nullable eventId;
@property (nonatomic, strong) SentrySdkInfo * _Nullable sdkInfo;
@property (nonatomic, strong) SentryTraceContext * _Nullable traceContext;
/// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used
/// for clock drift correction of the event timestamp. The time zone must be UTC.
/// The timestamp should be generated as close as possible to the transmision of the event,
/// so that the delay between sending the envelope and receiving it on the server-side is
/// minimized.
@property (nonatomic, copy) NSDate * _Nullable sentAt;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryEnvelopeItemHeader;
@class NSData;
@class SentryEvent;
@class SentrySession;
@class SentryUserFeedback;
@class SentryAttachment;
@class SentryReplayEvent;
@class SentryReplayRecording;
@class NSURL;

SWIFT_CLASS("_TtC6Sentry18SentryEnvelopeItem")
@interface SentryEnvelopeItem : NSObject
/// The envelope item header.
@property (nonatomic, readonly, strong) SentryEnvelopeItemHeader * _Nonnull header;
/// The envelope payload.
@property (nonatomic, readonly, copy) NSData * _Nullable data;
/// Designated initializer for creating an envelope item with a header and data.
- (nonnull instancetype)initWithHeader:(SentryEnvelopeItemHeader * _Nonnull)header data:(NSData * _Nullable)data OBJC_DESIGNATED_INITIALIZER;
/// Initializes an envelope item with an event.
- (nonnull instancetype)initWithEvent:(SentryEvent * _Nonnull)event;
/// Initializes an envelope item with a session.
- (nonnull instancetype)initWithSession:(SentrySession * _Nonnull)session;
/// @deprecated Building the envelopes for the new @c SentryFeedback type is done directly in @c
/// -[SentryClient @c captureFeedback:withScope:]
- (nonnull instancetype)initWithUserFeedback:(SentryUserFeedback * _Nonnull)userFeedback SWIFT_DEPRECATED_MSG("Building the envelopes for the new SentryFeedback type is done directly in -[SentryClient captureFeedback:withScope:] so there will be no analog to this initializer for SentryFeedback at this time.");
/// Initializes an envelope item with an attachment.
/// @param attachment The attachment to create the envelope item from.
/// @param maxAttachmentSize The maximum allowed size for the attachment.
/// @return The envelope item or nil if the attachment is too large or cannot be processed.
- (nullable instancetype)initWithAttachment:(SentryAttachment * _Nonnull)attachment maxAttachmentSize:(NSUInteger)maxAttachmentSize;
/// Initializes an envelope item with a client report.
- (nonnull instancetype)initWithClientReport:(SentryClientReport * _Nonnull)clientReport;
/// Initializes an envelope item with replay event and recording data.
- (nullable instancetype)initWithReplayEvent:(SentryReplayEvent * _Nonnull)replayEvent replayRecording:(SentryReplayRecording * _Nonnull)replayRecording video:(NSURL * _Nonnull)video;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Each item type must have a data category name mapped to it; see SentryDataCategoryMapper
/// While these envelope item types might look similar to the data categories,
/// they are not identical, and have slight differences.
SWIFT_CLASS("_TtC6Sentry23SentryEnvelopeItemTypes")
@interface SentryEnvelopeItemTypes : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull event;)
+ (NSString * _Nonnull)event SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull session;)
+ (NSString * _Nonnull)session SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull userFeedback;)
+ (NSString * _Nonnull)userFeedback SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull feedback;)
+ (NSString * _Nonnull)feedback SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull transaction;)
+ (NSString * _Nonnull)transaction SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull attachment;)
+ (NSString * _Nonnull)attachment SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull clientReport;)
+ (NSString * _Nonnull)clientReport SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull profile;)
+ (NSString * _Nonnull)profile SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull replayVideo;)
+ (NSString * _Nonnull)replayVideo SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull statsd;)
+ (NSString * _Nonnull)statsd SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull profileChunk;)
+ (NSString * _Nonnull)profileChunk SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull log;)
+ (NSString * _Nonnull)log SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS_NAMED("SentryEventDecodable")
@interface SentryEventDecodable : SentryEvent
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry18SentryEventDecoder")
@interface SentryEventDecoder : NSObject
+ (SentryEvent * _Nullable)decodeEventWithJsonData:(NSData * _Nonnull)jsonData SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry25SentryExperimentalOptions")
@interface SentryExperimentalOptions : NSObject
/// Enables swizzling of<code>NSData</code> to automatically track file operations.
/// note:
/// Swizzling is enabled by setting <code>SentryOptions.enableSwizzling</code> to <code>true</code>.
/// This option allows you to disable swizzling for <code>NSData</code> only, while keeping swizzling enabled for other classes.
/// This is useful if you want to use manual tracing for file operations.
@property (nonatomic) BOOL enableDataSwizzling;
/// Enables swizzling of<code>NSFileManager</code> to automatically track file operations.
/// note:
/// Swizzling is enabled by setting <code>SentryOptions.enableSwizzling</code> to <code>true</code>.
/// This option allows you to disable swizzling for <code>NSFileManager</code> only, while keeping swizzling enabled for other classes.
/// This is useful if you want to use manual tracing for file operations.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. We’ll enable it by default in a future release.
@property (nonatomic) BOOL enableFileManagerSwizzling;
/// A more reliable way to report unhandled C++ exceptions.
/// This approach hooks into all instances of the <code>__cxa_throw</code> function, which provides a more comprehensive and consistent exception handling across an app’s runtime, regardless of the number of C++ modules or how they’re linked. It helps in obtaining accurate stack traces.
/// note:
/// The mechanism of hooking into <code>__cxa_throw</code> could cause issues with symbolication on iOS due to caching of symbol references.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. We’ll enable it by default in a future major release.
@property (nonatomic) BOOL enableUnhandledCPPExceptionsV2;
/// Forces enabling of session replay in unreliable environments.
/// Due to internal changes with the release of Liquid Glass on iOS 26.0, the masking of text and images can not be reliably guaranteed.
/// Therefore the SDK uses a defensive programming approach to disable the session replay integration by default, unless the environment is detected as reliable.
/// Indicators for reliable environments include:
/// important:
/// This flag allows to re-enable the session replay integration on iOS 26.0 and later, but please be aware that text and images may not be masked as expected.
/// note:
/// See <a href="https://github.com/getsentry/sentry-cocoa/issues/6389">GitHub issues #6389</a> for more information.
/// <ul>
///   <li>
///     Running on an older version of iOS that doesn’t have Liquid Glass (iOS 18 or earlier)
///   </li>
///   <li>
///     UIDesignRequiresCompatibility is explicitly set to YES in Info.plist
///   </li>
///   <li>
///     The app was built with Xcode < 26.0 (DTXcode < 2600)
///   </li>
/// </ul>
@property (nonatomic) BOOL enableSessionReplayInUnreliableEnvironment;
/// Logs are considered beta.
@property (nonatomic) BOOL enableLogs;
- (void)validateOptions:(NSDictionary<NSString *, id> * _Nullable)options;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry19SentryExtraPackages")
@interface SentryExtraPackages : NSObject
+ (void)addPackageName:(NSString * _Nullable)name version:(NSString * _Nullable)version;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum SentryFeedbackSource : NSInteger;

SWIFT_CLASS("_TtC6Sentry14SentryFeedback")
@interface SentryFeedback : NSObject
@property (nonatomic, readonly, strong) SentryId * _Nonnull eventId;
/// \param associatedEventId The ID for an event you’d like associated with the feedback. 
///
/// \param attachments Data objects for any attachments. Currently the web UI only supports showing one attached image, like for a screenshot. 
///
- (nonnull instancetype)initWithMessage:(NSString * _Nonnull)message name:(NSString * _Nullable)name email:(NSString * _Nullable)email source:(enum SentryFeedbackSource)source associatedEventId:(SentryId * _Nullable)associatedEventId attachments:(NSArray<NSData *> * _Nullable)attachments OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryFeedbackSource, open) {
  SentryFeedbackSourceWidget = 0,
  SentryFeedbackSourceCustom = 1,
};


@interface SentryFeedback (SWIFT_EXTENSION(Sentry)) <SentrySerializable>
@end


@interface SentryFeedback (SWIFT_EXTENSION(Sentry))
/// note:
/// Currently there is only a single attachment possible, for the screenshot, of which there can be only one.
- (NSArray<SentryAttachment *> * _Nonnull)attachmentsForEnvelope SWIFT_WARN_UNUSED_RESULT;
@end


@interface SentryFeedback (SWIFT_EXTENSION(Sentry))
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry18SentryFileContents")
@interface SentryFileContents : NSObject
@property (nonatomic, readonly, copy) NSString * _Nonnull path;
@property (nonatomic, readonly, copy) NSData * _Nonnull contents;
- (nonnull instancetype)initWithPath:(NSString * _Nonnull)path contents:(NSData * _Nonnull)contents OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_PROTOCOL("_TtP6Sentry25SentryFileManagerProtocol_")
@protocol SentryFileManagerProtocol
- (void)moveState:(NSString * _Nonnull)stateFilePath toPreviousState:(NSString * _Nonnull)previousStateFilePath;
- (NSData * _Nullable)readDataFromPath:(NSString * _Nonnull)path error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (BOOL)writeData:(NSData * _Nonnull)data toPath:(NSString * _Nonnull)path;
- (void)removeFileAtPath:(NSString * _Nonnull)path;
- (NSURL * _Nonnull)getSentryPathAsURL SWIFT_WARN_UNUSED_RESULT;
@end

@class SentryFrame;

SWIFT_CLASS("_TtC6Sentry18SentryFrameRemover")
@interface SentryFrameRemover : NSObject
/// Removes Sentry SDK frames until a frame from a different package is found.
/// @discussion When a user includes Sentry as a static library, the package is the same as the
/// application. Therefore removing frames with a package containing “sentry” doesn’t work. We can’t
/// look into the function name as in release builds, the function name can be obfuscated, or we
/// remove functions that are not from this SDK and contain “sentry”. Therefore this logic only works
/// for apps including Sentry dynamically.
+ (NSArray<SentryFrame *> * _Nonnull)removeNonSdkFrames:(NSArray<SentryFrame *> * _Nonnull)frames SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry23SentryFramesDelayResult")
@interface SentryFramesDelayResult : NSObject
/// The frames delay for the passed time period. If frame delay can’t be calculated this is -1.
@property (nonatomic, readonly) CFTimeInterval delayDuration;
@property (nonatomic, readonly) NSUInteger framesContributingToDelayCount;
- (nonnull instancetype)initWithDelayDuration:(CFTimeInterval)delayDuration framesContributingToDelayCount:(NSUInteger)framesContributingToDelayCount OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry26SentryGlobalEventProcessor")
@interface SentryGlobalEventProcessor : NSObject
- (void)addEventProcessor:(SentryEvent * _Nullable (^ _Nonnull)(SentryEvent * _Nonnull))newProcessor;
- (SentryEvent * _Nullable)reportAll:(SentryEvent * _Nonnull)event;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSUUID;

SWIFT_CLASS("_TtC6Sentry8SentryId")
@interface SentryId : NSObject
/// A @c SentryId with an empty UUID “00000000000000000000000000000000”.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryId * _Nonnull empty;)
+ (SentryId * _Nonnull)empty SWIFT_WARN_UNUSED_RESULT;
/// Returns a 32 lowercase character hexadecimal string description of the @c SentryId, such as
/// “12c2d058d58442709aa2eca08bf20986”.
@property (nonatomic, readonly, copy) NSString * _Nonnull sentryIdString;
/// Creates a @c SentryId with a random UUID.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Creates a SentryId with the given UUID.
- (nonnull instancetype)initWithUuid:(NSUUID * _Nonnull)uuid OBJC_DESIGNATED_INITIALIZER;
/// Creates a @c SentryId from a 32 character hexadecimal string without dashes such as
/// “12c2d058d58442709aa2eca08bf20986” or a 36 character hexadecimal string such as such as
/// “12c2d058-d584-4270-9aa2-eca08bf20986”.
/// @return SentryId.empty for invalid strings.
- (nonnull instancetype)initWithUUIDString:(NSString * _Nonnull)uuidString OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@property (nonatomic, readonly) NSUInteger hash;
@end



/// This class detects whether a framework belongs to the app or not. We differentiate between three
/// different types of frameworks.
/// First, the main executable of the app, which’s name can be retrieved by @c CFBundleExecutable. To
/// mark this framework as “in-app” the caller needs to pass in the @c CFBundleExecutable to
/// @c inAppIncludes.
/// Next, there are private frameworks embedded in the application bundle. Both app supporting
/// frameworks as CocoaLumberJack, Sentry, RXSwift, etc., and frameworks written by the user fall
/// into this category. These frameworks can be both “in-app” or not. As we expect most frameworks of
/// this category to be supporting frameworks, we mark them not as “in-app”. If a user wants such a
/// framework to be “in-app”, they need to pass the name into @c inAppIncludes. For dynamic
/// frameworks, the location is usually in the bundle under
/// /Frameworks/FrameworkName.framework/FrameworkName. As for static frameworks, the location is the
/// same as the main executable; this class marks all static frameworks as “in-app”. To remove static
/// frameworks from being “in-app”, Sentry uses stack trace grouping rules on the server.
/// Last, this class marks all public frameworks as not “in-app”. Such frameworks are bound
/// dynamically and are usually located at /Library/Frameworks or ~/Library/Frameworks. For
/// simulators, the location can be something like
/// /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/…
SWIFT_CLASS("_TtC6Sentry16SentryInAppLogic")
@interface SentryInAppLogic : NSObject
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull inAppIncludes;
/// Initializes @c SentryInAppLogic with @c inAppIncludes and @c inAppExcludes.
/// To work properly for Apple applications the @c inAppIncludes should contain the
/// @c CFBundleExecutable, which is the name of the bundle’s executable file.
/// @param inAppIncludes A list of string prefixes of framework names that belong to the app. This
/// option takes precedence over @c inAppExcludes.
/// @param inAppExcludes A list of string prefixes of framework names that do not belong to the app,
/// but rather to third-party packages. Modules considered not part of the app will be hidden from
/// stack traces by default.
- (nonnull instancetype)initWithInAppIncludes:(NSArray<NSString *> * _Nonnull)inAppIncludes inAppExcludes:(NSArray<NSString *> * _Nonnull)inAppExcludes OBJC_DESIGNATED_INITIALIZER;
/// Determines if the framework belongs to the app by using @c inAppIncludes and @c inAppExcludes.
/// Before checking this method lowercases the strings and uses only the @c lastPathComponent of the
/// @c imagePath.
/// @param imagePath the full path of the binary image.
/// @return @c YES if the framework located at the @c imagePath starts with a prefix of
/// @c inAppIncludes. @c NO if the framework located at the @c imagePath doesn’t start with a prefix of
/// @c inAppIncludes or start with a prefix of @c inAppExcludes.
- (BOOL)isInApp:(NSString * _Nullable)imagePath SWIFT_WARN_UNUSED_RESULT;
/// Determines if the class belongs to the app by getting its framework and checking with
/// @c -[isInApp:]
/// @param targetClass the class to check.
/// @return @c YES if the @c targetClass belongs to a framework included in @c inAppIncludes.
/// @c NO if targetClass does not belong to a framework in @c inAppIncludes or belongs to a framework in
/// @c inAppExcludes.
- (BOOL)isClassInApp:(Class _Nonnull)targetClass SWIFT_WARN_UNUSED_RESULT;
+ (BOOL)isImageNameInApp:(NSString * _Nonnull)imageName inAppInclude:(NSString * _Nonnull)inAppInclude SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSError;

SWIFT_PROTOCOL("_TtP6Sentry30SentryInfoPlistWrapperProvider_")
@protocol SentryInfoPlistWrapperProvider
/// Retrieves a value from the app’s <code>Info.plist</code> file for the given key and trys to cast it to a <code>String</code>.
/// note:
/// The return value can not be nullable, because a throwing function in Objective-C uses <code>nil</code> to indicate an error:
/// \code
/// Throwing method cannot be a member of an '@objc' protocol because it returns a value of optional type 'String?'; 'nil' indicates failure to Objective-C
///
/// \endcode\param key The key for which to retrieve the value from the <code>Info.plist</code>.
///
///
/// throws:
/// An error if the value cannot be cast to type <code>String</code> or <code>SentryInfoPlistError.keyNotFound</code> if the key was not found or the value is <code>nil</code>
///
/// returns:
/// The value associated with the specified key cast to type <code>String</code>
- (NSString * _Nullable)getAppValueStringFor:(NSString * _Nonnull)key error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
/// Retrieves a value from the app’s <code>Info.plist</code> file for the given key and trys to cast it to a <code>Bool</code>.
/// note:
/// This method can not use <code>throws</code> because a falsy return value would indicate an error in Objective-C:
/// \code
/// Throwing method cannot be a member of an '@objc' protocol because it returns a value of type 'Bool'; return 'Void' or a type that bridges to an Objective-C class
///
/// \endcode<ul>
///   <li>
///     Parameters
///     <ul>
///       <li>
///         key: The key for which to retrieve the value from the <code>Info.plist</code>.
///       </li>
///       <li>
///         error: A pointer to a an <code>NSError</code> to return an error value.
///       </li>
///     </ul>
///   </li>
/// </ul>
///
/// throws:
/// An error if the value cannot be cast to type <code>String</code> or <code>SentryInfoPlistError.keyNotFound</code> if the value is <code>nil</code>
///
/// returns:
/// The value associated with the specified key cast to type <code>String</code>
- (BOOL)getAppValueBooleanFor:(NSString * _Nonnull)key errorPtr:(NSError * _Nullable * _Nullable)errorPtr SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry22SentryInfoPlistWrapper")
@interface SentryInfoPlistWrapper : NSObject <SentryInfoPlistWrapperProvider>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (BOOL)getAppValueBooleanFor:(NSString * _Nonnull)key errorPtr:(NSError * _Nullable * _Nullable)errPtr SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)getAppValueStringFor:(NSString * _Nonnull)key error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
@end


typedef SWIFT_ENUM(NSUInteger, SentryLevel, open) {
  kSentryLevelNone SWIFT_COMPILE_NAME("none") = 0,
  kSentryLevelDebug SWIFT_COMPILE_NAME("debug") = 1,
  kSentryLevelInfo SWIFT_COMPILE_NAME("info") = 2,
  kSentryLevelWarning SWIFT_COMPILE_NAME("warning") = 3,
  kSentryLevelError SWIFT_COMPILE_NAME("error") = 4,
  kSentryLevelFatal SWIFT_COMPILE_NAME("fatal") = 5,
};


SWIFT_CLASS("_TtC6Sentry17SentryLevelHelper")
@interface SentryLevelHelper : NSObject
+ (NSString * _Nonnull)nameForLevel:(enum SentryLevel)level SWIFT_WARN_UNUSED_RESULT;
+ (enum SentryLevel)levelForName:(NSString * _Nullable)name SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


enum SentryStructuredLogLevel : NSInteger;
@class SentryStructuredLogAttribute;

/// A structured log entry that captures log data with associated attribute metadata.
/// Use the <code>options.beforeSendLog</code> callback to modify or filter log data.
SWIFT_CLASS("_TtC6Sentry9SentryLog")
@interface SentryLog : NSObject
/// The timestamp when the log event occurred
@property (nonatomic, copy) NSDate * _Nonnull timestamp;
/// The trace ID to associate this log with distributed tracing
@property (nonatomic, strong) SentryId * _Nonnull traceId;
/// The severity level of the log entry
@property (nonatomic) enum SentryStructuredLogLevel level;
/// The main log message content
@property (nonatomic, copy) NSString * _Nonnull body;
/// A dictionary of structured attributes added to the log entry
@property (nonatomic, copy) NSDictionary<NSString *, SentryStructuredLogAttribute *> * _Nonnull attributes;
/// Numeric representation of the severity level (Int)
@property (nonatomic, strong) NSNumber * _Nullable severityNumber;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface SentryLog (SWIFT_EXTENSION(Sentry))
@end


/// A typed attribute that can be attached to structured log entries.
/// <code>Attribute</code> provides a type-safe way to store structured data alongside log messages.
/// Supports String, Bool, Int, and Double types.
SWIFT_CLASS_NAMED("Attribute")
@interface SentryStructuredLogAttribute : NSObject
/// The type identifier for this attribute (“string”, “boolean”, “integer”, “double”)
@property (nonatomic, readonly, copy) NSString * _Nonnull type;
/// The actual value stored in this attribute
@property (nonatomic, readonly) id _Nonnull value;
- (nonnull instancetype)initWithString:(NSString * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithBoolean:(BOOL)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithInteger:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDouble:(double)value OBJC_DESIGNATED_INITIALIZER;
/// Creates a double attribute from a float value
- (nonnull instancetype)initWithFloat:(float)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface SentryLog (SWIFT_EXTENSION(Sentry))
@end

/// Represents the severity level of a structured log entry.
/// Log levels are ordered by severity from least (<code>trace</code>) to most severe (<code>fatal</code>).
/// Each level corresponds to a numeric severity value following the OpenTelemetry specification.
typedef SWIFT_ENUM_NAMED(NSInteger, SentryStructuredLogLevel, "Level", open) {
  SentryStructuredLogLevelTrace = 0,
  SentryStructuredLogLevelDebug = 1,
  SentryStructuredLogLevelInfo = 2,
  SentryStructuredLogLevelWarn = 3,
  SentryStructuredLogLevelError = 4,
  SentryStructuredLogLevelFatal = 5,
};


@class SentryClient;

SWIFT_CLASS("_TtC6Sentry16SentryLogBatcher")
@interface SentryLogBatcher : NSObject
/// Initializes a new SentryLogBatcher.
/// important:
/// The <code>dispatchQueue</code> parameter MUST be a serial queue to ensure thread safety.
/// Passing a concurrent queue will result in undefined behavior and potential data races.
/// \param client The SentryClient to use for sending logs
///
/// \param flushTimeout The timeout interval after which buffered logs will be flushed
///
/// \param maxBufferSizeBytes The maximum buffer size in bytes before triggering an immediate flush
///
/// \param dispatchQueue A <em>serial</em> dispatch queue wrapper for thread-safe access to mutable state
///
- (nonnull instancetype)initWithClient:(SentryClient * _Nonnull)client flushTimeout:(NSTimeInterval)flushTimeout maxBufferSizeBytes:(NSInteger)maxBufferSizeBytes dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue OBJC_DESIGNATED_INITIALIZER;
/// Convenience initializer with default flush timeout and buffer size.
/// important:
/// The <code>dispatchQueue</code> parameter MUST be a serial queue to ensure thread safety.
/// Passing a concurrent queue will result in undefined behavior and potential data races.
/// \param client The SentryClient to use for sending logs
///
/// \param dispatchQueue A <em>serial</em> dispatch queue wrapper for thread-safe access to mutable state
///
- (nonnull instancetype)initWithClient:(SentryClient * _Nonnull)client dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// <em>EXPERIMENTAL</em> - A structured logging API for Sentry.
/// <code>SentryLogger</code> provides a structured logging interface that captures log entries
/// and sends them to Sentry. Supports multiple log levels (trace, debug, info, warn,
/// error, fatal) and allows attaching arbitrary attributes for enhanced context.
/// <h2>Supported Attribute Types</h2>
/// note:
/// Sentry Logs is currently in Beta. See the <a href="https://docs.sentry.io/product/explore/logs/">Sentry Logs Documentation</a>.
/// warning:
/// This API is experimental and subject to change without notice.
/// <ul>
///   <li>
///     <code>String</code>, <code>Bool</code>, <code>Int</code>, <code>Double</code>
///   </li>
///   <li>
///     <code>Float</code> (converted to <code>Double</code>)
///   </li>
///   <li>
///     Other types (converted to string)
///   </li>
/// </ul>
/// <h2>Usage</h2>
/// \code
/// let logger = SentrySDK.logger
/// logger.info("User logged in", attributes: ["userId": "12345"])
/// logger.error("Payment failed", attributes: ["errorCode": 500])
///
/// // Structured string interpolation with automatic type detection
/// logger.info("User \(userId) processed \(count) items with \(percentage)% success")
/// logger.debug("Processing \(itemCount) items, active: \(isActive)")
/// logger.warn("Retry attempt \(currentAttempt) of \(maxAttempts) failed")
///
/// \endcode
SWIFT_CLASS("_TtC6Sentry12SentryLogger")
@interface SentryLogger : NSObject
/// Logs a trace-level message.
- (void)trace:(NSString * _Nonnull)body;
/// Logs a trace-level message with additional attributes.
- (void)trace:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a debug-level message.
- (void)debug:(NSString * _Nonnull)body;
/// Logs a debug-level message with additional attributes.
- (void)debug:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs an info-level message.
- (void)info:(NSString * _Nonnull)body;
/// Logs an info-level message with additional attributes.
- (void)info:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a warning-level message.
- (void)warn:(NSString * _Nonnull)body;
/// Logs a warning-level message with additional attributes.
- (void)warn:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs an error-level message.
- (void)error:(NSString * _Nonnull)body;
/// Logs an error-level message with additional attributes.
- (void)error:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
/// Logs a fatal-level message.
- (void)fatal:(NSString * _Nonnull)body;
/// Logs a fatal-level message with additional attributes.
- (void)fatal:(NSString * _Nonnull)body attributes:(NSDictionary<NSString *, id> * _Nonnull)attributes;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class SentryMXFrame;

SWIFT_CLASS("_TtC6Sentry17SentryMXCallStack")
@interface SentryMXCallStack : NSObject
@property (nonatomic, copy) NSArray<SentryMXFrame *> * _Nonnull callStackRootFrames;
@property (nonatomic, readonly, copy) NSArray<SentryMXFrame *> * _Nonnull flattenedRootFrames;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// JSON specification of MXCallStackTree can be found here https://developer.apple.com/documentation/metrickit/mxcallstacktree/3552293-jsonrepresentation
SWIFT_CLASS("_TtC6Sentry21SentryMXCallStackTree")
@interface SentryMXCallStackTree : NSObject
@property (nonatomic, readonly, copy) NSArray<SentryMXCallStack *> * _Nonnull callStacks;
@property (nonatomic, readonly) BOOL callStackPerThread;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry13SentryMXFrame")
@interface SentryMXFrame : NSObject
@property (nonatomic, copy) NSUUID * _Nonnull binaryUUID;
@property (nonatomic) NSInteger offsetIntoBinaryTextSegment;
@property (nonatomic, copy) NSString * _Nullable binaryName;
@property (nonatomic) uint64_t address;
@property (nonatomic, copy) NSArray<SentryMXFrame *> * _Nullable subFrames;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@protocol SentryMXManagerDelegate;
@class MXDiagnosticPayload;

SWIFT_CLASS("_TtC6Sentry15SentryMXManager") SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(maccatalyst,introduced=15.0) SWIFT_AVAILABILITY(macos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=15.0)
@interface SentryMXManager : NSObject <MXMetricManagerSubscriber>
- (nonnull instancetype)initWithDisableCrashDiagnostics:(BOOL)disableCrashDiagnostics OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, weak) id <SentryMXManagerDelegate> _Nullable delegate;
- (void)receiveReports;
- (void)pauseReports;
- (void)didReceiveDiagnosticPayloads:(NSArray<MXDiagnosticPayload *> * _Nonnull)payloads;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class MXCrashDiagnostic;
@class MXDiskWriteExceptionDiagnostic;
@class MXCPUExceptionDiagnostic;
@class MXHangDiagnostic;

SWIFT_PROTOCOL("_TtP6Sentry23SentryMXManagerDelegate_") SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(maccatalyst,introduced=15.0) SWIFT_AVAILABILITY(macos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=15.0)
@protocol SentryMXManagerDelegate
- (void)didReceiveCrashDiagnostic:(MXCrashDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveDiskWriteExceptionDiagnostic:(MXDiskWriteExceptionDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveCpuExceptionDiagnostic:(MXCPUExceptionDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
- (void)didReceiveHangDiagnostic:(MXHangDiagnostic * _Nonnull)diagnostic callStackTree:(SentryMXCallStackTree * _Nonnull)callStackTree timeStampBegin:(NSDate * _Nonnull)timeStampBegin timeStampEnd:(NSDate * _Nonnull)timeStampEnd;
@end

@protocol SentryRedactOptions;
@class NSCoder;

SWIFT_CLASS("_TtC6Sentry24SentryMaskingPreviewView")
@interface SentryMaskingPreviewView : UIView
@property (nonatomic) float opacity;
- (nonnull instancetype)initWithRedactOptions:(id <SentryRedactOptions> _Nonnull)redactOptions OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (void)didMoveToSuperview;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

@class SentryMeasurementUnit;

SWIFT_CLASS("_TtC6Sentry22SentryMeasurementValue")
@interface SentryMeasurementValue : NSObject
@property (nonatomic, readonly, strong) NSNumber * _Nonnull value;
@property (nonatomic, readonly, strong) SentryMeasurementUnit * _Nullable unit;
- (nonnull instancetype)initWithValue:(NSNumber * _Nonnull)value OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithValue:(NSNumber * _Nonnull)value unit:(SentryMeasurementUnit * _Nonnull)unit OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// For proper statistics in release health, we need to make sure we don’t send session updates
/// without sending a session init first. In other words, we can’t drop a session init. The
/// @c SentryFileManager deletes an envelope once the maximum amount of envelopes is stored. When
/// this happens and the envelope to delete contains a session init we look for the next envelope
/// containing a session update for the same session. If such a session envelope is found we migrate
/// the init flag. If none is found we delete the envelope. We don’t migrate other envelope items as
/// events.
SWIFT_CLASS("_TtC6Sentry24SentryMigrateSessionInit")
@interface SentryMigrateSessionInit : NSObject
/// Checks if the envelope of the passed file path contains an envelope item with a session init. If
/// it does it iterates over all envelopes and looks for a session with the same session id. If such
/// a session is found the init flag is set to @c true, the envelope is updated with keeping other
/// envelope items and headers, and the updated envelope is stored to the disk keeping its path.
/// @param envelope The envelope to delete
/// @param envelopesDirPath The path of the directory where the envelopes are stored.
/// @param envelopeFilePaths An array containing the file paths of envelopes to check if they contain
/// a session init.
/// @return @c true if the function migrated the session init. @c false if not.
+ (BOOL)migrateSessionInit:(SentryEnvelope * _Nullable)envelope envelopesDirPath:(NSString * _Nonnull)envelopesDirPath envelopeFilePaths:(NSArray<NSString *> * _Nonnull)envelopeFilePaths;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry27SentryMobileProvisionParser")
@interface SentryMobileProvisionParser : NSObject
@property (nonatomic, readonly) BOOL mobileProvisionProfileProvisionsAllDevices;
- (nonnull instancetype)init;
- (BOOL)hasEmbeddedMobileProvisionProfile SWIFT_WARN_UNUSED_RESULT;
@end



@class NSTimer;

SWIFT_CLASS("_TtC6Sentry20SentryNSTimerFactory")
@interface SentryNSTimerFactory : NSObject
- (NSTimer * _Nonnull)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^ _Nonnull)(NSTimer * _Nonnull))block;
- (NSTimer * _Nonnull)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id _Nonnull)aTarget selector:(SEL _Nonnull)aSelector userInfo:(id _Nullable)userInfo repeats:(BOOL)yesOrNo;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@class SentryVideoInfo;

SWIFT_PROTOCOL("_TtP6Sentry22SentryReplayVideoMaker_")
@protocol SentryReplayVideoMaker <NSObject>
- (void)addFrameAsyncWithTimestamp:(NSDate * _Nonnull)timestamp maskedViewImage:(UIImage * _Nonnull)maskedViewImage forScreen:(NSString * _Nullable)forScreen;
- (void)releaseFramesUntil:(NSDate * _Nonnull)date;
- (void)createVideoInBackgroundWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end completion:(void (^ _Nonnull)(NSArray<SentryVideoInfo *> * _Nonnull))completion;
- (NSArray<SentryVideoInfo *> * _Nonnull)createVideoWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry20SentryOnDemandReplay")
@interface SentryOnDemandReplay : NSObject <SentryReplayVideoMaker>
@property (nonatomic) float videoScale;
@property (nonatomic) NSInteger bitRate;
@property (nonatomic) NSInteger frameRate;
@property (nonatomic) NSUInteger cacheMaxSize;
- (nonnull instancetype)initWithOutputPath:(NSString * _Nonnull)outputPath processingQueue:(SentryDispatchQueueWrapper * _Nonnull)processingQueue assetWorkerQueue:(SentryDispatchQueueWrapper * _Nonnull)assetWorkerQueue OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithContentFrom:(NSString * _Nonnull)outputPath processingQueue:(SentryDispatchQueueWrapper * _Nonnull)processingQueue assetWorkerQueue:(SentryDispatchQueueWrapper * _Nonnull)assetWorkerQueue;
- (void)addFrameAsyncWithTimestamp:(NSDate * _Nonnull)timestamp maskedViewImage:(UIImage * _Nonnull)maskedViewImage forScreen:(NSString * _Nullable)screen;
- (void)releaseFramesUntil:(NSDate * _Nonnull)date;
@property (nonatomic, readonly, copy) NSDate * _Nullable oldestFrameDate;
- (void)createVideoInBackgroundWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end completion:(void (^ _Nonnull)(NSArray<SentryVideoInfo *> * _Nonnull))completion;
- (NSArray<SentryVideoInfo *> * _Nonnull)createVideoWithBeginning:(NSDate * _Nonnull)beginning end:(NSDate * _Nonnull)end SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


enum SentryProfileLifecycle : NSInteger;

/// An object containing configuration for the Sentry profiler.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// If either <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code> are
/// set to a non-nil value such that transaction-based profiling is being used, these settings
/// will have no effect, nor will <code>SentrySDK.startProfiler()</code> or <code>SentrySDK.stopProfiler()</code>.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
SWIFT_CLASS("_TtC6Sentry20SentryProfileOptions")
@interface SentryProfileOptions : NSObject
/// The mode to use for starting and stopping the profiler, either manually or automatically.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// Default: <code>SentryProfileLifecycleManual</code>.
/// note:
/// If either <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code> are
/// set to a non-nil value such that transaction-based profiling is being used, then setting
/// this property has no effect.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) enum SentryProfileLifecycle lifecycle;
/// The % of user sessions in which to enable profiling.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// The decision whether or not to sample profiles is computed using this sample rate
/// when the SDK is started, and applies to any requests to start the profiler–regardless of
/// <code>lifecycle</code>– until the app resigns its active status. It is then reevaluated on subsequent
/// foreground events. The duration of time that a sample decision prevails between
/// launch/foreground and background is referred to as a profile session.
/// note:
/// Backgrounding and foregrounding the app starts a new user session and sampling is
/// re-evaluated. If there is no active trace when the app is backgrounded, profiling stops
/// before the app backgrounds. If there is an active trace and profiling is in-flight when the
/// app is foregrounded again, the same profiling session should continue until the last root
/// span in that trace finishes — this means that the re-evaluated sample rate does not actually
/// take effect until the profiler is started again.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) float sessionSampleRate;
/// Start the profiler as early as possible during the app lifecycle to capture more activity
/// during your app’s launch.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// <code>sessionSampleRate</code> is evaluated on the previous launch and only takes effect when
/// app start profiling activates on the next launch.
/// note:
/// If <code>lifecycle</code> is <code>manual</code>, profiling is started automatically on startup, but you
/// must manually call <code>SentrySDK.stopProfiler()</code> whenever you app startup to be complete. If
/// <code>lifecycle</code> is <code>trace</code>, profiling is started automatically on startup, and will
/// automatically be stopped when the root span that is associated with app startup ends.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
@property (nonatomic) BOOL profileAppStarts;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// Different modes for starting and stopping the profiler.
typedef SWIFT_ENUM(NSInteger, SentryProfileLifecycle, open) {
/// Profiling is controlled manually, and is independent of transactions & spans. Developers
/// must use<code>SentrySDK.startProfiler()</code> and <code>SentrySDK.stopProfiler()</code> to manage the profile
/// session. If the session is sampled, <code>SentrySDK.startProfiler()</code> will always start
/// profiling.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
  SentryProfileLifecycleManual = 0,
/// Profiling is automatically started when there is at least 1 active root span, and
/// automatically stopped when there are 0 root spans.
/// warning:
/// Continuous profiling is an experimental feature and may still contain bugs.
/// note:
/// This mode only works if tracing is enabled.
/// note:
/// Profiling respects both <code>SentryProfileOptions.profileSessionSampleRate</code> and
/// the existing sampling configuration for tracing
/// (<code>SentryOptions.tracesSampleRate</code>/<code>SentryOptions.tracesSampler</code>). Sampling will be
/// re-evaluated on a per root span basis.
/// note:
/// If there are multiple overlapping root spans, where some are sampled and some or
/// not, profiling will continue until the end of the last sampled root span. Profiling data
/// will not be linked with spans that are not sampled.
/// note:
/// When the last root span finishes, the profiler will continue running until the
/// end of the current timed interval. If a new root span starts before this interval
/// completes, the profiler will instead continue running until the next root span stops, at
/// which time it will attempt to stop again in the same way.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
  SentryProfileLifecycleTrace = 1,
};


SWIFT_PROTOCOL_NAMED("SentryRRWebEventProtocol")
@protocol SentryRRWebEvent <SentrySerializable>
@end


SWIFT_CLASS("_TtC6Sentry16SentryRRWebEvent")
@interface SentryRRWebEvent : NSObject <SentryRRWebEvent>
@property (nonatomic, readonly, copy) NSDictionary<NSString *, id> * _Nullable data;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry22SentryRRWebCustomEvent")
@interface SentryRRWebCustomEvent : SentryRRWebEvent
@end


SWIFT_CLASS("_TtC6Sentry26SentryRRWebBreadcrumbEvent")
@interface SentryRRWebBreadcrumbEvent : SentryRRWebCustomEvent
- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp category:(NSString * _Nonnull)category message:(NSString * _Nullable)message level:(enum SentryLevel)level data:(NSDictionary<NSString *, id> * _Nullable)data OBJC_DESIGNATED_INITIALIZER;
@end





SWIFT_CLASS("_TtC6Sentry20SentryRRWebSpanEvent")
@interface SentryRRWebSpanEvent : SentryRRWebCustomEvent
- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp endTimestamp:(NSDate * _Nonnull)endTimestamp operation:(NSString * _Nonnull)operation description:(NSString * _Nonnull)description data:(NSDictionary<NSString *, id> * _Nonnull)data OBJC_DESIGNATED_INITIALIZER;
@end


/// Protocol for generating random numbers.
SWIFT_PROTOCOL("_TtP6Sentry20SentryRandomProtocol_")
@protocol SentryRandomProtocol
/// Returns a random number uniformly distributed over the interval [0.0 , 1.0].
- (double)nextNumber SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry12SentryRandom")
@interface SentryRandom : NSObject <SentryRandomProtocol>
/// Returns a random number uniformly distributed over the interval [0.0 , 1.0].
- (double)nextNumber SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_PROTOCOL("_TtP6Sentry19SentryRedactOptions_")
@protocol SentryRedactOptions
@property (nonatomic, readonly) BOOL maskAllText;
@property (nonatomic, readonly) BOOL maskAllImages;
@property (nonatomic, readonly, copy) NSArray<Class> * _Nonnull maskedViewClasses;
@property (nonatomic, readonly, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
@end


SWIFT_CLASS("_TtC6Sentry26SentryRedactDefaultOptions")
@interface SentryRedactDefaultOptions : NSObject <SentryRedactOptions>
@property (nonatomic) BOOL maskAllText;
@property (nonatomic) BOOL maskAllImages;
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry22SentryRedactViewHelper")
@interface SentryRedactViewHelper : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (void)maskView:(UIView * _Nonnull)view;
+ (void)unmaskView:(UIView * _Nonnull)view;
+ (void)clipOutView:(UIView * _Nonnull)view;
+ (void)maskSwiftUI:(UIView * _Nonnull)view;
@end

@class SentryBreadcrumb;

SWIFT_PROTOCOL("_TtP6Sentry31SentryReplayBreadcrumbConverter_")
@protocol SentryReplayBreadcrumbConverter <NSObject>
- (id <SentryRRWebEvent> _Nullable)convertFrom:(SentryBreadcrumb * _Nonnull)breadcrumb SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL("_TtP6Sentry30SentryReplayDisplayLinkWrapper_")
@protocol SentryReplayDisplayLinkWrapper
- (BOOL)isRunning SWIFT_WARN_UNUSED_RESULT;
- (void)invalidate;
- (void)linkWithTarget:(id _Nonnull)withTarget selector:(SEL _Nonnull)selector;
@end

enum SentryReplayType : NSInteger;

SWIFT_CLASS("_TtC6Sentry17SentryReplayEvent")
@interface SentryReplayEvent : SentryEvent
@property (nonatomic, readonly, copy) NSDate * _Nonnull replayStartTimestamp;
@property (nonatomic, readonly) enum SentryReplayType replayType;
/// Number of the segment in the replay.
/// This is an incremental number
@property (nonatomic, readonly) NSInteger segmentId;
/// This will be used to store the name of the screens
/// that appear during the duration of the replay segment.
@property (nonatomic, copy) NSArray<NSString *> * _Nullable urls;
- (nonnull instancetype)initWithEventId:(SentryId * _Nonnull)eventId replayStartTimestamp:(NSDate * _Nonnull)replayStartTimestamp replayType:(enum SentryReplayType)replayType segmentId:(NSInteger)segmentId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum SentryReplayQuality : NSInteger;

SWIFT_CLASS("_TtC6Sentry19SentryReplayOptions")
@interface SentryReplayOptions : NSObject <SentryRedactOptions>
/// Indicates the percentage in which the replay for the session will be created.
/// note:
/// The value needs to be <code>>= 0.0</code> and <code><= 1.0</code>. When setting a value out of range the SDK sets it
/// to the default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.sessionSegmentDuration</code> for the default duration of the replay.
/// <ul>
///   <li>
///     Specifying @c 0 means never, @c 1.0 means always.
///   </li>
/// </ul>
@property (nonatomic) float sessionSampleRate;
/// Indicates the percentage in which a 30 seconds replay will be send with error events.
/// note:
/// The value needs to be >= 0.0 and <= 1.0. When setting a value out of range the SDK sets it
/// to the default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.errorReplayDuration</code> for the default duration of the replay.
/// <ul>
///   <li>
///     Specifying 0 means never, 1.0 means always.
///   </li>
/// </ul>
@property (nonatomic) float onErrorSampleRate;
/// Indicates whether session replay should redact all text in the app
/// by drawing a black rectangle over it.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskAllText</code> for the default value.
@property (nonatomic) BOOL maskAllText;
/// Indicates whether session replay should redact all non-bundled image
/// in the app by drawing a black rectangle over it.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskAllImages</code> for the default value.
@property (nonatomic) BOOL maskAllImages;
/// Indicates the quality of the replay.
/// The higher the quality, the higher the CPU and bandwidth usage.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.quality</code> for the default value.
@property (nonatomic) enum SentryReplayQuality quality;
/// A list of custom UIView subclasses that need
/// to be masked during session replay.
/// By default Sentry already mask text and image elements from UIKit
/// Every child of a view that is redacted will also be redacted.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.maskedViewClasses</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
/// A list of custom UIView subclasses to be ignored
/// during masking step of the session replay.
/// The views of given classes will not be redacted but their children may be.
/// This property has precedence over <code>redactViewTypes</code>.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.unmaskedViewClasses</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
/// Alias for <code>enableViewRendererV2</code>.
/// This flag is deprecated and will be removed in a future version.
/// Please use <code>enableViewRendererV2</code> instead.
@property (nonatomic) BOOL enableExperimentalViewRenderer SWIFT_DEPRECATED_MSG("", "enableViewRendererV2");
/// Enables the up to 5x faster new view renderer used by the Session Replay integration.
/// Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// <em>up to 4-5x faster rendering</em> (reducing <code>~160ms</code> to <code>~36ms</code> per frame) on older devices.
/// experiment:
/// In case you are noticing issues with the new view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>.
/// Eventually, we will remove this feature flag and use the new view renderer by default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.enableViewRendererV2</code> for the default value.
@property (nonatomic) BOOL enableViewRendererV2;
/// Enables up to 5x faster but incomplete view rendering used by the Session Replay integration.
/// Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// up to <em>5x faster render times</em> (reducing <code>~160ms</code> to <code>~30ms</code> per frame).
/// This flag controls the way the view hierarchy is drawn into a graphics context for the session replay. By default, the view hierarchy is drawn using
/// the <code>UIView.drawHierarchy(in:afterScreenUpdates:)</code> method, which is the most complete way to render the view hierarchy. However,
/// this method can be slow, especially when rendering complex views, therefore enabling this flag will switch to render the underlying <code>CALayer</code> instead.
/// note:
/// This flag can only be used together with <code>enableViewRendererV2</code> with up to 20% faster render times.
/// warning:
/// Rendering the view hiearchy using the <code>CALayer.render(in:)</code> method can lead to rendering issues, especially when using custom views.
/// For complete rendering, it is recommended to set this option to <code>false</code>. In case you prefer performance over completeness, you can
/// set this option to <code>true</code>.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. In case you are noticing issues with the experimental
/// view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>. Eventually, we will
/// mark this feature as stable and remove the experimental flag, but will keep it disabled by default.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.enableFastViewRendering</code> for the default value.
@property (nonatomic) BOOL enableFastViewRendering;
/// Defines the quality of the session replay.
/// Higher bit rates better quality, but also bigger files to transfer.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.quality</code> for the default value.
@property (nonatomic, readonly) NSInteger replayBitRate;
/// The scale related to the window size at which the replay will be created
/// note:
/// The scale is used to reduce the size of the replay.
@property (nonatomic, readonly) float sizeScale;
/// Number of frames per second of the replay.
/// The more the havier the process is.
/// The minimum is 1, if set to zero this will change to 1.
/// note:
/// See <code>SentryReplayOptions.DefaultValues.frameRate</code> for the default value.
@property (nonatomic) NSUInteger frameRate;
/// The maximum duration of replays for error events.
@property (nonatomic) NSTimeInterval errorReplayDuration;
/// The maximum duration of the segment of a session replay.
@property (nonatomic) NSTimeInterval sessionSegmentDuration;
/// The maximum duration of a replay session.
/// note:
/// See  <code>SentryReplayOptions.DefaultValues.maximumDuration</code> for the default value.
@property (nonatomic) NSTimeInterval maximumDuration;
/// Initialize session replay options disabled
/// note:
/// This initializer is added for Objective-C compatibility, as constructors with default values
/// are not supported in Objective-C.
/// note:
/// See <code>SentryReplayOptions.DefaultValues</code> for the default values of each parameter.
- (nonnull instancetype)init;
/// Initializes a new instance of <code>SentryReplayOptions</code> using a dictionary.
/// warning:
/// This initializer is primarily used by Hybrid SDKs and is not intended for public use.
/// \param dictionary A dictionary containing the configuration options for the session replay.
///
- (nonnull instancetype)initWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dictionary;
/// Initializes a new instance of <code>SentryReplayOptions</code> with the specified parameters.
/// note:
/// See <code>SentryReplayOptions.DefaultValues</code> for the default values of each parameter.
/// \param sessionSampleRate Sample rate used to determine the percentage of replays of sessions that will be uploaded.
///
/// \param onErrorSampleRate Sample rate used to determine the percentage of replays of error events that will be uploaded.
///
/// \param maskAllText Flag to redact all text in the app by drawing a rectangle over it.
///
/// \param maskAllImages Flag to redact all images in the app by drawing a rectangle over it.
///
/// \param enableViewRendererV2 Enables the up to 5x faster view renderer.
///
/// \param enableFastViewRendering Enables faster but incomplete view rendering. See <code>SentryReplayOptions.enableFastViewRendering</code> for more information.
///
- (nonnull instancetype)initWithSessionSampleRate:(float)sessionSampleRate onErrorSampleRate:(float)onErrorSampleRate maskAllText:(BOOL)maskAllText maskAllImages:(BOOL)maskAllImages enableViewRendererV2:(BOOL)enableViewRendererV2 enableFastViewRendering:(BOOL)enableFastViewRendering;
@end

/// Enum to define the quality of the session replay.
typedef SWIFT_ENUM(NSInteger, SentryReplayQuality, open) {
/// Video Scale: 80%
/// Bit Rate: 20.000
  SentryReplayQualityLow = 0,
/// Video Scale: 100%
/// Bit Rate: 40.000
  SentryReplayQualityMedium = 1,
/// Video Scale: 100%
/// Bit Rate: 60.000
  SentryReplayQualityHigh = 2,
};


SWIFT_CLASS("_TtC6Sentry21SentryReplayRecording")
@interface SentryReplayRecording : NSObject
- (nonnull instancetype)initWithSegmentId:(NSInteger)segmentId video:(SentryVideoInfo * _Nonnull)video extraEvents:(NSArray<id <SentryRRWebEvent>> * _Nonnull)extraEvents;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryReplayType, open) {
  SentryReplayTypeSession = 0,
  SentryReplayTypeBuffer = 1,
};



@protocol SentrySpan;
@class SentryReplayApi;
@class SentryTransactionContext;
@class NSException;
@class SentryFeedbackAPI;
@class SentryUser;

/// The main entry point for the Sentry SDK.
/// We recommend using <code>start(configureOptions:)</code> to initialize Sentry.
SWIFT_CLASS("_TtC6Sentry9SentrySDK")
@interface SentrySDK : NSObject
/// The current active transaction or span bound to the scope.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) id <SentrySpan> _Nullable span;)
+ (id <SentrySpan> _Nullable)span SWIFT_WARN_UNUSED_RESULT;
/// Indicates whether the Sentry SDK is enabled.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL isEnabled;)
+ (BOOL)isEnabled SWIFT_WARN_UNUSED_RESULT;
/// API to control session replay
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryReplayApi * _Nonnull replay;)
+ (SentryReplayApi * _Nonnull)replay SWIFT_WARN_UNUSED_RESULT;
/// API to access Sentry logs
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryLogger * _Nonnull logger;)
+ (SentryLogger * _Nonnull)logger SWIFT_WARN_UNUSED_RESULT;
/// Inits and configures Sentry (<code>SentryHub</code>, <code>SentryClient</code>) and sets up all integrations. Make sure to
/// set a valid DSN.
/// note:
/// Call this method on the main thread. When calling it from a background thread, the
/// SDK starts on the main thread async.
+ (void)startWithOptions:(SentryOptions * _Nonnull)options;
/// Inits and configures Sentry (<code>SentryHub</code>, <code>SentryClient</code>) and sets up all integrations. Make sure to
/// set a valid DSN.
/// note:
/// Call this method on the main thread. When calling it from a background thread, the
/// SDK starts on the main thread async.
+ (void)startWithConfigureOptions:(void (^ _Nonnull)(SentryOptions * _Nonnull))configureOptions;
/// Captures a manually created event and sends it to Sentry.
/// \param event The event to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event;
/// Captures a manually created event and sends it to Sentry. Only the data in this scope object will
/// be added to the event. The global scope will be ignored.
/// \param event The event to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event withScope:(SentryScope * _Nonnull)scope;
/// Captures a manually created event and sends it to Sentry. Maintains the global scope but mutates
/// scope data for only this call.
/// \param event The event to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureEvent:(SentryEvent * _Nonnull)event withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param name The transaction name.
///
/// \param operation Short code identifying the type of operation the span is measuring.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithName:(NSString * _Nonnull)name operation:(NSString * _Nonnull)operation;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param name The transaction name.
///
/// \param operation Short code identifying the type of operation the span is measuring.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithName:(NSString * _Nonnull)name operation:(NSString * _Nonnull)operation bindToScope:(BOOL)bindToScope;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext bindToScope:(BOOL)bindToScope;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param bindToScope Indicates whether the SDK should bind the new transaction to the scope.
///
/// \param customSamplingContext Additional information about the sampling context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext bindToScope:(BOOL)bindToScope customSamplingContext:(NSDictionary<NSString *, id> * _Nonnull)customSamplingContext;
/// Creates a transaction, binds it to the hub and returns the instance.
/// \param transactionContext The transaction context.
///
/// \param customSamplingContext Additional information about the sampling context.
///
///
/// returns:
/// The created transaction.
+ (id <SentrySpan> _Nonnull)startTransactionWithContext:(SentryTransactionContext * _Nonnull)transactionContext customSamplingContext:(NSDictionary<NSString *, id> * _Nonnull)customSamplingContext;
/// Captures an error event and sends it to Sentry.
/// \param error The error to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error;
/// Captures an error event and sends it to Sentry. Only the data in this scope object will be added
/// to the event. The global scope will be ignored.
/// \param error The error to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error withScope:(SentryScope * _Nonnull)scope;
/// Captures an error event and sends it to Sentry. Maintains the global scope but mutates scope data
/// for only this call.
/// \param error The error to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureError:(NSError * _Nonnull)error withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures an exception event and sends it to Sentry.
/// \param exception The exception to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception;
/// Captures an exception event and sends it to Sentry. Only the data in this scope object will be
/// added to the event. The global scope will be ignored.
/// \param exception The exception to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception withScope:(SentryScope * _Nonnull)scope;
/// Captures an exception event and sends it to Sentry. Maintains the global scope but mutates scope
/// data for only this call.
/// \param exception The exception to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureException:(NSException * _Nonnull)exception withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures a message event and sends it to Sentry.
/// \param message The message to send to Sentry.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message;
/// Captures a message event and sends it to Sentry. Only the data in this scope object will be added
/// to the event. The global scope will be ignored.
/// \param message The message to send to Sentry.
///
/// \param scope The scope containing event metadata.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message withScope:(SentryScope * _Nonnull)scope;
/// Captures a message event and sends it to Sentry. Maintains the global scope but mutates scope
/// data for only this call.
/// \param message The message to send to Sentry.
///
/// \param block The block mutating the scope only for this call.
///
///
/// returns:
/// The <code>SentryId</code> of the event or <code>SentryId.empty</code> if the event is not sent.
+ (SentryId * _Nonnull)captureMessage:(NSString * _Nonnull)message withScopeBlock:(void (^ _Nonnull)(SentryScope * _Nonnull))block;
/// Captures user feedback that was manually gathered and sends it to Sentry.
/// \param userFeedback The user feedback to send to Sentry.
///
+ (void)captureUserFeedback:(SentryUserFeedback * _Nonnull)userFeedback SWIFT_DEPRECATED_MSG("Use SentrySDK.back or use or configure our new managed UX with SentryOptions.configureUserFeedback.");
/// Captures user feedback that was manually gathered and sends it to Sentry.
/// warning:
/// This is an experimental feature and may still have bugs.
/// note:
/// If you’d prefer not to have to build the UI required to gather the feedback from the user,
/// see <code>SentryOptions.configureUserFeedback</code> to customize a fully managed integration. See
/// https://docs.sentry.io/platforms/apple/user-feedback/ for more information.
/// \param feedback The feedback to send to Sentry.
///
+ (void)captureFeedback:(SentryFeedback * _Nonnull)feedback;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) SentryFeedbackAPI * _Nonnull feedback SWIFT_AVAILABILITY(ios,introduced=13.0);)
+ (SentryFeedbackAPI * _Nonnull)feedback SWIFT_WARN_UNUSED_RESULT;
/// Adds a <code>Breadcrumb</code> to the current <code>Scope</code> of the current <code>Hub</code>. If the total number of breadcrumbs
/// exceeds the <code>SentryOptions.maxBreadcrumbs</code> the SDK removes the oldest breadcrumb.
/// \param crumb The <code>Breadcrumb</code> to add to the current <code>Scope</code> of the current <code>Hub</code>.
///
+ (void)addBreadcrumb:(SentryBreadcrumb * _Nonnull)crumb;
/// Use this method to modify the current <code>Scope</code> of the current <code>Hub</code>. The SDK uses the <code>Scope</code> to attach
/// contextual data to events.
/// \param callback The callback for configuring the current <code>Scope</code> of the current <code>Hub</code>.
///
+ (void)configureScope:(void (^ _Nonnull)(SentryScope * _Nonnull))callback;
/// Checks if the last program execution terminated with a crash.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL crashedLastRun;)
+ (BOOL)crashedLastRun SWIFT_WARN_UNUSED_RESULT;
/// Checks if the SDK detected a start-up crash during SDK initialization.
/// note:
/// The SDK init waits synchronously for up to 5 seconds to flush out events if the app crashes
/// within 2 seconds after the SDK init.
///
/// returns:
/// true if the SDK detected a start-up crash and false if not.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL detectedStartUpCrash;)
+ (BOOL)detectedStartUpCrash SWIFT_WARN_UNUSED_RESULT;
/// Set <code>user</code> to the current <code>Scope</code> of the current <code>Hub</code>.
/// note:
/// You must start the SDK before calling this method, otherwise it doesn’t set the user.
/// \param user The user to set to the current <code>Scope</code>.
///
+ (void)setUser:(SentryUser * _Nullable)user;
/// Starts a new <code>SentrySession</code>. If there’s a running <code>SentrySession</code>, it ends it before starting the
/// new one. You can use this method in combination with <code>endSession</code> to manually track
/// sessions. The SDK uses <code>SentrySession</code> to inform Sentry about release and project
/// associated project health.
+ (void)startSession;
/// Ends the current <code>SentrySession</code>. You can use this method in combination with <code>startSession</code> to
/// manually track <code>SentrySessions</code>. The SDK uses <code>SentrySession</code> to inform Sentry about release and
/// project associated project health.
+ (void)endSession;
/// This forces a crash, useful to test the <code>SentryCrash</code> integration.
/// note:
/// The SDK can’t report a crash when a debugger is attached. Your application needs to run
/// without a debugger attached to capture the crash and send it to Sentry the next time you launch
/// your application.
+ (void)crash;
/// Reports to the ongoing <code>UIViewController</code> transaction
/// that the screen contents are fully loaded and displayed,
/// which will create a new span.
/// seealso:
///
/// https://docs.sentry.io/platforms/cocoa/performance/instrumentation/automatic-instrumentation/#time-to-full-display
+ (void)reportFullyDisplayed;
/// Pauses sending detected app hangs to Sentry.
/// This method doesn’t close the detection of app hangs. Instead, the app hang detection
/// will ignore detected app hangs until you call <code>resumeAppHangTracking</code>.
+ (void)pauseAppHangTracking;
/// Resumes sending detected app hangs to Sentry.
+ (void)resumeAppHangTracking;
/// Waits synchronously for the SDK to flush out all queued and cached items for up to the specified
/// timeout in seconds. If there is no internet connection, the function returns immediately. The SDK
/// doesn’t dispose the client or the hub.
/// note:
/// This might take slightly longer than the specified timeout if there are many batched logs to capture.
/// \param timeout The time to wait for the SDK to complete the flush.
///
+ (void)flush:(NSTimeInterval)timeout;
/// Closes the SDK, uninstalls all the integrations, and calls <code>flush</code> with
/// <code>SentryOptions.shutdownTimeInterval</code>.
+ (void)close;
/// Start a new continuous profiling session if one is not already running.
/// warning:
/// Continuous profiling mode is experimental and may still contain bugs.
/// note:
/// Unlike transaction-based profiling, continuous profiling does not take into account
/// <code>SentryOptions.profilesSampleRate</code> or <code>SentryOptions.profilesSampler</code>. If either of those
/// options are set, this method does nothing.
/// note:
/// Taking into account the above note, if <code>SentryOptions.configureProfiling</code> is not set,
/// calls to this method will always start a profile if one is not already running. This includes app
/// launch profiles configured with <code>SentryOptions.enableAppLaunchProfiling</code>.
/// note:
/// If neither <code>SentryOptions.profilesSampleRate</code> nor <code>SentryOptions.profilesSampler</code> are
/// set, and <code>SentryOptions.configureProfiling</code> is set, this method does nothing if the profiling
/// session is not sampled with respect to <code>SentryOptions.profileSessionSampleRate</code>, or if it is
/// sampled but the profiler is already running.
/// note:
/// If neither <code>SentryOptions.profilesSampleRate</code> nor <code>SentryOptions.profilesSampler</code> are
/// set, and <code>SentryOptions.configureProfiling</code> is set, this method does nothing if
/// <code>SentryOptions.profileLifecycle</code> is set to <code>trace</code>. In this scenario, the profiler is
/// automatically started and stopped depending on whether there is an active sampled span, so it is
/// not permitted to manually start profiling.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
/// seealso:
/// https://docs.sentry.io/platforms/apple/guides/ios/profiling/#continuous-profiling
+ (void)startProfiler;
/// Stop a continuous profiling session if there is one ongoing.
/// warning:
/// Continuous profiling mode is experimental and may still contain bugs.
/// note:
/// Does nothing if <code>SentryOptions.profileLifecycle</code> is set to <code>trace</code>.
/// note:
/// Does not immediately stop the profiler. Profiling data is uploaded at regular timed
/// intervals; when the current interval completes, then the profiler stops and the data gathered
/// during that last interval is uploaded.
/// note:
/// If a new call to <code>startProfiler</code> that would start the profiler is made before the last
/// interval completes, the profiler will continue running until another call to stop is made.
/// note:
/// Profiling is automatically disabled if a thread sanitizer is attached.
/// seealso:
/// https://docs.sentry.io/platforms/apple/guides/ios/profiling/#continuous-profiling
+ (void)stopProfiler;
/// note:
/// Conceptually internal but needs to be marked public with SPI for ObjC visibility
+ (void)clearLogger;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A note on the thread safety:
/// The methods configure and log don’t use synchronization mechanisms, meaning they aren’t strictly speaking thread-safe.
/// Still, you can use log from multiple threads. The problem is that when you call configure while
/// calling log from multiple threads, you experience a race condition. It can take a bit until all
/// threads know the new config. As the SDK should only call configure once when starting, we do accept
/// this race condition. Adding locks for evaluating the log level for every log invocation isn’t
/// acceptable, as this adds a significant overhead for every log call. Therefore, we exclude SentryLog
/// from the ThreadSanitizer as it produces false positives. The tests call configure multiple times,
/// and the thread sanitizer would surface these race conditions. We accept these race conditions for
/// the log messages in the tests over adding locking for all log messages.
SWIFT_CLASS("_TtC6Sentry12SentrySDKLog")
@interface SentrySDKLog : NSObject
+ (void)logWithMessage:(NSString * _Nonnull)message andLevel:(enum SentryLevel)level;
/// @return @c YES if the current logging configuration will log statements at the current level,
/// @c NO if not.
+ (BOOL)willLogAtLevel:(enum SentryLevel)level SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry19SentrySDKLogSupport")
@interface SentrySDKLogSupport : NSObject
+ (void)configure:(BOOL)isDebug diagnosticLevel:(enum SentryLevel)diagnosticLevel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Describes the settings for the Sentry SDK
/// @see https://develop.sentry.dev/sdk/event-payloads/sdk/
SWIFT_CLASS("_TtC6Sentry17SentrySDKSettings")
@interface SentrySDKSettings : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithOptions:(SentryOptions * _Nullable)options OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDict:(NSDictionary * _Nonnull)dict OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic) BOOL autoInferIP;
- (NSDictionary * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry34SentrySRDefaultBreadcrumbConverter")
@interface SentrySRDefaultBreadcrumbConverter : NSObject <SentryReplayBreadcrumbConverter>
/// This function will convert the SDK breadcrumbs to session replay breadcrumbs in a format that the front-end understands.
/// Any deviation in the information will cause the breadcrumb or the information itself to be discarded
/// in order to avoid unknown behavior in the front-end.
- (id <SentryRRWebEvent> _Nullable)convertFrom:(SentryBreadcrumb * _Nonnull)breadcrumb SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry26SentryScopePersistentStore")
@interface SentryScopePersistentStore : NSObject
- (nullable instancetype)initWithFileManager:(id <SentryFileManagerProtocol> _Nullable)fileManager OBJC_DESIGNATED_INITIALIZER;
- (void)moveAllCurrentStateToPreviousState;
- (NSDictionary<NSString *, NSDictionary<NSString *, id> *> * _Nullable)readPreviousContextFromDisk SWIFT_WARN_UNUSED_RESULT;
- (SentryUser * _Nullable)readPreviousUserFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)readPreviousDistFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)readPreviousEnvironmentFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, NSString *> * _Nullable)readPreviousTagsFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSDictionary<NSString *, id> * _Nullable)readPreviousExtrasFromDisk SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSString *> * _Nullable)readPreviousFingerprintFromDisk SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end








@class SentryViewPhotographer;

SWIFT_CLASS("_TtC6Sentry22SentryScreenshotSource")
@interface SentryScreenshotSource : NSObject
- (nonnull instancetype)init;
- (nonnull instancetype)initWithPhotographer:(SentryViewPhotographer * _Nonnull)photographer OBJC_DESIGNATED_INITIALIZER;
/// Get a screenshot of every open window in the app.
///
/// returns:
/// An array of UIImage instances.
- (NSArray<UIImage *> * _Nonnull)appScreenshotsFromMainThread SWIFT_WARN_UNUSED_RESULT;
/// Get a screenshot of every open window in the app.
///
/// returns:
/// An array of Data instances containing PNG images.
- (NSArray<NSData *> * _Nonnull)appScreenshotDatasFromMainThread SWIFT_WARN_UNUSED_RESULT;
/// Save the current app screen shots in the given directory.
/// If an app has more than one screen, one image for each screen will be saved.
/// \param imagesDirectoryPath The path where the images should be saved.
///
- (void)saveScreenShots:(NSString * _Nonnull)imagesDirectoryPath;
- (NSArray<UIImage *> * _Nonnull)appScreenshots SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSData *> * _Nonnull)appScreenshotsData SWIFT_WARN_UNUSED_RESULT;
@end


/// Describes the Sentry SDK and its configuration used to capture and transmit an event.
/// @note Both name and version are required.
/// @see https://develop.sentry.dev/sdk/event-payloads/sdk/
SWIFT_CLASS("_TtC6Sentry13SentrySdkInfo")
@interface SentrySdkInfo : NSObject <SentrySerializable>
+ (nonnull instancetype)global SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
/// The name of the SDK. Examples: sentry.cocoa, sentry.cocoa.vapor, …
@property (nonatomic, readonly, copy) NSString * _Nonnull name;
/// The version of the SDK. It should have the Semantic Versioning format MAJOR.MINOR.PATCH, without
/// any prefix (no v or anything else in front of the major version number). Examples:
/// 0.1.0, 1.0.0, 2.0.0-beta0
@property (nonatomic, readonly, copy) NSString * _Nonnull version;
/// A list of names identifying enabled integrations. The list should
/// have all enabled integrations, including default integrations. Default
/// integrations are included because different SDK releases may contain different
/// default integrations.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull integrations;
/// A list of feature names identifying enabled SDK features. This list
/// should contain all enabled SDK features. On some SDKs, enabling a feature in the
/// options also adds an integration. We encourage tracking such features with either
/// integrations or features but not both to reduce the payload size.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull features;
/// A list of packages that were installed as part of this SDK or the
/// activated integrations. Each package consists of a name in the format
/// source:identifier and version.
@property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, NSString *> *> * _Nonnull packages;
/// A set of settings as part of this SDK.
@property (nonatomic, readonly, strong) SentrySDKSettings * _Nonnull settings;
- (nonnull instancetype)initWithOptions:(SentryOptions * _Nullable)options SWIFT_DEPRECATED_MSG("This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.");
- (nonnull instancetype)initWithName:(NSString * _Nullable)name version:(NSString * _Nullable)version integrations:(NSArray<NSString *> * _Nullable)integrations features:(NSArray<NSString *> * _Nullable)features packages:(NSArray<NSDictionary<NSString *, NSString *> *> * _Nullable)packages settings:(SentrySDKSettings * _Nonnull)settings OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDict:(NSDictionary * _Nonnull)dict;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry16SentrySdkPackage")
@interface SentrySdkPackage : NSObject
+ (NSDictionary<NSString *, NSString *> * _Nullable)global SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry24SentrySerializationSwift")
@interface SentrySerializationSwift : NSObject
+ (SentrySession * _Nullable)sessionWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
+ (SentryAppState * _Nullable)appStateWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithJSONObject:(id _Nonnull)jsonObject SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithEnvelope:(SentryEnvelope * _Nonnull)envelope SWIFT_WARN_UNUSED_RESULT;
+ (NSData * _Nullable)dataWithSession:(SentrySession * _Nonnull)session SWIFT_WARN_UNUSED_RESULT;
+ (SentryEnvelope * _Nullable)envelopeWithData:(NSData * _Nonnull)data SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum SentrySessionStatus : NSUInteger;

/// The SDK uses SentrySession to inform Sentry about release and project associated project health.
SWIFT_CLASS("_TtC6Sentry13SentrySession")
@interface SentrySession : NSObject <NSCopying>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Designated initializer.
- (nonnull instancetype)initWithReleaseName:(NSString * _Nonnull)releaseName distinctId:(NSString * _Nonnull)distinctId OBJC_DESIGNATED_INITIALIZER;
/// Initializes @c SentrySession from a JSON object.
/// @param jsonObject The @c jsonObject containing the session.
/// @return The @c SentrySession or @c nil if @c jsonObject contains an error.
- (nullable instancetype)initWithJSONObject:(NSDictionary<NSString *, id> * _Nonnull)jsonObject OBJC_DESIGNATED_INITIALIZER;
- (void)endSessionExitedWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)endSessionCrashedWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)endSessionAbnormalWithTimestamp:(NSDate * _Nonnull)timestamp;
- (void)incrementErrors;
@property (nonatomic, readonly, copy) NSUUID * _Nonnull sessionId;
@property (nonatomic, readonly, copy) NSDate * _Nonnull started;
@property (nonatomic, readonly) enum SentrySessionStatus status;
@property (nonatomic) NSUInteger errors;
@property (nonatomic, readonly) NSUInteger sequence;
@property (nonatomic, readonly, copy) NSString * _Nonnull distinctId;
@property (nonatomic, readonly, strong) NSNumber * _Nullable flagInit;
@property (nonatomic, readonly, copy) NSDate * _Nullable timestamp;
@property (nonatomic, readonly, strong) NSNumber * _Nullable duration;
@property (nonatomic, readonly, copy) NSString * _Nullable releaseName;
@property (nonatomic, copy) NSString * _Nullable environment;
@property (nonatomic, strong) SentryUser * _Nullable user;
@property (nonatomic, copy) NSString * _Nullable abnormalMechanism;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (void)setFlagInit;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

@protocol SentryViewScreenshotProvider;
@class SentryTouchTracker;
@protocol SentrySessionReplayDelegate;
@protocol SentrySessionReplayEnvironmentCheckerProvider;

SWIFT_CLASS("_TtC6Sentry19SentrySessionReplay")
@interface SentrySessionReplay : NSObject
@property (nonatomic, readonly) BOOL isFullSession;
@property (nonatomic, readonly, strong) SentryId * _Nullable sessionReplayId;
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable replayTags;
@property (nonatomic, strong) id <SentryViewScreenshotProvider> _Nonnull screenshotProvider;
@property (nonatomic, strong) id <SentryReplayBreadcrumbConverter> _Nonnull breadcrumbConverter;
- (nonnull instancetype)initWithReplayOptions:(SentryReplayOptions * _Nonnull)replayOptions experimentalOptions:(SentryExperimentalOptions * _Nonnull)experimentalOptions replayFolderPath:(NSURL * _Nonnull)replayFolderPath screenshotProvider:(id <SentryViewScreenshotProvider> _Nonnull)screenshotProvider replayMaker:(id <SentryReplayVideoMaker> _Nonnull)replayMaker breadcrumbConverter:(id <SentryReplayBreadcrumbConverter> _Nonnull)breadcrumbConverter touchTracker:(SentryTouchTracker * _Nullable)touchTracker dateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider delegate:(id <SentrySessionReplayDelegate> _Nonnull)delegate displayLinkWrapper:(id <SentryReplayDisplayLinkWrapper> _Nonnull)displayLinkWrapper environmentChecker:(id <SentrySessionReplayEnvironmentCheckerProvider> _Nonnull)environmentChecker OBJC_DESIGNATED_INITIALIZER;
- (void)startWithRootView:(UIView * _Nonnull)rootView fullSession:(BOOL)fullSession;
- (void)pauseSessionMode;
- (void)pause;
- (void)resume;
- (void)captureReplayForEvent:(SentryEvent * _Nonnull)event;
- (BOOL)captureReplay;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP6Sentry27SentrySessionReplayDelegate_")
@protocol SentrySessionReplayDelegate <NSObject>
- (BOOL)sessionReplayShouldCaptureReplayForError SWIFT_WARN_UNUSED_RESULT;
- (void)sessionReplayNewSegmentWithReplayEvent:(SentryReplayEvent * _Nonnull)replayEvent replayRecording:(SentryReplayRecording * _Nonnull)replayRecording videoUrl:(NSURL * _Nonnull)videoUrl;
- (void)sessionReplayStartedWithReplayId:(SentryId * _Nonnull)replayId;
- (NSArray<SentryBreadcrumb *> * _Nonnull)breadcrumbsForSessionReplay SWIFT_WARN_UNUSED_RESULT;
- (NSString * _Nullable)currentScreenNameForSessionReplay SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL("_TtP6Sentry45SentrySessionReplayEnvironmentCheckerProvider_")
@protocol SentrySessionReplayEnvironmentCheckerProvider
/// Checks if the runtime environment is considered unreliable with regards to Session Replay masking.
///
/// returns:
/// <code>true</code> if reliable, otherwise <code>false</code>
- (BOOL)isReliable SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_CLASS("_TtC6Sentry37SentrySessionReplayEnvironmentChecker")
@interface SentrySessionReplayEnvironmentChecker : NSObject <SentrySessionReplayEnvironmentCheckerProvider>
- (nonnull instancetype)initWithInfoPlistWrapper:(id <SentryInfoPlistWrapperProvider> _Nonnull)infoPlistWrapper OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isReliable SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


typedef SWIFT_ENUM(NSUInteger, SentrySessionStatus, open) {
  SentrySessionStatusOk = 0,
  SentrySessionStatusExited = 1,
  SentrySessionStatusCrashed = 2,
  SentrySessionStatusAbnormal = 3,
};



SWIFT_CLASS("_TtC6Sentry29SentrySwizzleClassNameExclude")
@interface SentrySwizzleClassNameExclude : NSObject
+ (BOOL)shouldExcludeClassWithClassName:(NSString * _Nonnull)className swizzleClassNameExcludes:(NSSet<NSString *> * _Nonnull)swizzleClassNameExcludes SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A wrapper around sysctl for testability.
SWIFT_CLASS("_TtC6Sentry12SentrySysctl")
@interface SentrySysctl : NSObject
/// Returns the time the system was booted with a precision of microseconds.
/// @warning We must not send this information off device because Apple forbids that.
/// We are allowed send the amount of time that has elapsed between events that occurred within the
/// app though. For more information see
/// https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278394.
@property (nonatomic, readonly, copy) NSDate * _Nonnull systemBootTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull processStartTimestamp;
/// The system time that the process started, as measured in @c SentrySysctl.load, essentially the
/// earliest time we can record a system timestamp, which is the number of nanoseconds since the
/// device booted, which is why we can’t simply convert @c processStartTimestamp to the nanosecond
/// representation of its @c timeIntervalSinceReferenceDate .
@property (nonatomic, readonly) uint64_t runtimeInitSystemTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull runtimeInitTimestamp;
@property (nonatomic, readonly, copy) NSDate * _Nonnull moduleInitializationTimestamp;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



SWIFT_CLASS("_TtC6Sentry19SentryThreadWrapper")
@interface SentryThreadWrapper : NSObject
- (void)sleepForTimeInterval:(NSTimeInterval)timeInterval;
- (void)threadStarted:(NSUUID * _Nonnull)threadID;
- (void)threadFinished:(NSUUID * _Nonnull)threadID;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry27SentryThreadsafeApplication")
@interface SentryThreadsafeApplication : NSObject
- (nonnull instancetype)initWithApplicationProvider:(SWIFT_NOESCAPE id <SentryApplication> _Nullable (^ _Nonnull)(void))applicationProvider notificationCenter:(id <SentryNSNotificationCenterWrapper> _Nonnull)notificationCenter OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly) UIApplicationState applicationState;
@property (nonatomic, readonly) BOOL isActive;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIEvent;

SWIFT_CLASS("_TtC6Sentry18SentryTouchTracker")
@interface SentryTouchTracker : NSObject
- (nonnull instancetype)initWithDateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider scale:(float)scale dispatchQueue:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueue OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithDateProvider:(id <SentryCurrentDateProvider> _Nonnull)dateProvider scale:(float)scale;
- (void)trackTouchFromEvent:(UIEvent * _Nonnull)event;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM(NSInteger, SentryTransactionNameSource, open) {
  kSentryTransactionNameSourceCustom SWIFT_COMPILE_NAME("custom") = 0,
  kSentryTransactionNameSourceUrl SWIFT_COMPILE_NAME("url") = 1,
  kSentryTransactionNameSourceRoute SWIFT_COMPILE_NAME("route") = 2,
  kSentryTransactionNameSourceView SWIFT_COMPILE_NAME("view") = 3,
  kSentryTransactionNameSourceComponent SWIFT_COMPILE_NAME("component") = 4,
  kSentryTransactionNameSourceTask SWIFT_COMPILE_NAME("sourceTask") = 5,
};



/// Use this protocol to customize the name used in the automatic
/// UIViewController performance tracker, view hierarchy, and breadcrumbs.
SWIFT_PROTOCOL("_TtP6Sentry32SentryUIViewControllerDescriptor_")
@protocol SentryUIViewControllerDescriptor <NSObject>
/// The custom name of the UIViewController
/// that the Sentry SDK uses for transaction names, breadcrumbs, and
/// view hierarchy.
@property (nonatomic, readonly, copy) NSString * _Nonnull sentryName;
@end

@class SentryDsn;
@class NSURLRequest;

SWIFT_CLASS("_TtC6Sentry23SentryURLRequestFactory")
@interface SentryURLRequestFactory : NSObject
+ (NSURLRequest * _Nullable)envelopeRequestWith:(SentryDsn * _Nonnull)dsn data:(NSData * _Nonnull)data error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
+ (NSURLRequest * _Nullable)envelopeRequestWith:(NSURL * _Nonnull)url data:(NSData * _Nonnull)data authHeader:(NSString * _Nullable)authHeader error:(NSError * _Nullable * _Nullable)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class SentryUserFeedbackWidgetConfiguration;
@class UIButton;
@class SentryUserFeedbackFormConfiguration;
@class SentryUserFeedbackThemeConfiguration;

/// The settings to use for how the user feedback form is presented, what data is required and how
/// it’s submitted, and some auxiliary hooks to customize the workflow.
SWIFT_CLASS("_TtC6Sentry31SentryUserFeedbackConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackConfiguration : NSObject
/// Whether or not to show animations, like for presenting and dismissing the form.
/// note:
/// Default: <code>true</code>.
@property (nonatomic) BOOL animations;
/// Configuration settings specific to the managed widget that displays the UI form.
/// note:
/// Default: <code>nil</code> to use the default widget settings.
@property (nonatomic, copy) void (^ _Nullable configureWidget)(SentryUserFeedbackWidgetConfiguration * _Nonnull);
/// Use a shake gesture to display the form.
/// note:
/// Default: <code>false</code>
/// note:
/// Setting this to true does not disable the widget. In order to do so, you must set <code>SentryUserFeedbackWidgetConfiguration.autoInject</code> to <code>false</code> using the <code>SentryUserFeedbackConfiguration.configureWidget</code> config builder.
@property (nonatomic) BOOL useShakeGesture;
/// Any time a user takes a screenshot, bring up the form with the screenshot attached.
/// note:
/// Default: <code>false</code>
/// note:
/// Setting this to true does not disable the widget. In order to do so, you must set <code>SentryUserFeedbackWidgetConfiguration.autoInject</code> to <code>false</code> using the <code>SentryUserFeedbackConfiguration.configureWidget</code> config builder.
@property (nonatomic) BOOL showFormForScreenshots;
/// Install a hook for the specified button to show the form when it is pressed.
/// note:
/// If this is set, <code>configureWidget</code> is ignored.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, strong) UIButton * _Nullable customButton;
/// Configuration settings specific to the managed UI form to gather user input.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable configureForm)(SentryUserFeedbackFormConfiguration * _Nonnull);
/// Tags to set on the feedback event. This is a dictionary where keys are strings
/// and values can be different data types such as <code>NSNumber</code>, <code>NSString</code>, etc.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) NSDictionary<NSString *, id> * _Nullable tags;
/// Called when the managed feedback form is opened.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable onFormOpen)(void);
/// Called when the managed feedback form is closed.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable onFormClose)(void);
/// Called when feedback is successfully submitted via the managed feedback form, indicating that the
/// user correctly filled out the form and confirmed submission. The data dictionary contains the feedback details.
/// note:
/// Default: <code>nil</code>
/// note:
/// This is unrelated to <code>SentrySDK.captureUserFeedback</code> and is not called when using
/// that function.
@property (nonatomic, copy) void (^ _Nullable onSubmitSuccess)(NSDictionary<NSString *, id> * _Nonnull);
/// Called when there is an error submitting feedback via the managed feedback form, like missing
/// required inputs. The error object contains details of the error.
/// note:
/// Default: <code>nil</code>
/// note:
/// This is unrelated to <code>SentrySDK.captureUserFeedback</code> and is not called when using
/// that function.
@property (nonatomic, copy) void (^ _Nullable onSubmitError)(NSError * _Nonnull);
/// Builder for default/light theme overrides.
/// note:
/// On iOS versions predating dark mode (≤12) this is the only theme override used. Apps
/// running on later versions that include dark mode should also consider <code>configureDarkTheme</code>.
/// note:
/// Default: <code>nil</code>
@property (nonatomic, copy) void (^ _Nullable configureTheme)(SentryUserFeedbackThemeConfiguration * _Nonnull);
/// Builder for dark mode theme overrides. If your app does not deploy a different theme for dark
/// mode, but you still want to override some theme settings, assign the same builder to this
/// property as you do for <code>configureTheme</code>.
/// note:
/// Default: <code>nil</code>
/// note:
/// Only applies to iOS ≤12.
@property (nonatomic, copy) void (^ _Nullable configureDarkTheme)(SentryUserFeedbackThemeConfiguration * _Nonnull);
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Settings to control the behavior and appearance of the UI form.
SWIFT_CLASS("_TtC6Sentry35SentryUserFeedbackFormConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackFormConfiguration : NSObject
/// Sets the email and name field text content to the values contained in the current scope’s
/// <code>SentryUser</code> instance, if any.
/// seealso:
/// <code>- [SentrySDK setUser:]</code>
/// note:
/// Default: <code>true</code>
@property (nonatomic) BOOL useSentryUser;
/// Displays the Sentry logo inside of the form.
/// note:
/// Default: <code>true</code>
@property (nonatomic) BOOL showBranding;
/// The title at the top of the feedback form.
/// note:
/// Default: <code>"Report a Bug"</code>
@property (nonatomic, copy) NSString * _Nonnull formTitle;
/// The label for the feedback description input field.
/// note:
/// Default: <code>"Description"</code>
@property (nonatomic, copy) NSString * _Nonnull messageLabel;
/// The placeholder for the feedback description input field.
/// note:
/// Default: <code>"What's the bug? What did you expect?"</code>
@property (nonatomic, copy) NSString * _Nonnull messagePlaceholder;
@property (nonatomic, copy) NSString * _Nonnull messageTextViewAccessibilityLabel;
/// The label shown next to an input field that is required.
/// note:
/// Default: <code>"(Required)"</code>
@property (nonatomic, copy) NSString * _Nonnull isRequiredLabel;
/// The label of the button to remove the screenshot from the form.
/// note:
/// Default: <code>"Remove screenshot"</code>
/// note:
/// ignored if <code>SentryUserFeedbackConfiguration.showFormForScreenshots</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull removeScreenshotButtonLabel;
@property (nonatomic, copy) NSString * _Nonnull removeScreenshotButtonAccessibilityLabel;
/// Requires the name field on the feedback form to be filled in.
/// note:
/// Default: <code>false</code>
@property (nonatomic) BOOL isNameRequired;
/// Displays the name field on the feedback form.
/// note:
/// Default: <code>true</code>
/// note:
/// ignored if <code>isNameRequired</code> is <code>true</code>.
@property (nonatomic) BOOL showName;
/// The label of the name input field.
/// note:
/// Default: <code>"Name"</code>
/// note:
/// ignored if <code>showName</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull nameLabel;
/// The placeholder for the name input field.
/// note:
/// Default: <code>"Your Name"</code>
/// note:
/// ignored if <code>showName</code> is <code>false</code>.
@property (nonatomic, copy) NSString * _Nonnull namePlaceholder;
@property (nonatomic, copy) NSString * _Nonnull nameTextFieldAccessibilityLabel;
/// Requires the email field on the feedback form to be filled in.
/// note:
/// Default: <code>false</code>
@property (nonatomic) BOOL isEmailRequired;
/// Displays the email field on the feedback form.
/// note:
/// Default: <code>true</code>
/// note:
/// ignored if <code>isEmailRequired</code> is <code>true</code>.
@property (nonatomic) BOOL showEmail;
/// The label of the email input field.
/// note:
/// Default: <code>"Email"</code>
@property (nonatomic, copy) NSString * _Nonnull emailLabel;
/// The placeholder for the email input field.
/// note:
/// Default: <code>"your.email@example.org"</code>
@property (nonatomic, copy) NSString * _Nonnull emailPlaceholder;
@property (nonatomic, copy) NSString * _Nonnull emailTextFieldAccessibilityLabel;
/// The label of the submit button used in the feedback form.
/// note:
/// Default: <code>"Send Bug Report"</code>
@property (nonatomic, copy) NSString * _Nonnull submitButtonLabel;
/// The accessibility label of the form’s “Submit” button.
/// note:
/// Default: <code>submitButtonLabel</code> value
@property (nonatomic, copy) NSString * _Nonnull submitButtonAccessibilityLabel;
/// The label of cancel buttons used in the feedback form.
/// note:
/// Default: <code>"Cancel"</code>
@property (nonatomic, copy) NSString * _Nonnull cancelButtonLabel;
/// The accessibility label of the form’s “Cancel” button.
/// note:
/// Default: <code>cancelButtonLabel</code> value
@property (nonatomic, copy) NSString * _Nonnull cancelButtonAccessibilityLabel;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry31SentryUserFeedbackFormViewModel") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackFormViewModel : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@protocol SentryUserFeedbackIntegrationDriverDelegate;

/// An integration managing a workflow for end users to report feedback via Sentry.
/// note:
/// The default method to show the feedback form is via a floating widget placed in the bottom trailing corner of the screen. See the configuration classes for alternative options.
SWIFT_CLASS("_TtC6Sentry35SentryUserFeedbackIntegrationDriver") SWIFT_AVAILABILITY(ios_app_extension,unavailable) SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackIntegrationDriver : NSObject
- (nonnull instancetype)initWithConfiguration:(SentryUserFeedbackConfiguration * _Nonnull)configuration delegate:(id <SentryUserFeedbackIntegrationDriverDelegate> _Nonnull)delegate screenshotSource:(SentryScreenshotSource * _Nonnull)screenshotSource OBJC_DESIGNATED_INITIALIZER;
- (void)showWidget;
- (void)hideWidget;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@class UIPresentationController;

SWIFT_AVAILABILITY(ios_app_extension,unavailable) SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackIntegrationDriver (SWIFT_EXTENSION(Sentry)) <UIAdaptivePresentationControllerDelegate>
- (void)presentationControllerDidDismiss:(UIPresentationController * _Nonnull)presentationController;
@end



SWIFT_PROTOCOL("_TtP6Sentry43SentryUserFeedbackIntegrationDriverDelegate_") SWIFT_AVAILABILITY(ios,introduced=13.0)
@protocol SentryUserFeedbackIntegrationDriverDelegate <NSObject>
- (void)captureWithFeedback:(SentryFeedback * _Nonnull)feedback;
@end

@class UIColor;
@class SentryFormElementOutlineStyle;

/// Settings for overriding theming components for the User Feedback Widget and Form.
SWIFT_CLASS("_TtC6Sentry36SentryUserFeedbackThemeConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackThemeConfiguration : NSObject
/// The font family to use for form text elements.
/// note:
/// Defaults to the system default, if this property is <code>nil</code>.
@property (nonatomic, copy) NSString * _Nullable fontFamily;
/// Foreground text color of the widget and form.
/// note:
/// Default light mode: <code>rgb(43, 34, 51)</code>; dark mode: <code>rgb(235, 230, 239)</code>
@property (nonatomic, strong) UIColor * _Nonnull foreground;
/// Background color of the widget and form.
/// note:
/// Default light mode: <code>rgb(255, 255, 255)</code>; dark mode: <code>rgb(41, 35, 47)</code>
@property (nonatomic, strong) UIColor * _Nonnull background;
/// Foreground color for the form submit button.
/// note:
/// Default: <code>rgb(255, 255, 255)</code> for both dark and light modes
@property (nonatomic, strong) UIColor * _Nonnull submitForeground;
/// Background color for the form submit button in light and dark modes.
/// note:
/// Default: <code>rgb(88, 74, 192)</code> for both light and dark modes
@property (nonatomic, strong) UIColor * _Nonnull submitBackground;
/// Foreground color for the cancel and screenshot buttons.
/// note:
/// Default: Same as <code>foreground</code> for both dark and light modes
@property (nonatomic, strong) UIColor * _Nonnull buttonForeground;
/// Background color for the form cancel and screenshot buttons in light and dark modes.
/// note:
/// Default: Transparent for both light and dark modes
@property (nonatomic, strong) UIColor * _Nonnull buttonBackground;
/// Color used for error-related components (such as text color when there’s an error submitting feedback).
/// note:
/// Default light mode: <code>rgb(223, 51, 56)</code>; dark mode: <code>rgb(245, 84, 89)</code>
@property (nonatomic, strong) UIColor * _Nonnull errorColor;
/// Options for styling the outline of input elements and buttons in the feedback form.
@property (nonatomic, strong) SentryFormElementOutlineStyle * _Nonnull outlineStyle;
/// Background color to use for text inputs in the feedback form.
@property (nonatomic, strong) UIColor * _Nonnull inputBackground;
/// Background color to use for text inputs in the feedback form.
@property (nonatomic, strong) UIColor * _Nonnull inputForeground;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtCC6Sentry36SentryUserFeedbackThemeConfiguration29SentryFormElementOutlineStyle")
@interface SentryFormElementOutlineStyle : NSObject
- (nonnull instancetype)initWithColor:(UIColor * _Nonnull)color cornerRadius:(CGFloat)cornerRadius outlineWidth:(CGFloat)outlineWidth OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Settings for whether to show the widget and how it should appear.
SWIFT_CLASS("_TtC6Sentry37SentryUserFeedbackWidgetConfiguration") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface SentryUserFeedbackWidgetConfiguration : NSObject
/// Automatically inject the widget button into the application UI.
/// note:
/// Default: <code>true</code>
/// warning:
/// Does not currently work for SwiftUI apps. See https://docs.sentry.io/platforms/apple/user-feedback/#swiftui
@property (nonatomic) BOOL autoInject;
/// The label of the injected button that opens up the feedback form when clicked. If <code>nil</code>, no
/// text is displayed and only the icon image is shown.
/// note:
/// Default: <code>"Report a Bug"</code>
@property (nonatomic, copy) NSString * _Nullable labelText;
/// Whether or not to show our icon along with the text in the button.
/// note:
/// Default: <code>true</code>.
@property (nonatomic) BOOL showIcon;
/// The accessibility label of the injected button that opens up the feedback form when clicked.
/// note:
/// Default: <code>labelText</code> value
@property (nonatomic, copy) NSString * _Nullable widgetAccessibilityLabel;
/// The window level of the widget.
/// note:
/// Default: <code>UIWindow.Level.normal + 1</code>
@property (nonatomic) UIWindowLevel windowLevel;
/// The location for positioning the widget.
/// note:
/// Default: <code>[.bottom, .right]</code>
@property (nonatomic) NSDirectionalRectEdge location;
/// The distance to use from the widget button to the <code>safeAreaLayoutGuide</code> of the root view in the widget’s container window.
/// note:
/// Default: <code>UIOffset.zero</code>
@property (nonatomic) UIOffset layoutUIOffset;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC6Sentry15SentryVideoInfo")
@interface SentryVideoInfo : NSObject
@property (nonatomic, readonly, copy) NSURL * _Nonnull path;
@property (nonatomic, readonly, copy) NSDate * _Nonnull start;
@property (nonatomic, readonly, copy) NSDate * _Nonnull end;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry27SentryViewHierarchyProvider")
@interface SentryViewHierarchyProvider : NSObject
- (nonnull instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper applicationProvider:(id <SentryApplication> _Nullable (^ _Nonnull)(void))applicationProvider OBJC_DESIGNATED_INITIALIZER;
/// Whether we should add <code>accessibilityIdentifier</code> to the view hierarchy.
@property (nonatomic) BOOL reportAccessibilityIdentifier;
/// Get the view hierarchy in a json format.
/// Always runs in the main thread.
- (NSData * _Nullable)appViewHierarchyFromMainThread SWIFT_WARN_UNUSED_RESULT;
- (NSData * _Nullable)appViewHierarchy SWIFT_WARN_UNUSED_RESULT;
- (BOOL)saveViewHierarchy:(NSString * _Nonnull)filePath;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL("_TtP6Sentry28SentryViewScreenshotProvider_")
@protocol SentryViewScreenshotProvider <NSObject>
- (void)imageWithView:(UIView * _Nonnull)view onComplete:(void (^ _Nonnull)(UIImage * _Nonnull))onComplete;
@end


SWIFT_CLASS("_TtC6Sentry22SentryViewPhotographer")
@interface SentryViewPhotographer : NSObject <SentryViewScreenshotProvider>
/// Creates a view photographer used to convert a view hierarchy to an image.
/// note:
/// The option <code>enableMaskRendererV2</code> is an internal flag, which is not part of the public API.
/// Therefore, it is not part of the the <code>redactOptions</code> parameter, to not further expose it.
/// \param renderer Implementation of the view renderer.
///
/// \param redactOptions Options provided to redact sensitive information.
///
/// \param enableMaskRendererV2 Flag to enable experimental view renderer.
///
- (nonnull instancetype)initWithRenderer:(id <SentryViewRenderer> _Nonnull)renderer redactOptions:(id <SentryRedactOptions> _Nonnull)redactOptions enableMaskRendererV2:(BOOL)enableMaskRendererV2 OBJC_DESIGNATED_INITIALIZER;
- (void)imageWithView:(UIView * _Nonnull)view onComplete:(void (^ _Nonnull)(UIImage * _Nonnull))onComplete;
- (UIImage * _Nonnull)imageWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (void)addIgnoreClasses:(NSArray<Class> * _Nonnull)classes;
- (void)addRedactClasses:(NSArray<Class> * _Nonnull)classes;
- (void)setIgnoreContainerClass:(Class _Nonnull)containerClass;
- (void)setRedactContainerClass:(Class _Nonnull)containerClass;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_CLASS("_TtC6Sentry20SentryViewRendererV2")
@interface SentryViewRendererV2 : NSObject <SentryViewRenderer>
- (nonnull instancetype)initWithEnableFastViewRendering:(BOOL)enableFastViewRendering OBJC_DESIGNATED_INITIALIZER;
- (UIImage * _Nonnull)renderWithView:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC6Sentry27SentryViewScreenshotOptions")
@interface SentryViewScreenshotOptions : NSObject <SentryRedactOptions>
/// Enables the up to 5x faster new view renderer.
/// Enabling this flag will reduce the amount of time it takes to render the screenshot on the main thread, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// <em>up to 4-5x faster rendering</em> (reducing <code>~160ms</code> to <code>~36ms</code>) on older devices.
/// experiment:
/// In case you are noticing issues with the new view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>.
/// Eventually, we will remove this feature flag and use the new view renderer by default.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL enableViewRendererV2;
/// Enables up to 5x faster but incomplete view rendering.
/// Enabling this flag will reduce the amount of time it takes to render the screenshot, therefore reducing
/// interruptions and visual lag. <a href="https://github.com/getsentry/sentry-cocoa/pull/4940">Our benchmarks</a> have shown a significant improvement of
/// up to <em>5x faster render times</em> (reducing <code>~160ms</code> to <code>~30ms</code>) on older devices.
/// This flag controls the way the view hierarchy is drawn into a graphics context. By default, the view hierarchy is drawn using
/// the <code>UIView.drawHierarchy(in:afterScreenUpdates:)</code> method, which is the most complete way to render the view hierarchy. However,
/// this method can be slow, especially when rendering complex views, therefore enabling this flag will switch to render the underlying <code>CALayer</code> instead.
/// note:
/// This flag can only be used together with <code>enableViewRendererV2</code> with up to 20% faster render times.
/// warning:
/// Rendering the view hiearchy using the <code>CALayer.render(in:)</code> method can lead to rendering issues, especially when using custom views.
/// For complete rendering, it is recommended to set this option to <code>false</code>. In case you prefer performance over completeness, you can
/// set this option to <code>true</code>.
/// experiment:
/// This is an experimental feature and is therefore disabled by default. In case you are noticing issues with the experimental
/// view renderer, please report the issue on <a href="https://github.com/getsentry/sentry-cocoa">GitHub</a>. Eventually, we will
/// mark this feature as stable and remove the experimental flag, but will keep it disabled by default.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL enableFastViewRendering;
/// Indicates whether the screenshot should redact all non-bundled image
/// in the app by drawing a black rectangle over it.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL maskAllImages;
/// Indicates whether the screenshot should redact all text in the app
/// by drawing a black rectangle over it.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic) BOOL maskAllText;
/// A list of custom UIView subclasses that need
/// to be masked during the screenshot.
/// By default Sentry already mask text and image elements from UIKit
/// Every child of a view that is redacted will also be redacted.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull maskedViewClasses;
/// A list of custom UIView subclasses to be ignored
/// during masking step of the screenshot.
/// The views of given classes will not be redacted but their children may be.
/// This property has precedence over <code>redactViewTypes</code>.
/// note:
/// See <code>SentryViewScreenshotOptions.init</code> for the default value.
@property (nonatomic, copy) NSArray<Class> * _Nonnull unmaskedViewClasses;
/// Initialize screenshot options disabled
/// note:
/// This initializer is added for Objective-C compatibility, as constructors with default values
/// are not supported in Objective-C.
/// note:
/// See <code>SentryViewScreenshotOptions.DefaultValues</code> for the default values of each parameter.
- (nonnull instancetype)init;
/// Initializes a new instance of <code>SentryViewScreenshotOptions</code> with the specified parameters.
/// note:
/// See <code>SentryViewScreenshotOptions.DefaultValues</code> for the default values of each parameter.
/// \param enableViewRendererV2 Enables the up to 5x faster view renderer.
///
/// \param enableFastViewRendering Enables faster but incomplete view rendering. See <code>SentryViewScreenshotOptions.enableFastViewRendering</code> for more information.
///
/// \param maskAllText Flag to redact all text in the app by drawing a rectangle over it.
///
/// \param maskAllImages Flag to redact all images in the app by drawing a rectangle over it.
///
/// \param maskedViewClasses A list of custom UIView subclasses that need to be masked during the screenshot.
///
/// \param unmaskedViewClasses A list of custom UIView subclasses to be ignored during masking step of the screenshot.
///
- (nonnull instancetype)initWithEnableViewRendererV2:(BOOL)enableViewRendererV2 enableFastViewRendering:(BOOL)enableFastViewRendering maskAllText:(BOOL)maskAllText maskAllImages:(BOOL)maskAllImages maskedViewClasses:(NSArray<Class> * _Nonnull)maskedViewClasses unmaskedViewClasses:(NSArray<Class> * _Nonnull)unmaskedViewClasses OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end



SWIFT_CLASS("_TtC6Sentry44SentryWatchdogTerminationAttributesProcessor")
@interface SentryWatchdogTerminationAttributesProcessor : NSObject
- (nonnull instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper * _Nonnull)dispatchQueueWrapper scopePersistentStore:(SentryScopePersistentStore * _Nonnull)scopePersistentStore OBJC_DESIGNATED_INITIALIZER;
- (void)clear;
- (void)setContext:(NSDictionary<NSString *, NSDictionary<NSString *, id> *> * _Nullable)context;
- (void)setUser:(SentryUser * _Nullable)user;
- (void)setDist:(NSString * _Nullable)dist;
- (void)setEnvironment:(NSString * _Nullable)environment;
- (void)setTags:(NSDictionary<NSString *, NSString *> * _Nullable)tags;
- (void)setExtras:(NSDictionary<NSString *, id> * _Nullable)extras;
- (void)setFingerprint:(NSArray<NSString *> * _Nullable)fingerprint;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIViewController;

SWIFT_CLASS("_TtC6Sentry15SwiftDescriptor")
@interface SwiftDescriptor : NSObject
+ (NSString * _Nonnull)getObjectClassName:(id _Nonnull)object SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nonnull)getViewControllerClassName:(UIViewController * _Nonnull)object SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)getSwiftErrorDescription:(NSError * _Nonnull)error SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface UIApplication (SWIFT_EXTENSION(Sentry)) <SentryApplication>
- (NSArray<UIWindow *> * _Nullable)getWindows SWIFT_WARN_UNUSED_RESULT;
- (NSArray<NSString *> * _Nullable)relevantViewControllersNames SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) UIApplicationState unsafeApplicationState;
@property (nonatomic, readonly) BOOL mainThread_isActive;
@end






@class NSURLSessionTask;

SWIFT_CLASS("_TtC6Sentry20URLSessionTaskHelper")
@interface URLSessionTaskHelper : NSObject
+ (NSString * _Nullable)getGraphQLOperationNameFrom:(NSURLSessionTask * _Nullable)task SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class NSURLQueryItem;

SWIFT_CLASS("_TtC6Sentry12UrlSanitized")
@interface UrlSanitized : NSObject
@property (nonatomic, readonly, copy) NSString * _Nullable query;
@property (nonatomic, readonly, copy) NSArray<NSURLQueryItem *> * _Nullable queryItems;
@property (nonatomic, readonly, copy) NSString * _Nullable fragment;
- (nonnull instancetype)initWithURL:(NSURL * _Nonnull)url OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSString * _Nullable sanitizedUrl;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// Adds additional information about what happened to an event.
/// @deprecated Use <code>SentryFeedback</code>.
SWIFT_CLASS_NAMED("UserFeedback") SWIFT_DEPRECATED_MSG("Use SentryFeedback.")
@interface SentryUserFeedback : NSObject <SentrySerializable>
/// The eventId of the event to which the user feedback is associated.
@property (nonatomic, readonly, strong) SentryId * _Nonnull eventId;
/// The name of the user.
@property (nonatomic, copy) NSString * _Nonnull name;
/// The email of the user.
@property (nonatomic, copy) NSString * _Nonnull email;
/// Comments of the user about what happened.
@property (nonatomic, copy) NSString * _Nonnull comments;
/// Initializes SentryUserFeedback and sets the required eventId.
/// \param eventId The eventId of the event to which the user feedback is associated.
///
- (nonnull instancetype)initWithEventId:(SentryId * _Nonnull)eventId OBJC_DESIGNATED_INITIALIZER;
- (NSDictionary<NSString *, id> * _Nonnull)serialize SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

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

#else
#error unsupported Swift architecture
#endif
