#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
#ifndef PENNAVUI_SWIFT_H
#define PENNAVUI_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

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

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

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

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

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# 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 CoreData;
@import CoreFoundation;
@import CoreLocation;
@import Foundation;
@import ObjectiveC;
@import Penguin;
@import QuartzCore;
@import UIKit;
@import UIUtilities;
#endif

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

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

#if defined(__OBJC__)

/// Asynchronous operation base class
/// This is abstract to class performs all of the necessary KVN of <code>isFinished</code> and
/// <code>isExecuting</code> for a concurrent <code>Operation</code> subclass. You can subclass this and
/// implement asynchronous operations. All you must do is:
/// <ul>
///   <li>
///     override <code>main()</code> with the tasks that initiate the asynchronous task;
///   </li>
///   <li>
///     call <code>completeOperation()</code> function when the asynchronous task is done;
///   </li>
///   <li>
///     optionally, periodically check <code>self.cancelled</code> status, performing any clean-up
///     necessary and then ensuring that <code>completeOperation()</code> is called; or
///     override <code>cancel</code> method, calling <code>super.cancel()</code> and then cleaning-up
///     and ensuring <code>completeOperation()</code> is called.
///   </li>
/// </ul>
SWIFT_CLASS("_TtC8PenNavUI21AsynchronousOperation")
@interface AsynchronousOperation : NSOperation
@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous;
@property (nonatomic, readonly, getter=isExecuting) BOOL executing;
@property (nonatomic, readonly, getter=isFinished) BOOL finished;
- (void)start;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class UITapGestureRecognizer;
@class NSCoder;
/// A view that presents a backdrop interface behind a panel.
SWIFT_CLASS_NAMED("BackdropView")
@interface FloatingPanelBackdropView : UIView
/// The gesture recognizer for tap gestures to dismiss a panel.
/// By default, this gesture recognizer is disabled as following the default behavior of iOS modalities.
/// To dismiss a panel by tap gestures on the backdrop, <code>dismissalTapGestureRecognizer.isEnabled</code> is set to true.
@property (nonatomic, strong) UITapGestureRecognizer * _Nonnull dismissalTapGestureRecognizer;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

@class NSEntityDescription;
@class NSManagedObjectContext;
SWIFT_CLASS_NAMED("CachedVenue")
@interface CachedVenue : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSString;
@interface CachedVenue (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t id;
@property (nonatomic, copy) NSString * _Nullable coverImage;
@property (nonatomic, copy) NSString * _Nullable address;
@property (nonatomic, copy) NSString * _Nullable buildingNumber;
@property (nonatomic, copy) NSString * _Nullable phone;
@property (nonatomic, copy) NSString * _Nullable email;
@property (nonatomic, copy) NSString * _Nullable website;
@property (nonatomic) int16_t floorCount;
@end

SWIFT_CLASS_NAMED("CampaignTracking")
@interface CampaignTracking : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;
@interface CampaignTracking (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t campaignId;
@property (nonatomic, copy) NSDate * _Nullable lastNotificationDate;
@end

SWIFT_CLASS_NAMED("FavoriteCacheData")
@interface FavoriteCacheData : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class SharedLocationCacheData;
@interface FavoriteCacheData (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable createDate;
@property (nonatomic, copy) NSString * _Nullable deviceId;
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic) double distance;
@property (nonatomic, copy) NSString * _Nullable id;
@property (nonatomic, copy) NSString * _Nullable label;
@property (nonatomic) int16_t poiId;
@property (nonatomic, copy) NSString * _Nullable userName;
@property (nonatomic, strong) SharedLocationCacheData * _Nullable location;
@end

enum FloatingPanelLayoutReferenceGuide : NSInteger;
@class FloatingPanelController;
enum FloatingPanelPosition : NSInteger;
@class NSLayoutConstraint;
/// An interface for implementing custom layout anchor objects.
SWIFT_PROTOCOL("_TtP8PenNavUI28FloatingPanelLayoutAnchoring_")
@protocol FloatingPanelLayoutAnchoring
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)fpc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

@class UILayoutGuide;
enum FloatingPanelLayoutContentBoundingGuide : NSInteger;
/// An object that defines how to settles a panel with a layout guide of a content view.
SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelAdaptiveLayoutAnchor")
@interface FloatingPanelAdaptiveLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified offset by an absolute value to display a panel with its intrinsic content size.
/// The offset is an amount to offset a position of panel that displays the entire content of the specified guide from an edge of
/// the reference guide.  The edge refers to a panel positioning.
/// <code>contentBoundingGuide</code> restricts the content size which a panel displays. For example, given <code>referenceGuide</code> is <code>.superview</code> and <code>contentBoundingGuide</code> is <code>.safeArea</code> for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of <code>referenceGuide</code> and <code>contentBoundingGuide</code> are specified with the same rectangle area.
/// warning:
/// If <code>contentBoundingGuide</code> is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content.
/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param contentLayout The content layout guide to calculate the content size in the panel.
///
/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to <code>.safeArea</code>, the panel content displays inside the safe area of its <code>FloatingPanelController</code>‘s view. This argument doesn’t limit its content size.
///
/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel).
///
- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified offset by a fractional value to display a panel with its intrinsic content size.
/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content
/// is displayed and 0.5 represents the half of content is displayed.
/// <code>contentBoundingGuide</code> restricts the content size which a panel displays. For example, given <code>referenceGuide</code> is <code>.superview</code> and <code>contentBoundingGuide</code> is <code>.safeArea</code> for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of <code>referenceGuide</code> and <code>contentBoundingGuide</code> are specified with the same rectangle area.
/// warning:
/// If <code>contentBoundingGuide</code> is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content.
/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param contentLayout The content layout guide to calculate the content size in the panel.
///
/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to <code>.safeArea</code>, the panel content displays inside the safe area of its <code>FloatingPanelController</code>‘s view. This argument doesn’t limit its content size.
///
/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel).
///
- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
@property (nonatomic, readonly) enum FloatingPanelLayoutContentBoundingGuide contentBoundingGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelAdaptiveLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

@class FloatingPanelState;
/// An interface for generating behavior information to fine-tune the behavior of a panel.
SWIFT_PROTOCOL("_TtP8PenNavUI21FloatingPanelBehavior_")
@protocol FloatingPanelBehavior
@optional
/// A floating-point value that determines the rate of oscillation magnitude reduction after the user lifts their finger.
/// The oscillation magnitude to attract a panel to an anchor can be adjusted this value between 0.979 and 1.0
/// in increments of 0.001. When this value is around 0.979, the attraction uses a critically damped spring system.
/// When this value is between 0.978 and 1.0, it uses a underdamped spring system with a damping ratio computed by
/// this value. You shouldn’t return less than 0.979 because the system is overdamped. If the pan gesture’s velocity
/// is less than 300, this value is ignored and a panel applies a critically damped system.
@property (nonatomic, readonly) CGFloat springDecelerationRate;
/// A floating-point value that determines the approximate time until a panel stops to an anchor after the user lifts their finger.
@property (nonatomic, readonly) CGFloat springResponseTime;
/// Returns a deceleration rate to calculate a target position projected a dragging momentum.
/// The default implementation of this method returns the normal deceleration rate of UIScrollView.
@property (nonatomic, readonly) CGFloat momentumProjectionRate;
/// Asks the behavior if a panel should project a momentum of a user interaction to move the
/// proposed state.
/// The default implementation of this method returns <code>false</code>. This method is called for called
/// for all states defined by the current layout object.
- (BOOL)shouldProjectMomentum:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)proposedState SWIFT_WARN_UNUSED_RESULT;
/// Returns the progress to redirect to the previous position.
/// The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates a panel is impossible to move to the next position. The default value is 0.5. Values less than 0.0 and greater than 1.0 are pinned to those limits.
- (CGFloat)redirectionalProgress:(FloatingPanelController * _Nonnull)fpc from:(FloatingPanelState * _Nonnull)from to:(FloatingPanelState * _Nonnull)to SWIFT_WARN_UNUSED_RESULT;
/// Asks the behavior whether the rubber band effect is enabled in moving over a given edge of the surface view.
/// This method allows a panel to activate the rubber band effect to a given edge of the surface view. By default, the effect is disabled.
- (BOOL)allowsRubberBandingFor:(UIRectEdge)edge SWIFT_WARN_UNUSED_RESULT;
/// Returns the velocity threshold for the default interactive removal gesture.
/// In case <code>FloatingPanel/FloatingPanelControllerDelegate/floatingPanel(_:shouldRemoveAt:with:)</code> is implemented, this value will not be used. The default value of <code>FloatingPanelDefaultBehavior</code> is 5.5
@property (nonatomic, readonly) CGFloat removalInteractionVelocityThreshold;
@end

