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

#pragma once

// Forward declarations of C++ defined types
// Forward declaration of `HybridNitroSystemNavigationBarSpec` to properly resolve imports.
namespace margelo::nitro::systemnavigationbar { class HybridNitroSystemNavigationBarSpec; }

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

// Include C++ defined types
#include "HybridNitroSystemNavigationBarSpec.hpp"
#include <NitroModules/Result.hpp>
#include <exception>
#include <memory>
#include <optional>

/**
 * 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::systemnavigationbar::bridge::swift {

  // 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) {
    return std::optional<bool>(value);
  }
  
  // pragma MARK: std::shared_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>
  /**
   * Specialized version of `std::shared_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>`.
   */
  using std__shared_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_ = std::shared_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>;
  std::shared_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec> create_std__shared_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_(void* _Nonnull swiftUnsafePointer);
  void* _Nonnull get_std__shared_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_(std__shared_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_ cppType);
  
  // pragma MARK: std::weak_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>
  using std__weak_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_ = std::weak_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>;
  inline std__weak_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_ weakify_std__shared_ptr_margelo__nitro__systemnavigationbar__HybridNitroSystemNavigationBarSpec_(const std::shared_ptr<margelo::nitro::systemnavigationbar::HybridNitroSystemNavigationBarSpec>& strong) { return strong; }
  
  // pragma MARK: Result<double>
  using Result_double_ = Result<double>;
  inline Result_double_ create_Result_double_(double value) {
    return Result<double>::withValue(std::move(value));
  }
  inline Result_double_ create_Result_double_(const std::exception_ptr& error) {
    return Result<double>::withError(error);
  }
  
  // pragma MARK: Result<void>
  using Result_void_ = Result<void>;
  inline Result_void_ create_Result_void_() {
    return Result<void>::withValue();
  }
  inline Result_void_ create_Result_void_(const std::exception_ptr& error) {
    return Result<void>::withError(error);
  }

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