///
/// InappbrowserNitro-Swift-Cxx-Bridge.hpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#pragma once

// Forward declarations of C++ defined types
// Forward declaration of `BrowserAnimations` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct BrowserAnimations; }
// Forward declaration of `BrowserColorScheme` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class BrowserColorScheme; }
// Forward declaration of `BrowserResultType` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class BrowserResultType; }
// Forward declaration of `BrowserShareState` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class BrowserShareState; }
// Forward declaration of `DismissButtonStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class DismissButtonStyle; }
// Forward declaration of `DynamicColor` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct DynamicColor; }
// Forward declaration of `FormSheetContentSize` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct FormSheetContentSize; }
// Forward declaration of `HybridInappbrowserNitroSpec` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { class HybridInappbrowserNitroSpec; }
// Forward declaration of `InAppBrowserAuthResult` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct InAppBrowserAuthResult; }
// Forward declaration of `InAppBrowserOptions` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct InAppBrowserOptions; }
// Forward declaration of `InAppBrowserResult` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct InAppBrowserResult; }
// Forward declaration of `ModalPresentationStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class ModalPresentationStyle; }
// Forward declaration of `ModalTransitionStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class ModalTransitionStyle; }
// Forward declaration of `StatusBarStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class StatusBarStyle; }
// Forward declaration of `UserInterfaceStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class UserInterfaceStyle; }

// Forward declarations of Swift defined types
// Forward declaration of `HybridInappbrowserNitroSpec_cxx` to properly resolve imports.
namespace InappbrowserNitro { class HybridInappbrowserNitroSpec_cxx; }

// Include C++ defined types
#include "BrowserAnimations.hpp"
#include "BrowserColorScheme.hpp"
#include "BrowserResultType.hpp"
#include "BrowserShareState.hpp"
#include "DismissButtonStyle.hpp"
#include "DynamicColor.hpp"
#include "FormSheetContentSize.hpp"
#include "HybridInappbrowserNitroSpec.hpp"
#include "InAppBrowserAuthResult.hpp"
#include "InAppBrowserOptions.hpp"
#include "InAppBrowserResult.hpp"
#include "ModalPresentationStyle.hpp"
#include "ModalTransitionStyle.hpp"
#include "StatusBarStyle.hpp"
#include "UserInterfaceStyle.hpp"
#include <NitroModules/Promise.hpp>
#include <NitroModules/PromiseHolder.hpp>
#include <NitroModules/Result.hpp>
#include <exception>
#include <functional>
#include <memory>
#include <optional>
#include <string>
#include <unordered_map>

/**
 * Contains specialized versions of C++ templated types so they can be accessed from Swift,
 * as well as helper functions to interact with those C++ types from Swift.
 */
namespace margelo::nitro::inappbrowsernitro::bridge::swift {

  // pragma MARK: std::shared_ptr<Promise<bool>>
  /**
   * Specialized version of `std::shared_ptr<Promise<bool>>`.
   */
  using std__shared_ptr_Promise_bool__ = std::shared_ptr<Promise<bool>>;
  inline std::shared_ptr<Promise<bool>> create_std__shared_ptr_Promise_bool__() noexcept {
    return Promise<bool>::create();
  }
  inline PromiseHolder<bool> wrap_std__shared_ptr_Promise_bool__(std::shared_ptr<Promise<bool>> promise) noexcept {
    return PromiseHolder<bool>(std::move(promise));
  }
  
  // pragma MARK: std::function<void(bool /* result */)>
  /**
   * Specialized version of `std::function<void(bool)>`.
   */
  using Func_void_bool = std::function<void(bool /* result */)>;
  /**
   * Wrapper class for a `std::function<void(bool / * result * /)>`, this can be used from Swift.
   */
  class Func_void_bool_Wrapper final {
  public:
    explicit Func_void_bool_Wrapper(std::function<void(bool /* result */)>&& func): _function(std::make_unique<std::function<void(bool /* result */)>>(std::move(func))) {}
    inline void call(bool result) const noexcept {
      _function->operator()(result);
    }
  private:
    std::unique_ptr<std::function<void(bool /* result */)>> _function;
  } SWIFT_NONCOPYABLE;
  Func_void_bool create_Func_void_bool(void* NON_NULL swiftClosureWrapper) noexcept;
  inline Func_void_bool_Wrapper wrap_Func_void_bool(Func_void_bool value) noexcept {
    return Func_void_bool_Wrapper(std::move(value));
  }
  