/// An interface for generating layout information for a panel.
SWIFT_PROTOCOL("_TtP8PenNavUI19FloatingPanelLayout_")
@protocol FloatingPanelLayout
/// Returns the position of a panel in a <code>FloatingPanelController</code> view .
@property (nonatomic, readonly) enum FloatingPanelPosition position;
/// Returns the initial state when a panel is presented.
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState;
/// Returns the layout anchors to specify the snapping locations for each state.
@property (nonatomic, readonly, copy) NSDictionary<FloatingPanelState *, id <FloatingPanelLayoutAnchoring>> * _Nonnull anchors;
@optional
/// Returns layout constraints to determine the cross dimension of a panel.
- (NSArray<NSLayoutConstraint *> * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
/// Returns the alpha value of the backdrop of a panel for each state.
- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

/// A layout object that lays out a panel in bottom sheet style.
SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelBottomLayout")
@interface FloatingPanelBottomLayout : NSObject <FloatingPanelLayout>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState;
@property (nonatomic, readonly, copy) NSDictionary<FloatingPanelState *, id <FloatingPanelLayoutAnchoring>> * _Nonnull anchors;
@property (nonatomic, readonly) enum FloatingPanelPosition position;
- (NSArray<NSLayoutConstraint *> * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

@protocol FloatingPanelControllerDelegate;
@class FloatingPanelSurfaceView;
@class UIScrollView;
@class FloatingPanelPanGestureRecognizer;
enum ContentInsetAdjustmentBehavior : NSInteger;
enum ContentMode : NSInteger;
@class NSBundle;
@protocol UIViewControllerTransitionCoordinator;
@class UITraitCollection;
/// A container view controller to display a panel to present contents in parallel as a user wants.
SWIFT_CLASS("_TtC8PenNavUI23FloatingPanelController")
@interface FloatingPanelController : UIViewController
/// The delegate of a panel controller object.
@property (nonatomic, weak) id <FloatingPanelControllerDelegate> _Nullable delegate;
/// Returns the surface view managed by the controller object. It’s the same as <code>self.view</code>.
@property (nonatomic, readonly, strong) FloatingPanelSurfaceView * _Null_unspecified surfaceView;
/// Returns the backdrop view managed by the controller object.
@property (nonatomic, readonly, strong) FloatingPanelBackdropView * _Null_unspecified backdropView;
/// Returns the scroll view that the controller tracks.
@property (nonatomic, readonly, weak) UIScrollView * _Nullable trackingScrollView;
@property (nonatomic, readonly, strong) FloatingPanelPanGestureRecognizer * _Nonnull panGestureRecognizer;
/// The current position of a panel controller’s contents.
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull state;
/// A Boolean value indicating whether a panel controller is attracting the surface to a state anchor.
@property (nonatomic, readonly) BOOL isAttracting;
/// The layout object that the controller manages
/// You need to call <code>invalidateLayout()</code> if you want to apply a new layout object into the panel
/// immediately.
@property (nonatomic, strong) id <FloatingPanelLayout> _Nonnull layout;
/// The behavior object that the controller manages
@property (nonatomic, strong) id <FloatingPanelBehavior> _Nonnull behavior;
/// The content insets of the tracking scroll view derived from this safe area
@property (nonatomic, readonly) UIEdgeInsets adjustedContentInsets;
/// The behavior for determining the adjusted content offsets.
/// This property specifies how the content area of the tracking scroll view is modified using <code>adjustedContentInsets</code>. The default value of this property is FloatingPanelController.ContentInsetAdjustmentBehavior.always.
@property (nonatomic) enum ContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior;
/// A Boolean value that determines whether the removal interaction is enabled.
@property (nonatomic, setter=setRemovalInteractionEnabled:) BOOL isRemovalInteractionEnabled;
/// The view controller responsible for the content portion of a panel.
@property (nonatomic, strong) UIViewController * _Nullable contentViewController;
/// Constants that define how a panel content fills in the surface.
@property (nonatomic) enum ContentMode contentMode;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
/// Initialize a newly created panel controller.
- (nonnull instancetype)initWithDelegate:(id <FloatingPanelControllerDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Creates the view that the controller manages.
- (void)loadView;
- (void)viewDidLayoutSubviews;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator> _Nonnull)coordinator;
- (void)willTransitionToTraitCollection:(UITraitCollection * _Nonnull)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator> _Nonnull)coordinator;
- (void)viewWillDisappear:(BOOL)animated;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarStyle;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarHidden;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForScreenEdgesDeferringSystemGestures;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForHomeIndicatorAutoHidden;
/// Shows the surface view at the initial position defined by the current layout
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)show:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Hides the surface view to the hidden position
- (void)hide:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Adds the view managed by the controller as a child of the specified view controller.
/// \param parent A parent view controller object that displays FloatingPanelController’s view. A container view controller object isn’t applicable.
///
/// \param viewIndex Insert the surface view managed by the controller below the specified view index. By default, the surface view will be added to the end of the parent list of subviews.
///
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)addPanelToParent:(UIViewController * _Nonnull)parent at:(NSInteger)viewIndex animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Removes the controller and the managed view from its parent view controller
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the view controller is dismissed. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)removePanelFromParent:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Moves the position to the specified position.
/// \param to Pass a FloatingPanelPosition value to move the surface view to the position.
///
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the view controller has finished moving. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)moveToState:(FloatingPanelState * _Nonnull)to animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Tracks the specified scroll view to correspond with the scroll.
/// \param scrollView Specify a scroll view to continuously and seamlessly work in concert with interactions of the surface view
///
- (void)trackScrollView:(UIScrollView * _Nonnull)scrollView;
/// Cancel tracking the specify scroll view.
- (void)untrackScrollView:(UIScrollView * _Nonnull)scrollView;
- (BOOL)accessibilityPerformEscape SWIFT_WARN_UNUSED_RESULT;
/// Invalidates all layout information of the panel and apply the <code>layout</code> property into it immediately.
/// This lays out subviews of the view that the controller manages with the <code>layout</code> property by
/// calling the view’s <code>layoutIfNeeded()</code>. Thus this method can be called in an animation block to
/// animate the panel’s changes.
/// If the controller has a delegate object, this will lay them out using the layout object returned by
/// <code>floatingPanel(_:layoutFor:)</code> delegate method for the current <code>UITraitCollection</code>.
- (void)invalidateLayout;
/// Returns the surface’s position in a panel controller’s view for the specified state.
/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned
/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point
/// of the top-left corner of the surface.
- (CGPoint)surfaceLocationFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
/// The surface’s position in a panel controller’s view.
/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned
/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point
/// of the top-left corner of the surface.
@property (nonatomic) CGPoint surfaceLocation;
@end

/// Constants indicating how safe area insets are added to the adjusted content inset.
typedef SWIFT_ENUM(NSInteger, ContentInsetAdjustmentBehavior, open) {
  ContentInsetAdjustmentBehaviorAlways = 0,
  ContentInsetAdjustmentBehaviorNever = 1,
};

/// A flag used to determine how the controller object lays out the content view when the surface position changes.
typedef SWIFT_ENUM(NSInteger, ContentMode, open) {
/// The option to fix the content to keep the height of the top most position.
  ContentModeStatic = 0,
/// The option to scale the content to fit the bounds of the root view by changing the surface position.
  ContentModeFitToBounds = 1,
};

@class UIViewPropertyAnimator;
/// A set of methods implemented by the delegate of a panel controller allows the adopting delegate to respond to
/// messages from the FloatingPanelController class and thus respond to, and in some affect, operations such as
/// dragging, attracting a panel, layout of a panel and the content, and transition animations.
SWIFT_PROTOCOL("_TtP8PenNavUI31FloatingPanelControllerDelegate_")
@protocol FloatingPanelControllerDelegate
@optional
/// Returns a FloatingPanelLayout object. If you use the default one, you can use a <code>FloatingPanelBottomLayout</code> object.
- (id <FloatingPanelLayout> _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForTraitCollection:(UITraitCollection * _Nonnull)newCollection SWIFT_WARN_UNUSED_RESULT;
/// Returns a FloatingPanelLayout object. If you use the default one, you can use a <code>FloatingPanelBottomLayout</code> object.
- (id <FloatingPanelLayout> _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForSize:(CGSize)size SWIFT_WARN_UNUSED_RESULT;
/// Returns a UIViewPropertyAnimator object to add/present the  panel to a position.
/// Default is the spring animation with 0.25 secs.
- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForPresentingToState:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
/// Returns a UIViewPropertyAnimator object to remove/dismiss a panel from a position.
/// Default is the spring animator with 0.25 secs.
- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForDismissingWithVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT;
/// Called when a panel has changed to a new state.
/// This can be called inside an animation block for presenting, dismissing a panel or moving a panel with your
/// animation. So any view properties set inside this function will be automatically animated alongside a panel.
- (void)floatingPanelDidChangeState:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate if dragging should begin by the pan gesture recognizer.
- (BOOL)floatingPanelShouldBeginDragging:(FloatingPanelController * _Nonnull)fpc SWIFT_WARN_UNUSED_RESULT;
/// Called while the user drags the surface or the surface moves to a state anchor.
- (void)floatingPanelDidMove:(FloatingPanelController * _Nonnull)fpc;
/// Called on start of dragging (may require some time and or distance to move)
- (void)floatingPanelWillBeginDragging:(FloatingPanelController * _Nonnull)fpc;
/// Called on finger up if the user dragged. velocity is in points/second.
- (void)floatingPanelWillEndDragging:(FloatingPanelController * _Nonnull)fpc withVelocity:(CGPoint)velocity targetState:(FloatingPanelState * _Nonnull * _Nonnull)targetState;
/// Called on finger up if the user dragged.
/// If <code>attract</code> is true, the panel continues moving towards the nearby state
/// anchor. Otherwise, it stops at the closest state anchor.
/// note:
/// If <code>attract</code> is false, <code>FloatingPanelController.state</code> property has
/// already changed to the closest anchor’s state by the time this delegate method
/// is called.
- (void)floatingPanelDidEndDragging:(FloatingPanelController * _Nonnull)fpc willAttract:(BOOL)attract;
/// Called when it is about to be attracted to a state anchor.
- (void)floatingPanelWillBeginAttracting:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)state;
/// Called when attracting it is completed.
- (void)floatingPanelDidEndAttracting:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate whether a panel should be removed when dragging ended at the specified location
/// This delegate method is called only where <code>FloatingPanel/FloatingPanelController/isRemovalInteractionEnabled</code>  is <code>true</code>.
/// The velocity vector is calculated from the distance to a point of the hidden state and the pan gesture’s velocity.
- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldRemoveAtLocation:(CGPoint)location withVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT;
/// Called on start to remove its view controller from the parent view controller.
- (void)floatingPanelWillRemove:(FloatingPanelController * _Nonnull)fpc;
/// Called when a panel is removed from the parent view controller.
- (void)floatingPanelDidRemove:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate for a content offset of the tracking scroll view to be pinned when a panel moves
/// If you do not implement this method, the controller uses a value of the content offset plus the content insets
/// of the tracked scroll view. Your implementation of this method can return a value for a navigation bar with a large
/// title, for example.
/// This method will not be called if the controller doesn’t track any scroll view.
- (CGPoint)floatingPanel:(FloatingPanelController * _Nonnull)fpc contentOffsetForPinningScrollView:(UIScrollView * _Nonnull)trackingScrollView SWIFT_WARN_UNUSED_RESULT;
/// Returns a Boolean value that determines whether the tracking scroll view should
/// scroll or not
/// If you return true, the scroll content scrolls when its scroll position is not
/// at the top of the content. If the delegate doesn’t implement this method, its
/// content can be scrolled only in the most expanded state.
/// Basically, the decision to scroll is based on the <code>state</code> property like the
/// following code.
/// \code
/// func floatingPanel(
///     _ fpc: FloatingPanelController,
///     shouldAllowToScroll scrollView: UIScrollView,
///     in state: FloatingPanelState
/// ) -> Bool {
///     return state == .full || state == .half
/// }
///
/// \endcodeattention:
/// It is recommended that this method always returns the most expanded state(i.e.
/// .full). If it excludes the state, the panel might do unexpected behaviors.
- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldAllowToScroll:(UIScrollView * _Nonnull)scrollView in:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

/// An object that defines how to settles a panel with the intrinsic size for a content.
SWIFT_CLASS("_TtC8PenNavUI34FloatingPanelIntrinsicLayoutAnchor")
@interface FloatingPanelIntrinsicLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified offset by an absolute value and reference guide for a panel.
/// The offset is an amount to offset a position of panel that displays the entire content from an edge of
/// the reference guide.  The edge refers to a panel positioning.
/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified offset by a fractional value and reference guide for a panel.
/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content
/// is displayed and 0.5 represents the half of content is displayed.
/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// The reference rectangle area for the offset
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelIntrinsicLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

enum FloatingPanelReferenceEdge : NSInteger;
/// An object that defines how to settles a panel with insets from an edge of a reference rectangle.
SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelLayoutAnchor")
@interface FloatingPanelLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified inset by an absolute value, edge and reference guide for a panel.
/// The inset is an amount to inset a panel from an edge of the reference guide.  The edge refers to a panel
/// positioning.
/// \param absoluteOffset An absolute offset to attach the panel from the edge.
///
/// \param edge Specify the edge of <code>FloatingPanelController</code>’s view. This is the staring point of the offset.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithAbsoluteInset:(CGFloat)absoluteInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified inset by a fractional value, edge and reference guide for a panel.
/// The inset is an amount to inset a panel from the edge of the specified reference guide. The value is
/// a floating-point number in the range 0.0 to 1.0, where 0.0 represents zero distance from the edge and
/// 1.0 represents a distance to the opposite edge.
/// \param fractionalOffset A fractional value of the size of <code>FloatingPanelController</code>’s view to attach the panel from the edge.
///
/// \param edge Specify the edge of <code>FloatingPanelController</code>’s view. This is the staring point of the offset.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithFractionalInset:(CGFloat)fractionalInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// The reference rectangle area for the inset.
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

/// A representation to specify a bounding box which limit the content size of a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutContentBoundingGuide, open) {
  FloatingPanelLayoutContentBoundingGuideNone = 0,
  FloatingPanelLayoutContentBoundingGuideSuperview = 1,
  FloatingPanelLayoutContentBoundingGuideSafeArea = 2,
};

/// A representation to specify a rectangular area to lay out a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutReferenceGuide, open) {
  FloatingPanelLayoutReferenceGuideSuperview = 0,
  FloatingPanelLayoutReferenceGuideSafeArea = 1,
};

@class UITouch;
@class UIEvent;
@protocol UIGestureRecognizerDelegate;
/// A gesture recognizer that looks for panning (dragging) gestures in a panel.
SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelPanGestureRecognizer")
@interface FloatingPanelPanGestureRecognizer : UIPanGestureRecognizer
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)touchesBegan:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nonnull)event;
/// The delegate of the gesture recognizer.
/// note:
/// The delegate is used by FloatingPanel itself. If you set your own delegate object, an
/// exception is raised. If you want to handle the methods of UIGestureRecognizerDelegate, you can use <code>delegateProxy</code>.
@property (nonatomic, weak) id <UIGestureRecognizerDelegate> _Nullable delegate;
- (nonnull instancetype)initWithTarget:(id _Nullable)target action:(SEL _Nullable)action SWIFT_UNAVAILABLE;
@end

/// Constants describing the position of a panel in a screen
typedef SWIFT_ENUM(NSInteger, FloatingPanelPosition, open) {
  FloatingPanelPositionTop = 0,
  FloatingPanelPositionLeft = 1,
  FloatingPanelPositionBottom = 2,
  FloatingPanelPositionRight = 3,
};