  // pragma MARK: std::function<void(const std::exception_ptr& /* error */)>
  /**
   * Specialized version of `std::function<void(const std::exception_ptr&)>`.
   */
  using Func_void_std__exception_ptr = std::function<void(const std::exception_ptr& /* error */)>;
  /**
   * Wrapper class for a `std::function<void(const std::exception_ptr& / * error * /)>`, this can be used from Swift.
   */
  class Func_void_std__exception_ptr_Wrapper final {
  public:
    explicit Func_void_std__exception_ptr_Wrapper(std::function<void(const std::exception_ptr& /* error */)>&& func): _function(std::make_unique<std::function<void(const std::exception_ptr& /* error */)>>(std::move(func))) {}
    inline void call(std::exception_ptr error) const noexcept {
      _function->operator()(error);
    }
  private:
    std::unique_ptr<std::function<void(const std::exception_ptr& /* error */)>> _function;
  } SWIFT_NONCOPYABLE;
  Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept;
  inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept {
    return Func_void_std__exception_ptr_Wrapper(std::move(value));
  }
  
  // pragma MARK: std::optional<std::string>
  /**
   * Specialized version of `std::optional<std::string>`.
   */
  using std__optional_std__string_ = std::optional<std::string>;
  inline std::optional<std::string> create_std__optional_std__string_(const std::string& value) noexcept {
    return std::optional<std::string>(value);
  }
  inline bool has_value_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
    return optional.has_value();
  }
  inline std::string get_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::shared_ptr<Promise<InAppBrowserResult>>
  /**
   * Specialized version of `std::shared_ptr<Promise<InAppBrowserResult>>`.
   */
  using std__shared_ptr_Promise_InAppBrowserResult__ = std::shared_ptr<Promise<InAppBrowserResult>>;
  inline std::shared_ptr<Promise<InAppBrowserResult>> create_std__shared_ptr_Promise_InAppBrowserResult__() noexcept {
    return Promise<InAppBrowserResult>::create();
  }
  inline PromiseHolder<InAppBrowserResult> wrap_std__shared_ptr_Promise_InAppBrowserResult__(std::shared_ptr<Promise<InAppBrowserResult>> promise) noexcept {
    return PromiseHolder<InAppBrowserResult>(std::move(promise));
  }
  
  // pragma MARK: std::function<void(const InAppBrowserResult& /* result */)>
  /**
   * Specialized version of `std::function<void(const InAppBrowserResult&)>`.
   */
  using Func_void_InAppBrowserResult = std::function<void(const InAppBrowserResult& /* result */)>;
  /**
   * Wrapper class for a `std::function<void(const InAppBrowserResult& / * result * /)>`, this can be used from Swift.
   */
  class Func_void_InAppBrowserResult_Wrapper final {
  public:
    explicit Func_void_InAppBrowserResult_Wrapper(std::function<void(const InAppBrowserResult& /* result */)>&& func): _function(std::make_unique<std::function<void(const InAppBrowserResult& /* result */)>>(std::move(func))) {}
    inline void call(InAppBrowserResult result) const noexcept {
      _function->operator()(result);
    }
  private:
    std::unique_ptr<std::function<void(const InAppBrowserResult& /* result */)>> _function;
  } SWIFT_NONCOPYABLE;
  Func_void_InAppBrowserResult create_Func_void_InAppBrowserResult(void* NON_NULL swiftClosureWrapper) noexcept;
  inline Func_void_InAppBrowserResult_Wrapper wrap_Func_void_InAppBrowserResult(Func_void_InAppBrowserResult value) noexcept {
    return Func_void_InAppBrowserResult_Wrapper(std::move(value));
  }
  
  // pragma MARK: std::optional<DismissButtonStyle>
  /**
   * Specialized version of `std::optional<DismissButtonStyle>`.
   */
  using std__optional_DismissButtonStyle_ = std::optional<DismissButtonStyle>;
  inline std::optional<DismissButtonStyle> create_std__optional_DismissButtonStyle_(const DismissButtonStyle& value) noexcept {
    return std::optional<DismissButtonStyle>(value);
  }
  inline bool has_value_std__optional_DismissButtonStyle_(const std::optional<DismissButtonStyle>& optional) noexcept {
    return optional.has_value();
  }
  inline DismissButtonStyle get_std__optional_DismissButtonStyle_(const std::optional<DismissButtonStyle>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<DynamicColor>
  /**
   * Specialized version of `std::optional<DynamicColor>`.
   */
  using std__optional_DynamicColor_ = std::optional<DynamicColor>;
  inline std::optional<DynamicColor> create_std__optional_DynamicColor_(const DynamicColor& value) noexcept {
    return std::optional<DynamicColor>(value);
  }
  inline bool has_value_std__optional_DynamicColor_(const std::optional<DynamicColor>& optional) noexcept {
    return optional.has_value();
  }
  inline DynamicColor get_std__optional_DynamicColor_(const std::optional<DynamicColor>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<StatusBarStyle>
  /**
   * Specialized version of `std::optional<StatusBarStyle>`.
   */
  using std__optional_StatusBarStyle_ = std::optional<StatusBarStyle>;
  inline std::optional<StatusBarStyle> create_std__optional_StatusBarStyle_(const StatusBarStyle& value) noexcept {
    return std::optional<StatusBarStyle>(value);
  }
  inline bool has_value_std__optional_StatusBarStyle_(const std::optional<StatusBarStyle>& optional) noexcept {
    return optional.has_value();
  }
  inline StatusBarStyle get_std__optional_StatusBarStyle_(const std::optional<StatusBarStyle>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<bool>
  /**
   * Specialized version of `std::optional<bool>`.
   */
  using std__optional_bool_ = std::optional<bool>;
  inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
    return std::optional<bool>(value);
  }
  inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
    return optional.has_value();
  }
  inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<ModalPresentationStyle>
  /**
   * Specialized version of `std::optional<ModalPresentationStyle>`.
   */
  using std__optional_ModalPresentationStyle_ = std::optional<ModalPresentationStyle>;
  inline std::optional<ModalPresentationStyle> create_std__optional_ModalPresentationStyle_(const ModalPresentationStyle& value) noexcept {
    return std::optional<ModalPresentationStyle>(value);
  }
  inline bool has_value_std__optional_ModalPresentationStyle_(const std::optional<ModalPresentationStyle>& optional) noexcept {
    return optional.has_value();
  }
  inline ModalPresentationStyle get_std__optional_ModalPresentationStyle_(const std::optional<ModalPresentationStyle>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<ModalTransitionStyle>
  /**
   * Specialized version of `std::optional<ModalTransitionStyle>`.
   */
  using std__optional_ModalTransitionStyle_ = std::optional<ModalTransitionStyle>;
  inline std::optional<ModalTransitionStyle> create_std__optional_ModalTransitionStyle_(const ModalTransitionStyle& value) noexcept {
    return std::optional<ModalTransitionStyle>(value);
  }
  inline bool has_value_std__optional_ModalTransitionStyle_(const std::optional<ModalTransitionStyle>& optional) noexcept {
    return optional.has_value();
  }
  inline ModalTransitionStyle get_std__optional_ModalTransitionStyle_(const std::optional<ModalTransitionStyle>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<UserInterfaceStyle>
  /**
   * Specialized version of `std::optional<UserInterfaceStyle>`.
   */
  using std__optional_UserInterfaceStyle_ = std::optional<UserInterfaceStyle>;
  inline std::optional<UserInterfaceStyle> create_std__optional_UserInterfaceStyle_(const UserInterfaceStyle& value) noexcept {
    return std::optional<UserInterfaceStyle>(value);
  }
  inline bool has_value_std__optional_UserInterfaceStyle_(const std::optional<UserInterfaceStyle>& optional) noexcept {
    return optional.has_value();
  }
  inline UserInterfaceStyle get_std__optional_UserInterfaceStyle_(const std::optional<UserInterfaceStyle>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<FormSheetContentSize>
  /**
   * Specialized version of `std::optional<FormSheetContentSize>`.
   */
  using std__optional_FormSheetContentSize_ = std::optional<FormSheetContentSize>;
  inline std::optional<FormSheetContentSize> create_std__optional_FormSheetContentSize_(const FormSheetContentSize& value) noexcept {
    return std::optional<FormSheetContentSize>(value);
  }
  inline bool has_value_std__optional_FormSheetContentSize_(const std::optional<FormSheetContentSize>& optional) noexcept {
    return optional.has_value();
  }
  inline FormSheetContentSize get_std__optional_FormSheetContentSize_(const std::optional<FormSheetContentSize>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<BrowserShareState>
  /**
   * Specialized version of `std::optional<BrowserShareState>`.
   */
  using std__optional_BrowserShareState_ = std::optional<BrowserShareState>;
  inline std::optional<BrowserShareState> create_std__optional_BrowserShareState_(const BrowserShareState& value) noexcept {
    return std::optional<BrowserShareState>(value);
  }
  inline bool has_value_std__optional_BrowserShareState_(const std::optional<BrowserShareState>& optional) noexcept {
    return optional.has_value();
  }
  inline BrowserShareState get_std__optional_BrowserShareState_(const std::optional<BrowserShareState>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<BrowserColorScheme>
  /**
   * Specialized version of `std::optional<BrowserColorScheme>`.
   */
  using std__optional_BrowserColorScheme_ = std::optional<BrowserColorScheme>;
  inline std::optional<BrowserColorScheme> create_std__optional_BrowserColorScheme_(const BrowserColorScheme& value) noexcept {
    return std::optional<BrowserColorScheme>(value);
  }
  inline bool has_value_std__optional_BrowserColorScheme_(const std::optional<BrowserColorScheme>& optional) noexcept {
    return optional.has_value();
  }
  inline BrowserColorScheme get_std__optional_BrowserColorScheme_(const std::optional<BrowserColorScheme>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::unordered_map<std::string, std::string>
  /**
   * Specialized version of `std::unordered_map<std::string, std::string>`.
   */
  using std__unordered_map_std__string__std__string_ = std::unordered_map<std::string, std::string>;
  inline std::unordered_map<std::string, std::string> create_std__unordered_map_std__string__std__string_(size_t size) noexcept {
    std::unordered_map<std::string, std::string> map;
    map.reserve(size);
    return map;
  }
  inline std::vector<std::string> get_std__unordered_map_std__string__std__string__keys(const std__unordered_map_std__string__std__string_& map) noexcept {
    std::vector<std::string> keys;
    keys.reserve(map.size());
    for (const auto& entry : map) {
      keys.push_back(entry.first);
    }
    return keys;
  }
  inline std::string get_std__unordered_map_std__string__std__string__value(const std__unordered_map_std__string__std__string_& map, const std::string& key) noexcept {
    return map.find(key)->second;
  }
  inline void emplace_std__unordered_map_std__string__std__string_(std__unordered_map_std__string__std__string_& map, const std::string& key, const std::string& value) noexcept {
    map.emplace(key, value);
  }
  
  // pragma MARK: std::optional<std::unordered_map<std::string, std::string>>
  /**
   * Specialized version of `std::optional<std::unordered_map<std::string, std::string>>`.
   */
  using std__optional_std__unordered_map_std__string__std__string__ = std::optional<std::unordered_map<std::string, std::string>>;
  inline std::optional<std::unordered_map<std::string, std::string>> create_std__optional_std__unordered_map_std__string__std__string__(const std::unordered_map<std::string, std::string>& value) noexcept {
    return std::optional<std::unordered_map<std::string, std::string>>(value);
  }
  inline bool has_value_std__optional_std__unordered_map_std__string__std__string__(const std::optional<std::unordered_map<std::string, std::string>>& optional) noexcept {
    return optional.has_value();
  }
  inline std::unordered_map<std::string, std::string> get_std__optional_std__unordered_map_std__string__std__string__(const std::optional<std::unordered_map<std::string, std::string>>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<BrowserAnimations>
  /**
   * Specialized version of `std::optional<BrowserAnimations>`.
   */
  using std__optional_BrowserAnimations_ = std::optional<BrowserAnimations>;
  inline std::optional<BrowserAnimations> create_std__optional_BrowserAnimations_(const BrowserAnimations& value) noexcept {
    return std::optional<BrowserAnimations>(value);
  }
  inline bool has_value_std__optional_BrowserAnimations_(const std::optional<BrowserAnimations>& optional) noexcept {
    return optional.has_value();
  }
  inline BrowserAnimations get_std__optional_BrowserAnimations_(const std::optional<BrowserAnimations>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::optional<InAppBrowserOptions>
  /**
   * Specialized version of `std::optional<InAppBrowserOptions>`.
   */
  using std__optional_InAppBrowserOptions_ = std::optional<InAppBrowserOptions>;
  inline std::optional<InAppBrowserOptions> create_std__optional_InAppBrowserOptions_(const InAppBrowserOptions& value) noexcept {
    return std::optional<InAppBrowserOptions>(value);
  }
  inline bool has_value_std__optional_InAppBrowserOptions_(const std::optional<InAppBrowserOptions>& optional) noexcept {
    return optional.has_value();
  }
  inline InAppBrowserOptions get_std__optional_InAppBrowserOptions_(const std::optional<InAppBrowserOptions>& optional) noexcept {
    return optional.value();
  }
  
  // pragma MARK: std::shared_ptr<Promise<InAppBrowserAuthResult>>
  /**
   * Specialized version of `std::shared_ptr<Promise<InAppBrowserAuthResult>>`.
   */
  using std__shared_ptr_Promise_InAppBrowserAuthResult__ = std::shared_ptr<Promise<InAppBrowserAuthResult>>;
  inline std::shared_ptr<Promise<InAppBrowserAuthResult>> create_std__shared_ptr_Promise_InAppBrowserAuthResult__() noexcept {
    return Promise<InAppBrowserAuthResult>::create();
  }
  inline PromiseHolder<InAppBrowserAuthResult> wrap_std__shared_ptr_Promise_InAppBrowserAuthResult__(std::shared_ptr<Promise<InAppBrowserAuthResult>> promise) noexcept {
    return PromiseHolder<InAppBrowserAuthResult>(std::move(promise));
  }
  
  // pragma MARK: std::function<void(const InAppBrowserAuthResult& /* result */)>
  /**
   * Specialized version of `std::function<void(const InAppBrowserAuthResult&)>`.
   */
  using Func_void_InAppBrowserAuthResult = std::function<void(const InAppBrowserAuthResult& /* result */)>;
  /**
   * Wrapper class for a `std::function<void(const InAppBrowserAuthResult& / * result * /)>`, this can be used from Swift.
   */
  class Func_void_InAppBrowserAuthResult_Wrapper final {
  public:
    explicit Func_void_InAppBrowserAuthResult_Wrapper(std::function<void(const InAppBrowserAuthResult& /* result */)>&& func): _function(std::make_unique<std::function<void(const InAppBrowserAuthResult& /* result */)>>(std::move(func))) {}
    inline void call(InAppBrowserAuthResult result) const noexcept {
      _function->operator()(result);
    }
  private:
    std::unique_ptr<std::function<void(const InAppBrowserAuthResult& /* result */)>> _function;
  } SWIFT_NONCOPYABLE;
  Func_void_InAppBrowserAuthResult create_Func_void_InAppBrowserAuthResult(void* NON_NULL swiftClosureWrapper) noexcept;
  inline Func_void_InAppBrowserAuthResult_Wrapper wrap_Func_void_InAppBrowserAuthResult(Func_void_InAppBrowserAuthResult value) noexcept {
    return Func_void_InAppBrowserAuthResult_Wrapper(std::move(value));
  }
  
  // pragma MARK: std::shared_ptr<Promise<void>>
  /**
   * Specialized version of `std::shared_ptr<Promise<void>>`.
   */
  using std__shared_ptr_Promise_void__ = std::shared_ptr<Promise<void>>;
  inline std::shared_ptr<Promise<void>> create_std__shared_ptr_Promise_void__() noexcept {
    return Promise<void>::create();
  }
  inline PromiseHolder<void> wrap_std__shared_ptr_Promise_void__(std::shared_ptr<Promise<void>> promise) noexcept {
    return PromiseHolder<void>(std::move(promise));
  }
  
  // pragma MARK: std::function<void()>
  /**
   * Specialized version of `std::function<void()>`.
   */
  using Func_void = std::function<void()>;
  /**
   * Wrapper class for a `std::function<void()>`, this can be used from Swift.
   */
  class Func_void_Wrapper final {
  public:
    explicit Func_void_Wrapper(std::function<void()>&& func): _function(std::make_unique<std::function<void()>>(std::move(func))) {}
    inline void call() const noexcept {
      _function->operator()();
    }
  private:
    std::unique_ptr<std::function<void()>> _function;
  } SWIFT_NONCOPYABLE;
  Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept;
  inline Func_void_Wrapper wrap_Func_void(Func_void value) noexcept {
    return Func_void_Wrapper(std::move(value));
  }
  
  // pragma MARK: std::shared_ptr<HybridInappbrowserNitroSpec>
  /**
   * Specialized version of `std::shared_ptr<HybridInappbrowserNitroSpec>`.
   */
  using std__shared_ptr_HybridInappbrowserNitroSpec_ = std::shared_ptr<HybridInappbrowserNitroSpec>;
  std::shared_ptr<HybridInappbrowserNitroSpec> create_std__shared_ptr_HybridInappbrowserNitroSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
  void* NON_NULL get_std__shared_ptr_HybridInappbrowserNitroSpec_(std__shared_ptr_HybridInappbrowserNitroSpec_ cppType);
  
  // pragma MARK: std::weak_ptr<HybridInappbrowserNitroSpec>
  using std__weak_ptr_HybridInappbrowserNitroSpec_ = std::weak_ptr<HybridInappbrowserNitroSpec>;
  inline std__weak_ptr_HybridInappbrowserNitroSpec_ weakify_std__shared_ptr_HybridInappbrowserNitroSpec_(const std::shared_ptr<HybridInappbrowserNitroSpec>& strong) noexcept { return strong; }
  
  // pragma MARK: Result<std::shared_ptr<Promise<bool>>>
  using Result_std__shared_ptr_Promise_bool___ = Result<std::shared_ptr<Promise<bool>>>;
  inline Result_std__shared_ptr_Promise_bool___ create_Result_std__shared_ptr_Promise_bool___(const std::shared_ptr<Promise<bool>>& value) noexcept {
    return Result<std::shared_ptr<Promise<bool>>>::withValue(value);
  }
  inline Result_std__shared_ptr_Promise_bool___ create_Result_std__shared_ptr_Promise_bool___(const std::exception_ptr& error) noexcept {
    return Result<std::shared_ptr<Promise<bool>>>::withError(error);
  }
  
  // pragma MARK: Result<std::shared_ptr<Promise<InAppBrowserResult>>>
  using Result_std__shared_ptr_Promise_InAppBrowserResult___ = Result<std::shared_ptr<Promise<InAppBrowserResult>>>;
  inline Result_std__shared_ptr_Promise_InAppBrowserResult___ create_Result_std__shared_ptr_Promise_InAppBrowserResult___(const std::shared_ptr<Promise<InAppBrowserResult>>& value) noexcept {
    return Result<std::shared_ptr<Promise<InAppBrowserResult>>>::withValue(value);
  }
  inline Result_std__shared_ptr_Promise_InAppBrowserResult___ create_Result_std__shared_ptr_Promise_InAppBrowserResult___(const std::exception_ptr& error) noexcept {
    return Result<std::shared_ptr<Promise<InAppBrowserResult>>>::withError(error);
  }
  
  // pragma MARK: Result<std::shared_ptr<Promise<InAppBrowserAuthResult>>>
  using Result_std__shared_ptr_Promise_InAppBrowserAuthResult___ = Result<std::shared_ptr<Promise<InAppBrowserAuthResult>>>;
  inline Result_std__shared_ptr_Promise_InAppBrowserAuthResult___ create_Result_std__shared_ptr_Promise_InAppBrowserAuthResult___(const std::shared_ptr<Promise<InAppBrowserAuthResult>>& value) noexcept {
    return Result<std::shared_ptr<Promise<InAppBrowserAuthResult>>>::withValue(value);
  }
  inline Result_std__shared_ptr_Promise_InAppBrowserAuthResult___ create_Result_std__shared_ptr_Promise_InAppBrowserAuthResult___(const std::exception_ptr& error) noexcept {
    return Result<std::shared_ptr<Promise<InAppBrowserAuthResult>>>::withError(error);
  }
  
  // pragma MARK: Result<std::shared_ptr<Promise<void>>>
  using Result_std__shared_ptr_Promise_void___ = Result<std::shared_ptr<Promise<void>>>;
  inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::shared_ptr<Promise<void>>& value) noexcept {
    return Result<std::shared_ptr<Promise<void>>>::withValue(value);
  }
  inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::exception_ptr& error) noexcept {
    return Result<std::shared_ptr<Promise<void>>>::withError(error);
  }

} // namespace margelo::nitro::inappbrowsernitro::bridge::swift