/// Constants that specify the edge of the container of a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelReferenceEdge, open) {
  FloatingPanelReferenceEdgeTop = 0,
  FloatingPanelReferenceEdgeLeft = 1,
  FloatingPanelReferenceEdgeBottom = 2,
  FloatingPanelReferenceEdgeRight = 3,
};

/// An object that represents the display state of a panel in a screen.
SWIFT_CLASS("_TtC8PenNavUI18FloatingPanelState")
@interface FloatingPanelState : NSObject <NSCopying>
- (nonnull instancetype)initWithRawValue:(NSString * _Nonnull)rawValue order:(NSInteger)order OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription;
/// A panel state indicates the entire panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Full;)
+ (FloatingPanelState * _Nonnull)Full SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates the half of a panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Half;)
+ (FloatingPanelState * _Nonnull)Half SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates the tip of a panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Tip;)
+ (FloatingPanelState * _Nonnull)Tip SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates it is hidden.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Hidden;)
+ (FloatingPanelState * _Nonnull)Hidden SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// A view that presents a grabber handle in the surface of a panel.
SWIFT_CLASS_NAMED("GrabberView")
@interface FloatingPanelGrabberView : UIView
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)layoutSubviews;
- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

SWIFT_CLASS("_TtC8PenNavUI17PIGeofenceManager")
@interface PIGeofenceManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class CLLocationManager;
@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) <CLLocationManagerDelegate>
/// CLLocationManager Delegate - Called when permission changes
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

@class CLRegion;
@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI))
- (void)locationManager:(CLLocationManager * _Nonnull)manager didEnterRegion:(CLRegion * _Nonnull)region;
@end

SWIFT_CLASS_NAMED("PenNavStyle")
@interface PenNavStyle : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSData;
@interface PenNavStyle (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic, copy) NSData * _Nullable value;
@end

SWIFT_CLASS("_TtC8PenNavUI15PenNavUIManager")
@interface PenNavUIManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) <PIInitializerDelegate>
- (void)onReadyWithWarning:(enum WarningCode)warning;
- (void)onInitilzationErrorWithError:(enum ErrorCode)error;
- (void)onInitializationProgressChangeWithStatus:(enum SDKOperation)status;
@end

@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) <CLLocationManagerDelegate>
- (void)locationManagerDidChangeAuthorization:(CLLocationManager * _Nonnull)manager;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

SWIFT_CLASS_NAMED("PenNavUITableUpdate")
@interface PenNavUITableUpdate : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@interface PenNavUITableUpdate (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable lastUpdateTime;
@property (nonatomic, copy) NSString * _Nullable tableName;
@end

SWIFT_CLASS_NAMED("SVG")
@interface SVGImage : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_CLASS_NAMED("SharedLocationCacheData")
@interface SharedLocationCacheData : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@interface SharedLocationCacheData (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t edgeId;
@property (nonatomic) int16_t floorId;
@property (nonatomic) double latitude;
@property (nonatomic) double longitude;
@property (nonatomic, copy) NSString * _Nullable navigationAvoid;
@property (nonatomic) int16_t venueId;
@property (nonatomic) int16_t x;
@property (nonatomic) int16_t y;
@end

@class UIColor;
@class FloatingPanelSurfaceAppearanceShadow;
/// An object for customizing the appearance of a surface view
SWIFT_CLASS_NAMED("SurfaceAppearance")
@interface FloatingPanelSurfaceAppearance : NSObject
/// The background color of a surface view
@property (nonatomic, strong) UIColor * _Nullable backgroundColor;
/// The radius to use when drawing the top rounded corners.
/// <code>self.contentView</code> is masked with the top rounded corners automatically on iOS 11 and later.
/// On iOS 10, they are not automatically masked because of a UIVisualEffectView issue. See https://forums.developer.apple.com/thread/50854
@property (nonatomic) CGFloat cornerRadius;
/// Defines the curve used for rendering the rounded corners of the layer.
/// Defaults to <code>.circular</code>.
@property (nonatomic) CALayerCornerCurve _Nonnull cornerCurve SWIFT_AVAILABILITY(ios,introduced=13.0);
/// An array of shadows used to create drop shadows underneath a surface view.
@property (nonatomic, copy) NSArray<FloatingPanelSurfaceAppearanceShadow *> * _Nonnull shadows;
/// The border width of a surface view.
@property (nonatomic, strong) UIColor * _Nullable borderColor;
/// The border color of a surface view.
@property (nonatomic) CGFloat borderWidth;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// An object that represents information to render a shadow
SWIFT_CLASS_NAMED("Shadow")
@interface FloatingPanelSurfaceAppearanceShadow : NSObject
/// A Boolean indicating whether a shadow is displayed.
@property (nonatomic) BOOL hidden;
/// The color of a shadow.
@property (nonatomic, strong) UIColor * _Nonnull color;
/// The offset (in points) of a shadow.
@property (nonatomic) CGSize offset;
/// The opacity of a shadow.
@property (nonatomic) float opacity;
/// The blur radius (in points) used to render a shadow.
@property (nonatomic) CGFloat radius;
/// The inflated amount of a shadow prior to applying the blur.
@property (nonatomic) CGFloat spread;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// A view that presents a surface interface in a panel.
SWIFT_CLASS_NAMED("SurfaceView")
@interface FloatingPanelSurfaceView : UIView
/// A <code>FloatingPanelGrabberView</code> object displayed at the top of the surface view.
/// To use a custom grabber, hide this and then add it to the surface view at appropriate point.
@property (nonatomic, readonly, strong) FloatingPanelGrabberView * _Nonnull grabberHandle;
/// Offset of the grabber handle from the interactive edge.
@property (nonatomic) CGFloat grabberHandlePadding;
/// The offset from the move edge to prevent the content scroll
@property (nonatomic) CGFloat grabberAreaOffset;
/// The grabber handle size
/// On left/right positioned panel the width dimension is used as the height of <code>grabberHandle</code>, and vice versa.
@property (nonatomic) CGSize grabberHandleSize;
/// The content view to be assigned a view of the content view controller of <code>FloatingPanelController</code>
@property (nonatomic, weak) UIView * _Nullable contentView;
/// The content insets specifying the insets around the content view.
@property (nonatomic) UIEdgeInsets contentPadding;
@property (nonatomic, strong) UIColor * _Nullable backgroundColor;
/// The appearance settings for a surface view.
@property (nonatomic, strong) FloatingPanelSurfaceAppearance * _Nonnull appearance;
/// The margins to use when laying out the container view wrapping content.
@property (nonatomic) UIEdgeInsets containerMargins;
/// The view that displays an actual surface shape.
/// It renders the background color, border line and top rounded corners,
/// specified by other properties. The reason why they’re not be applied to
/// a content view directly is because it avoids any side-effects to the
/// content view.
@property (nonatomic, readonly, strong) UIView * _Nonnull containerView;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL requiresConstraintBasedLayout;)
+ (BOOL)requiresConstraintBasedLayout SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (void)updateConstraints;
- (void)layoutSubviews;
@property (nonatomic, readonly) CGSize intrinsicContentSize;
@end

@class UICollectionViewLayoutAttributes;
SWIFT_CLASS("_TtC8PenNavUI13TagFlowLayout")
@interface TagFlowLayout : UICollectionViewFlowLayout
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE;
- (NSArray<UICollectionViewLayoutAttributes *> * _Nullable)layoutAttributesForElementsInRect:(CGRect)rect SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection;
@property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface UIImage (SWIFT_EXTENSION(PenNavUI))
- (nullable instancetype)initWithSVGData:(NSData * _Nonnull)svgData;
- (nullable instancetype)initWithContentsOfSVGFile:(NSString * _Nonnull)path;
+ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
+ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name inBundle:(NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT;
@end

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

#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
#ifndef PENNAVUI_SWIFT_H
#define PENNAVUI_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

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

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

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

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

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# 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 CoreData;
@import CoreFoundation;
@import CoreLocation;
@import Foundation;
@import ObjectiveC;
@import Penguin;
@import QuartzCore;
@import UIKit;
@import UIUtilities;
#endif

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

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

#if defined(__OBJC__)

/// Asynchronous operation base class
/// This is abstract to class performs all of the necessary KVN of <code>isFinished</code> and
/// <code>isExecuting</code> for a concurrent <code>Operation</code> subclass. You can subclass this and
/// implement asynchronous operations. All you must do is:
/// <ul>
///   <li>
///     override <code>main()</code> with the tasks that initiate the asynchronous task;
///   </li>
///   <li>
///     call <code>completeOperation()</code> function when the asynchronous task is done;
///   </li>
///   <li>
///     optionally, periodically check <code>self.cancelled</code> status, performing any clean-up
///     necessary and then ensuring that <code>completeOperation()</code> is called; or
///     override <code>cancel</code> method, calling <code>super.cancel()</code> and then cleaning-up
///     and ensuring <code>completeOperation()</code> is called.
///   </li>
/// </ul>
SWIFT_CLASS("_TtC8PenNavUI21AsynchronousOperation")
@interface AsynchronousOperation : NSOperation
@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous;
@property (nonatomic, readonly, getter=isExecuting) BOOL executing;
@property (nonatomic, readonly, getter=isFinished) BOOL finished;
- (void)start;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class UITapGestureRecognizer;
@class NSCoder;
/// A view that presents a backdrop interface behind a panel.
SWIFT_CLASS_NAMED("BackdropView")
@interface FloatingPanelBackdropView : UIView
/// The gesture recognizer for tap gestures to dismiss a panel.
/// By default, this gesture recognizer is disabled as following the default behavior of iOS modalities.
/// To dismiss a panel by tap gestures on the backdrop, <code>dismissalTapGestureRecognizer.isEnabled</code> is set to true.
@property (nonatomic, strong) UITapGestureRecognizer * _Nonnull dismissalTapGestureRecognizer;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

@class NSEntityDescription;
@class NSManagedObjectContext;
SWIFT_CLASS_NAMED("CachedVenue")
@interface CachedVenue : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSString;
@interface CachedVenue (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t id;
@property (nonatomic, copy) NSString * _Nullable coverImage;
@property (nonatomic, copy) NSString * _Nullable address;
@property (nonatomic, copy) NSString * _Nullable buildingNumber;
@property (nonatomic, copy) NSString * _Nullable phone;
@property (nonatomic, copy) NSString * _Nullable email;
@property (nonatomic, copy) NSString * _Nullable website;
@property (nonatomic) int16_t floorCount;
@end

SWIFT_CLASS_NAMED("CampaignTracking")
@interface CampaignTracking : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSDate;
@interface CampaignTracking (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t campaignId;
@property (nonatomic, copy) NSDate * _Nullable lastNotificationDate;
@end

SWIFT_CLASS_NAMED("FavoriteCacheData")
@interface FavoriteCacheData : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class SharedLocationCacheData;
@interface FavoriteCacheData (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable createDate;
@property (nonatomic, copy) NSString * _Nullable deviceId;
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic) double distance;
@property (nonatomic, copy) NSString * _Nullable id;
@property (nonatomic, copy) NSString * _Nullable label;
@property (nonatomic) int16_t poiId;
@property (nonatomic, copy) NSString * _Nullable userName;
@property (nonatomic, strong) SharedLocationCacheData * _Nullable location;
@end

enum FloatingPanelLayoutReferenceGuide : NSInteger;
@class FloatingPanelController;
enum FloatingPanelPosition : NSInteger;
@class NSLayoutConstraint;
/// An interface for implementing custom layout anchor objects.
SWIFT_PROTOCOL("_TtP8PenNavUI28FloatingPanelLayoutAnchoring_")
@protocol FloatingPanelLayoutAnchoring
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)fpc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

@class UILayoutGuide;
enum FloatingPanelLayoutContentBoundingGuide : NSInteger;
/// An object that defines how to settles a panel with a layout guide of a content view.
SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelAdaptiveLayoutAnchor")
@interface FloatingPanelAdaptiveLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified offset by an absolute value to display a panel with its intrinsic content size.
/// The offset is an amount to offset a position of panel that displays the entire content of the specified guide from an edge of
/// the reference guide.  The edge refers to a panel positioning.
/// <code>contentBoundingGuide</code> restricts the content size which a panel displays. For example, given <code>referenceGuide</code> is <code>.superview</code> and <code>contentBoundingGuide</code> is <code>.safeArea</code> for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of <code>referenceGuide</code> and <code>contentBoundingGuide</code> are specified with the same rectangle area.
/// warning:
/// If <code>contentBoundingGuide</code> is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content.
/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param contentLayout The content layout guide to calculate the content size in the panel.
///
/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to <code>.safeArea</code>, the panel content displays inside the safe area of its <code>FloatingPanelController</code>‘s view. This argument doesn’t limit its content size.
///
/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel).
///
- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified offset by a fractional value to display a panel with its intrinsic content size.
/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content
/// is displayed and 0.5 represents the half of content is displayed.
/// <code>contentBoundingGuide</code> restricts the content size which a panel displays. For example, given <code>referenceGuide</code> is <code>.superview</code> and <code>contentBoundingGuide</code> is <code>.safeArea</code> for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of <code>referenceGuide</code> and <code>contentBoundingGuide</code> are specified with the same rectangle area.
/// warning:
/// If <code>contentBoundingGuide</code> is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content.
/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param contentLayout The content layout guide to calculate the content size in the panel.
///
/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to <code>.safeArea</code>, the panel content displays inside the safe area of its <code>FloatingPanelController</code>‘s view. This argument doesn’t limit its content size.
///
/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel).
///
- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
@property (nonatomic, readonly) enum FloatingPanelLayoutContentBoundingGuide contentBoundingGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelAdaptiveLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

@class FloatingPanelState;
/// An interface for generating behavior information to fine-tune the behavior of a panel.
SWIFT_PROTOCOL("_TtP8PenNavUI21FloatingPanelBehavior_")
@protocol FloatingPanelBehavior
@optional
/// A floating-point value that determines the rate of oscillation magnitude reduction after the user lifts their finger.
/// The oscillation magnitude to attract a panel to an anchor can be adjusted this value between 0.979 and 1.0
/// in increments of 0.001. When this value is around 0.979, the attraction uses a critically damped spring system.
/// When this value is between 0.978 and 1.0, it uses a underdamped spring system with a damping ratio computed by
/// this value. You shouldn’t return less than 0.979 because the system is overdamped. If the pan gesture’s velocity
/// is less than 300, this value is ignored and a panel applies a critically damped system.
@property (nonatomic, readonly) CGFloat springDecelerationRate;
/// A floating-point value that determines the approximate time until a panel stops to an anchor after the user lifts their finger.
@property (nonatomic, readonly) CGFloat springResponseTime;
/// Returns a deceleration rate to calculate a target position projected a dragging momentum.
/// The default implementation of this method returns the normal deceleration rate of UIScrollView.
@property (nonatomic, readonly) CGFloat momentumProjectionRate;
/// Asks the behavior if a panel should project a momentum of a user interaction to move the
/// proposed state.
/// The default implementation of this method returns <code>false</code>. This method is called for called
/// for all states defined by the current layout object.
- (BOOL)shouldProjectMomentum:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)proposedState SWIFT_WARN_UNUSED_RESULT;
/// Returns the progress to redirect to the previous position.
/// The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates a panel is impossible to move to the next position. The default value is 0.5. Values less than 0.0 and greater than 1.0 are pinned to those limits.
- (CGFloat)redirectionalProgress:(FloatingPanelController * _Nonnull)fpc from:(FloatingPanelState * _Nonnull)from to:(FloatingPanelState * _Nonnull)to SWIFT_WARN_UNUSED_RESULT;
/// Asks the behavior whether the rubber band effect is enabled in moving over a given edge of the surface view.
/// This method allows a panel to activate the rubber band effect to a given edge of the surface view. By default, the effect is disabled.
- (BOOL)allowsRubberBandingFor:(UIRectEdge)edge SWIFT_WARN_UNUSED_RESULT;
/// Returns the velocity threshold for the default interactive removal gesture.
/// In case <code>FloatingPanel/FloatingPanelControllerDelegate/floatingPanel(_:shouldRemoveAt:with:)</code> is implemented, this value will not be used. The default value of <code>FloatingPanelDefaultBehavior</code> is 5.5
@property (nonatomic, readonly) CGFloat removalInteractionVelocityThreshold;
@end

/// An interface for generating layout information for a panel.
SWIFT_PROTOCOL("_TtP8PenNavUI19FloatingPanelLayout_")
@protocol FloatingPanelLayout
/// Returns the position of a panel in a <code>FloatingPanelController</code> view .
@property (nonatomic, readonly) enum FloatingPanelPosition position;
/// Returns the initial state when a panel is presented.
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState;
/// Returns the layout anchors to specify the snapping locations for each state.
@property (nonatomic, readonly, copy) NSDictionary<FloatingPanelState *, id <FloatingPanelLayoutAnchoring>> * _Nonnull anchors;
@optional
/// Returns layout constraints to determine the cross dimension of a panel.
- (NSArray<NSLayoutConstraint *> * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
/// Returns the alpha value of the backdrop of a panel for each state.
- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

/// A layout object that lays out a panel in bottom sheet style.
SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelBottomLayout")
@interface FloatingPanelBottomLayout : NSObject <FloatingPanelLayout>
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState;
@property (nonatomic, readonly, copy) NSDictionary<FloatingPanelState *, id <FloatingPanelLayoutAnchoring>> * _Nonnull anchors;
@property (nonatomic, readonly) enum FloatingPanelPosition position;
- (NSArray<NSLayoutConstraint *> * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT;
- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

@protocol FloatingPanelControllerDelegate;
@class FloatingPanelSurfaceView;
@class UIScrollView;
@class FloatingPanelPanGestureRecognizer;
enum ContentInsetAdjustmentBehavior : NSInteger;
enum ContentMode : NSInteger;
@class NSBundle;
@protocol UIViewControllerTransitionCoordinator;
@class UITraitCollection;
/// A container view controller to display a panel to present contents in parallel as a user wants.
SWIFT_CLASS("_TtC8PenNavUI23FloatingPanelController")
@interface FloatingPanelController : UIViewController
/// The delegate of a panel controller object.
@property (nonatomic, weak) id <FloatingPanelControllerDelegate> _Nullable delegate;
/// Returns the surface view managed by the controller object. It’s the same as <code>self.view</code>.
@property (nonatomic, readonly, strong) FloatingPanelSurfaceView * _Null_unspecified surfaceView;
/// Returns the backdrop view managed by the controller object.
@property (nonatomic, readonly, strong) FloatingPanelBackdropView * _Null_unspecified backdropView;
/// Returns the scroll view that the controller tracks.
@property (nonatomic, readonly, weak) UIScrollView * _Nullable trackingScrollView;
@property (nonatomic, readonly, strong) FloatingPanelPanGestureRecognizer * _Nonnull panGestureRecognizer;
/// The current position of a panel controller’s contents.
@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull state;
/// A Boolean value indicating whether a panel controller is attracting the surface to a state anchor.
@property (nonatomic, readonly) BOOL isAttracting;
/// The layout object that the controller manages
/// You need to call <code>invalidateLayout()</code> if you want to apply a new layout object into the panel
/// immediately.
@property (nonatomic, strong) id <FloatingPanelLayout> _Nonnull layout;
/// The behavior object that the controller manages
@property (nonatomic, strong) id <FloatingPanelBehavior> _Nonnull behavior;
/// The content insets of the tracking scroll view derived from this safe area
@property (nonatomic, readonly) UIEdgeInsets adjustedContentInsets;
/// The behavior for determining the adjusted content offsets.
/// This property specifies how the content area of the tracking scroll view is modified using <code>adjustedContentInsets</code>. The default value of this property is FloatingPanelController.ContentInsetAdjustmentBehavior.always.
@property (nonatomic) enum ContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior;
/// A Boolean value that determines whether the removal interaction is enabled.
@property (nonatomic, setter=setRemovalInteractionEnabled:) BOOL isRemovalInteractionEnabled;
/// The view controller responsible for the content portion of a panel.
@property (nonatomic, strong) UIViewController * _Nullable contentViewController;
/// Constants that define how a panel content fills in the surface.
@property (nonatomic) enum ContentMode contentMode;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
/// Initialize a newly created panel controller.
- (nonnull instancetype)initWithDelegate:(id <FloatingPanelControllerDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Creates the view that the controller manages.
- (void)loadView;
- (void)viewDidLayoutSubviews;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator> _Nonnull)coordinator;
- (void)willTransitionToTraitCollection:(UITraitCollection * _Nonnull)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator> _Nonnull)coordinator;
- (void)viewWillDisappear:(BOOL)animated;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarStyle;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarHidden;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForScreenEdgesDeferringSystemGestures;
@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForHomeIndicatorAutoHidden;
/// Shows the surface view at the initial position defined by the current layout
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)show:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Hides the surface view to the hidden position
- (void)hide:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Adds the view managed by the controller as a child of the specified view controller.
/// \param parent A parent view controller object that displays FloatingPanelController’s view. A container view controller object isn’t applicable.
///
/// \param viewIndex Insert the surface view managed by the controller below the specified view index. By default, the surface view will be added to the end of the parent list of subviews.
///
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)addPanelToParent:(UIViewController * _Nonnull)parent at:(NSInteger)viewIndex animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Removes the controller and the managed view from its parent view controller
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the view controller is dismissed. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)removePanelFromParent:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Moves the position to the specified position.
/// \param to Pass a FloatingPanelPosition value to move the surface view to the position.
///
/// \param animated Pass true to animate the presentation; otherwise, pass false.
///
/// \param completion The block to execute after the view controller has finished moving. This block has no return value and takes no parameters. You may specify nil for this parameter.
///
- (void)moveToState:(FloatingPanelState * _Nonnull)to animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion;
/// Tracks the specified scroll view to correspond with the scroll.
/// \param scrollView Specify a scroll view to continuously and seamlessly work in concert with interactions of the surface view
///
- (void)trackScrollView:(UIScrollView * _Nonnull)scrollView;
/// Cancel tracking the specify scroll view.
- (void)untrackScrollView:(UIScrollView * _Nonnull)scrollView;
- (BOOL)accessibilityPerformEscape SWIFT_WARN_UNUSED_RESULT;
/// Invalidates all layout information of the panel and apply the <code>layout</code> property into it immediately.
/// This lays out subviews of the view that the controller manages with the <code>layout</code> property by
/// calling the view’s <code>layoutIfNeeded()</code>. Thus this method can be called in an animation block to
/// animate the panel’s changes.
/// If the controller has a delegate object, this will lay them out using the layout object returned by
/// <code>floatingPanel(_:layoutFor:)</code> delegate method for the current <code>UITraitCollection</code>.
- (void)invalidateLayout;
/// Returns the surface’s position in a panel controller’s view for the specified state.
/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned
/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point
/// of the top-left corner of the surface.
- (CGPoint)surfaceLocationFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
/// The surface’s position in a panel controller’s view.
/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned
/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point
/// of the top-left corner of the surface.
@property (nonatomic) CGPoint surfaceLocation;
@end

/// Constants indicating how safe area insets are added to the adjusted content inset.
typedef SWIFT_ENUM(NSInteger, ContentInsetAdjustmentBehavior, open) {
  ContentInsetAdjustmentBehaviorAlways = 0,
  ContentInsetAdjustmentBehaviorNever = 1,
};

/// A flag used to determine how the controller object lays out the content view when the surface position changes.
typedef SWIFT_ENUM(NSInteger, ContentMode, open) {
/// The option to fix the content to keep the height of the top most position.
  ContentModeStatic = 0,
/// The option to scale the content to fit the bounds of the root view by changing the surface position.
  ContentModeFitToBounds = 1,
};

@class UIViewPropertyAnimator;
/// A set of methods implemented by the delegate of a panel controller allows the adopting delegate to respond to
/// messages from the FloatingPanelController class and thus respond to, and in some affect, operations such as
/// dragging, attracting a panel, layout of a panel and the content, and transition animations.
SWIFT_PROTOCOL("_TtP8PenNavUI31FloatingPanelControllerDelegate_")
@protocol FloatingPanelControllerDelegate
@optional
/// Returns a FloatingPanelLayout object. If you use the default one, you can use a <code>FloatingPanelBottomLayout</code> object.
- (id <FloatingPanelLayout> _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForTraitCollection:(UITraitCollection * _Nonnull)newCollection SWIFT_WARN_UNUSED_RESULT;
/// Returns a FloatingPanelLayout object. If you use the default one, you can use a <code>FloatingPanelBottomLayout</code> object.
- (id <FloatingPanelLayout> _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForSize:(CGSize)size SWIFT_WARN_UNUSED_RESULT;
/// Returns a UIViewPropertyAnimator object to add/present the  panel to a position.
/// Default is the spring animation with 0.25 secs.
- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForPresentingToState:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
/// Returns a UIViewPropertyAnimator object to remove/dismiss a panel from a position.
/// Default is the spring animator with 0.25 secs.
- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForDismissingWithVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT;
/// Called when a panel has changed to a new state.
/// This can be called inside an animation block for presenting, dismissing a panel or moving a panel with your
/// animation. So any view properties set inside this function will be automatically animated alongside a panel.
- (void)floatingPanelDidChangeState:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate if dragging should begin by the pan gesture recognizer.
- (BOOL)floatingPanelShouldBeginDragging:(FloatingPanelController * _Nonnull)fpc SWIFT_WARN_UNUSED_RESULT;
/// Called while the user drags the surface or the surface moves to a state anchor.
- (void)floatingPanelDidMove:(FloatingPanelController * _Nonnull)fpc;
/// Called on start of dragging (may require some time and or distance to move)
- (void)floatingPanelWillBeginDragging:(FloatingPanelController * _Nonnull)fpc;
/// Called on finger up if the user dragged. velocity is in points/second.
- (void)floatingPanelWillEndDragging:(FloatingPanelController * _Nonnull)fpc withVelocity:(CGPoint)velocity targetState:(FloatingPanelState * _Nonnull * _Nonnull)targetState;
/// Called on finger up if the user dragged.
/// If <code>attract</code> is true, the panel continues moving towards the nearby state
/// anchor. Otherwise, it stops at the closest state anchor.
/// note:
/// If <code>attract</code> is false, <code>FloatingPanelController.state</code> property has
/// already changed to the closest anchor’s state by the time this delegate method
/// is called.
- (void)floatingPanelDidEndDragging:(FloatingPanelController * _Nonnull)fpc willAttract:(BOOL)attract;
/// Called when it is about to be attracted to a state anchor.
- (void)floatingPanelWillBeginAttracting:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)state;
/// Called when attracting it is completed.
- (void)floatingPanelDidEndAttracting:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate whether a panel should be removed when dragging ended at the specified location
/// This delegate method is called only where <code>FloatingPanel/FloatingPanelController/isRemovalInteractionEnabled</code>  is <code>true</code>.
/// The velocity vector is calculated from the distance to a point of the hidden state and the pan gesture’s velocity.
- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldRemoveAtLocation:(CGPoint)location withVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT;
/// Called on start to remove its view controller from the parent view controller.
- (void)floatingPanelWillRemove:(FloatingPanelController * _Nonnull)fpc;
/// Called when a panel is removed from the parent view controller.
- (void)floatingPanelDidRemove:(FloatingPanelController * _Nonnull)fpc;
/// Asks the delegate for a content offset of the tracking scroll view to be pinned when a panel moves
/// If you do not implement this method, the controller uses a value of the content offset plus the content insets
/// of the tracked scroll view. Your implementation of this method can return a value for a navigation bar with a large
/// title, for example.
/// This method will not be called if the controller doesn’t track any scroll view.
- (CGPoint)floatingPanel:(FloatingPanelController * _Nonnull)fpc contentOffsetForPinningScrollView:(UIScrollView * _Nonnull)trackingScrollView SWIFT_WARN_UNUSED_RESULT;
/// Returns a Boolean value that determines whether the tracking scroll view should
/// scroll or not
/// If you return true, the scroll content scrolls when its scroll position is not
/// at the top of the content. If the delegate doesn’t implement this method, its
/// content can be scrolled only in the most expanded state.
/// Basically, the decision to scroll is based on the <code>state</code> property like the
/// following code.
/// \code
/// func floatingPanel(
///     _ fpc: FloatingPanelController,
///     shouldAllowToScroll scrollView: UIScrollView,
///     in state: FloatingPanelState
/// ) -> Bool {
///     return state == .full || state == .half
/// }
///
/// \endcodeattention:
/// It is recommended that this method always returns the most expanded state(i.e.
/// .full). If it excludes the state, the panel might do unexpected behaviors.
- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldAllowToScroll:(UIScrollView * _Nonnull)scrollView in:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT;
@end

/// An object that defines how to settles a panel with the intrinsic size for a content.
SWIFT_CLASS("_TtC8PenNavUI34FloatingPanelIntrinsicLayoutAnchor")
@interface FloatingPanelIntrinsicLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified offset by an absolute value and reference guide for a panel.
/// The offset is an amount to offset a position of panel that displays the entire content from an edge of
/// the reference guide.  The edge refers to a panel positioning.
/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified offset by a fractional value and reference guide for a panel.
/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content
/// is displayed and 0.5 represents the half of content is displayed.
/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// The reference rectangle area for the offset
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelIntrinsicLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

enum FloatingPanelReferenceEdge : NSInteger;
/// An object that defines how to settles a panel with insets from an edge of a reference rectangle.
SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelLayoutAnchor")
@interface FloatingPanelLayoutAnchor : NSObject <FloatingPanelLayoutAnchoring>
/// Returns a layout anchor with the specified inset by an absolute value, edge and reference guide for a panel.
/// The inset is an amount to inset a panel from an edge of the reference guide.  The edge refers to a panel
/// positioning.
/// \param absoluteOffset An absolute offset to attach the panel from the edge.
///
/// \param edge Specify the edge of <code>FloatingPanelController</code>’s view. This is the staring point of the offset.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithAbsoluteInset:(CGFloat)absoluteInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// Returns a layout anchor with the specified inset by a fractional value, edge and reference guide for a panel.
/// The inset is an amount to inset a panel from the edge of the specified reference guide. The value is
/// a floating-point number in the range 0.0 to 1.0, where 0.0 represents zero distance from the edge and
/// 1.0 represents a distance to the opposite edge.
/// \param fractionalOffset A fractional value of the size of <code>FloatingPanelController</code>’s view to attach the panel from the edge.
///
/// \param edge Specify the edge of <code>FloatingPanelController</code>’s view. This is the staring point of the offset.
///
/// \param referenceGuide The rectangular area to lay out the content. If it’s set to <code>.safeArea</code>, the panel content lays out inside the safe area of its <code>FloatingPanelController</code>’s view.
///
- (nonnull instancetype)initWithFractionalInset:(CGFloat)fractionalInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER;
/// The reference rectangle area for the inset.
@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface FloatingPanelLayoutAnchor (SWIFT_EXTENSION(PenNavUI))
- (NSArray<NSLayoutConstraint *> * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT;
@end

/// A representation to specify a bounding box which limit the content size of a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutContentBoundingGuide, open) {
  FloatingPanelLayoutContentBoundingGuideNone = 0,
  FloatingPanelLayoutContentBoundingGuideSuperview = 1,
  FloatingPanelLayoutContentBoundingGuideSafeArea = 2,
};

/// A representation to specify a rectangular area to lay out a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutReferenceGuide, open) {
  FloatingPanelLayoutReferenceGuideSuperview = 0,
  FloatingPanelLayoutReferenceGuideSafeArea = 1,
};

@class UITouch;
@class UIEvent;
@protocol UIGestureRecognizerDelegate;
/// A gesture recognizer that looks for panning (dragging) gestures in a panel.
SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelPanGestureRecognizer")
@interface FloatingPanelPanGestureRecognizer : UIPanGestureRecognizer
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)touchesBegan:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nonnull)event;
/// The delegate of the gesture recognizer.
/// note:
/// The delegate is used by FloatingPanel itself. If you set your own delegate object, an
/// exception is raised. If you want to handle the methods of UIGestureRecognizerDelegate, you can use <code>delegateProxy</code>.
@property (nonatomic, weak) id <UIGestureRecognizerDelegate> _Nullable delegate;
- (nonnull instancetype)initWithTarget:(id _Nullable)target action:(SEL _Nullable)action SWIFT_UNAVAILABLE;
@end

/// Constants describing the position of a panel in a screen
typedef SWIFT_ENUM(NSInteger, FloatingPanelPosition, open) {
  FloatingPanelPositionTop = 0,
  FloatingPanelPositionLeft = 1,
  FloatingPanelPositionBottom = 2,
  FloatingPanelPositionRight = 3,
};

/// Constants that specify the edge of the container of a panel.
typedef SWIFT_ENUM(NSInteger, FloatingPanelReferenceEdge, open) {
  FloatingPanelReferenceEdgeTop = 0,
  FloatingPanelReferenceEdgeLeft = 1,
  FloatingPanelReferenceEdgeBottom = 2,
  FloatingPanelReferenceEdgeRight = 3,
};

/// An object that represents the display state of a panel in a screen.
SWIFT_CLASS("_TtC8PenNavUI18FloatingPanelState")
@interface FloatingPanelState : NSObject <NSCopying>
- (nonnull instancetype)initWithRawValue:(NSString * _Nonnull)rawValue order:(NSInteger)order OBJC_DESIGNATED_INITIALIZER;
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription;
/// A panel state indicates the entire panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Full;)
+ (FloatingPanelState * _Nonnull)Full SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates the half of a panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Half;)
+ (FloatingPanelState * _Nonnull)Half SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates the tip of a panel is shown.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Tip;)
+ (FloatingPanelState * _Nonnull)Tip SWIFT_WARN_UNUSED_RESULT;
/// A panel state indicates it is hidden.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Hidden;)
+ (FloatingPanelState * _Nonnull)Hidden SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// A view that presents a grabber handle in the surface of a panel.
SWIFT_CLASS_NAMED("GrabberView")
@interface FloatingPanelGrabberView : UIView
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (void)layoutSubviews;
- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end

SWIFT_CLASS("_TtC8PenNavUI17PIGeofenceManager")
@interface PIGeofenceManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class CLLocationManager;
@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) <CLLocationManagerDelegate>
/// CLLocationManager Delegate - Called when permission changes
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

@class CLRegion;
@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI))
- (void)locationManager:(CLLocationManager * _Nonnull)manager didEnterRegion:(CLRegion * _Nonnull)region;
@end

SWIFT_CLASS_NAMED("PenNavStyle")
@interface PenNavStyle : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@class NSData;
@interface PenNavStyle (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable type;
@property (nonatomic, copy) NSData * _Nullable value;
@end

SWIFT_CLASS("_TtC8PenNavUI15PenNavUIManager")
@interface PenNavUIManager : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) <PIInitializerDelegate>
- (void)onReadyWithWarning:(enum WarningCode)warning;
- (void)onInitilzationErrorWithError:(enum ErrorCode)error;
- (void)onInitializationProgressChangeWithStatus:(enum SDKOperation)status;
@end

@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) <CLLocationManagerDelegate>
- (void)locationManagerDidChangeAuthorization:(CLLocationManager * _Nonnull)manager;
- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
@end

SWIFT_CLASS_NAMED("PenNavUITableUpdate")
@interface PenNavUITableUpdate : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@interface PenNavUITableUpdate (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic, copy) NSString * _Nullable lastUpdateTime;
@property (nonatomic, copy) NSString * _Nullable tableName;
@end

SWIFT_CLASS_NAMED("SVG")
@interface SVGImage : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

SWIFT_CLASS_NAMED("SharedLocationCacheData")
@interface SharedLocationCacheData : NSManagedObject
- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER;
@end

@interface SharedLocationCacheData (SWIFT_EXTENSION(PenNavUI))
@property (nonatomic) int16_t edgeId;
@property (nonatomic) int16_t floorId;
@property (nonatomic) double latitude;
@property (nonatomic) double longitude;
@property (nonatomic, copy) NSString * _Nullable navigationAvoid;
@property (nonatomic) int16_t venueId;
@property (nonatomic) int16_t x;
@property (nonatomic) int16_t y;
@end

@class UIColor;
@class FloatingPanelSurfaceAppearanceShadow;
/// An object for customizing the appearance of a surface view
SWIFT_CLASS_NAMED("SurfaceAppearance")
@interface FloatingPanelSurfaceAppearance : NSObject
/// The background color of a surface view
@property (nonatomic, strong) UIColor * _Nullable backgroundColor;
/// The radius to use when drawing the top rounded corners.
/// <code>self.contentView</code> is masked with the top rounded corners automatically on iOS 11 and later.
/// On iOS 10, they are not automatically masked because of a UIVisualEffectView issue. See https://forums.developer.apple.com/thread/50854
@property (nonatomic) CGFloat cornerRadius;
/// Defines the curve used for rendering the rounded corners of the layer.
/// Defaults to <code>.circular</code>.
@property (nonatomic) CALayerCornerCurve _Nonnull cornerCurve SWIFT_AVAILABILITY(ios,introduced=13.0);
/// An array of shadows used to create drop shadows underneath a surface view.
@property (nonatomic, copy) NSArray<FloatingPanelSurfaceAppearanceShadow *> * _Nonnull shadows;
/// The border width of a surface view.
@property (nonatomic, strong) UIColor * _Nullable borderColor;
/// The border color of a surface view.
@property (nonatomic) CGFloat borderWidth;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// An object that represents information to render a shadow
SWIFT_CLASS_NAMED("Shadow")
@interface FloatingPanelSurfaceAppearanceShadow : NSObject
/// A Boolean indicating whether a shadow is displayed.
@property (nonatomic) BOOL hidden;
/// The color of a shadow.
@property (nonatomic, strong) UIColor * _Nonnull color;
/// The offset (in points) of a shadow.
@property (nonatomic) CGSize offset;
/// The opacity of a shadow.
@property (nonatomic) float opacity;
/// The blur radius (in points) used to render a shadow.
@property (nonatomic) CGFloat radius;
/// The inflated amount of a shadow prior to applying the blur.
@property (nonatomic) CGFloat spread;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// A view that presents a surface interface in a panel.
SWIFT_CLASS_NAMED("SurfaceView")
@interface FloatingPanelSurfaceView : UIView
/// A <code>FloatingPanelGrabberView</code> object displayed at the top of the surface view.
/// To use a custom grabber, hide this and then add it to the surface view at appropriate point.
@property (nonatomic, readonly, strong) FloatingPanelGrabberView * _Nonnull grabberHandle;
/// Offset of the grabber handle from the interactive edge.
@property (nonatomic) CGFloat grabberHandlePadding;
/// The offset from the move edge to prevent the content scroll
@property (nonatomic) CGFloat grabberAreaOffset;
/// The grabber handle size
/// On left/right positioned panel the width dimension is used as the height of <code>grabberHandle</code>, and vice versa.
@property (nonatomic) CGSize grabberHandleSize;
/// The content view to be assigned a view of the content view controller of <code>FloatingPanelController</code>
@property (nonatomic, weak) UIView * _Nullable contentView;
/// The content insets specifying the insets around the content view.
@property (nonatomic) UIEdgeInsets contentPadding;
@property (nonatomic, strong) UIColor * _Nullable backgroundColor;
/// The appearance settings for a surface view.
@property (nonatomic, strong) FloatingPanelSurfaceAppearance * _Nonnull appearance;
/// The margins to use when laying out the container view wrapping content.
@property (nonatomic) UIEdgeInsets containerMargins;
/// The view that displays an actual surface shape.
/// It renders the background color, border line and top rounded corners,
/// specified by other properties. The reason why they’re not be applied to
/// a content view directly is because it avoids any side-effects to the
/// content view.
@property (nonatomic, readonly, strong) UIView * _Nonnull containerView;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL requiresConstraintBasedLayout;)
+ (BOOL)requiresConstraintBasedLayout SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (void)updateConstraints;
- (void)layoutSubviews;
@property (nonatomic, readonly) CGSize intrinsicContentSize;
@end

@class UICollectionViewLayoutAttributes;
SWIFT_CLASS("_TtC8PenNavUI13TagFlowLayout")
@interface TagFlowLayout : UICollectionViewFlowLayout
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE;
- (NSArray<UICollectionViewLayoutAttributes *> * _Nullable)layoutAttributesForElementsInRect:(CGRect)rect SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection;
@property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@interface UIImage (SWIFT_EXTENSION(PenNavUI))
- (nullable instancetype)initWithSVGData:(NSData * _Nonnull)svgData;
- (nullable instancetype)initWithContentsOfSVGFile:(NSString * _Nonnull)path;
+ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
+ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name inBundle:(NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT;
@end

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

#else
#error unsupported Swift architecture
#endif
