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

#pragma once

#if __has_include(<NitroModules/JSIConverter.hpp>)
#include <NitroModules/JSIConverter.hpp>
#else
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
#endif
#if __has_include(<NitroModules/NitroDefines.hpp>)
#include <NitroModules/NitroDefines.hpp>
#else
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
#endif
#if __has_include(<NitroModules/JSIHelpers.hpp>)
#include <NitroModules/JSIHelpers.hpp>
#else
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
#endif
#if __has_include(<NitroModules/PropNameIDCache.hpp>)
#include <NitroModules/PropNameIDCache.hpp>
#else
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
#endif

// 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 `StatusBarStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class StatusBarStyle; }
// 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 `UserInterfaceStyle` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class UserInterfaceStyle; }
// Forward declaration of `FormSheetContentSize` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct FormSheetContentSize; }
// Forward declaration of `BrowserShareState` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class BrowserShareState; }
// Forward declaration of `BrowserColorScheme` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { enum class BrowserColorScheme; }
// Forward declaration of `BrowserAnimations` to properly resolve imports.
namespace margelo::nitro::inappbrowsernitro { struct BrowserAnimations; }

#include "DismissButtonStyle.hpp"
#include <optional>
#include "DynamicColor.hpp"
#include "StatusBarStyle.hpp"
#include "ModalPresentationStyle.hpp"
#include "ModalTransitionStyle.hpp"
#include "UserInterfaceStyle.hpp"
#include "FormSheetContentSize.hpp"
#include "BrowserShareState.hpp"
#include "BrowserColorScheme.hpp"
#include <string>
#include <unordered_map>
#include "BrowserAnimations.hpp"

namespace margelo::nitro::inappbrowsernitro {

  /**
   * A struct which can be represented as a JavaScript object (InAppBrowserOptions).
   */
  struct InAppBrowserOptions final {
  public:
    std::optional<DismissButtonStyle> dismissButtonStyle     SWIFT_PRIVATE;
    std::optional<DynamicColor> preferredBarTintColor     SWIFT_PRIVATE;
    std::optional<DynamicColor> preferredControlTintColor     SWIFT_PRIVATE;
    std::optional<StatusBarStyle> preferredStatusBarStyle     SWIFT_PRIVATE;
    std::optional<bool> readerMode     SWIFT_PRIVATE;
    std::optional<bool> animated     SWIFT_PRIVATE;
    std::optional<ModalPresentationStyle> modalPresentationStyle     SWIFT_PRIVATE;
    std::optional<ModalTransitionStyle> modalTransitionStyle     SWIFT_PRIVATE;
    std::optional<bool> modalEnabled     SWIFT_PRIVATE;
    std::optional<bool> enableBarCollapsing     SWIFT_PRIVATE;
    std::optional<bool> ephemeralWebSession     SWIFT_PRIVATE;
    std::optional<bool> enableEdgeDismiss     SWIFT_PRIVATE;
    std::optional<UserInterfaceStyle> overrideUserInterfaceStyle     SWIFT_PRIVATE;
    std::optional<FormSheetContentSize> formSheetPreferredContentSize     SWIFT_PRIVATE;
    std::optional<bool> showTitle     SWIFT_PRIVATE;
    std::optional<DynamicColor> toolbarColor     SWIFT_PRIVATE;
    std::optional<DynamicColor> secondaryToolbarColor     SWIFT_PRIVATE;
    std::optional<DynamicColor> navigationBarColor     SWIFT_PRIVATE;
    std::optional<DynamicColor> navigationBarDividerColor     SWIFT_PRIVATE;
    std::optional<bool> enableUrlBarHiding     SWIFT_PRIVATE;
    std::optional<bool> enableDefaultShare     SWIFT_PRIVATE;
    std::optional<BrowserShareState> shareState     SWIFT_PRIVATE;
    std::optional<BrowserColorScheme> colorScheme     SWIFT_PRIVATE;
    std::optional<std::unordered_map<std::string, std::string>> headers     SWIFT_PRIVATE;
    std::optional<bool> forceCloseOnRedirection     SWIFT_PRIVATE;
    std::optional<bool> hasBackButton     SWIFT_PRIVATE;
    std::optional<std::string> browserPackage     SWIFT_PRIVATE;
    std::optional<bool> showInRecents     SWIFT_PRIVATE;
    std::optional<bool> includeReferrer     SWIFT_PRIVATE;
    std::optional<bool> instantAppsEnabled     SWIFT_PRIVATE;
    std::optional<bool> enablePullToRefresh     SWIFT_PRIVATE;
    std::optional<bool> enablePartialCustomTab     SWIFT_PRIVATE;
    std::optional<BrowserAnimations> animations     SWIFT_PRIVATE;

  public:
    InAppBrowserOptions() = default;
    explicit InAppBrowserOptions(std::optional<DismissButtonStyle> dismissButtonStyle, std::optional<DynamicColor> preferredBarTintColor, std::optional<DynamicColor> preferredControlTintColor, std::optional<StatusBarStyle> preferredStatusBarStyle, std::optional<bool> readerMode, std::optional<bool> animated, std::optional<ModalPresentationStyle> modalPresentationStyle, std::optional<ModalTransitionStyle> modalTransitionStyle, std::optional<bool> modalEnabled, std::optional<bool> enableBarCollapsing, std::optional<bool> ephemeralWebSession, std::optional<bool> enableEdgeDismiss, std::optional<UserInterfaceStyle> overrideUserInterfaceStyle, std::optional<FormSheetContentSize> formSheetPreferredContentSize, std::optional<bool> showTitle, std::optional<DynamicColor> toolbarColor, std::optional<DynamicColor> secondaryToolbarColor, std::optional<DynamicColor> navigationBarColor, std::optional<DynamicColor> navigationBarDividerColor, std::optional<bool> enableUrlBarHiding, std::optional<bool> enableDefaultShare, std::optional<BrowserShareState> shareState, std::optional<BrowserColorScheme> colorScheme, std::optional<std::unordered_map<std::string, std::string>> headers, std::optional<bool> forceCloseOnRedirection, std::optional<bool> hasBackButton, std::optional<std::string> browserPackage, std::optional<bool> showInRecents, std::optional<bool> includeReferrer, std::optional<bool> instantAppsEnabled, std::optional<bool> enablePullToRefresh, std::optional<bool> enablePartialCustomTab, std::optional<BrowserAnimations> animations): dismissButtonStyle(dismissButtonStyle), preferredBarTintColor(preferredBarTintColor), preferredControlTintColor(preferredControlTintColor), preferredStatusBarStyle(preferredStatusBarStyle), readerMode(readerMode), animated(animated), modalPresentationStyle(modalPresentationStyle), modalTransitionStyle(modalTransitionStyle), modalEnabled(modalEnabled), enableBarCollapsing(enableBarCollapsing), ephemeralWebSession(ephemeralWebSession), enableEdgeDismiss(enableEdgeDismiss), overrideUserInterfaceStyle(overrideUserInterfaceStyle), formSheetPreferredContentSize(formSheetPreferredContentSize), showTitle(showTitle), toolbarColor(toolbarColor), secondaryToolbarColor(secondaryToolbarColor), navigationBarColor(navigationBarColor), navigationBarDividerColor(navigationBarDividerColor), enableUrlBarHiding(enableUrlBarHiding), enableDefaultShare(enableDefaultShare), shareState(shareState), colorScheme(colorScheme), headers(headers), forceCloseOnRedirection(forceCloseOnRedirection), hasBackButton(hasBackButton), browserPackage(browserPackage), showInRecents(showInRecents), includeReferrer(includeReferrer), instantAppsEnabled(instantAppsEnabled), enablePullToRefresh(enablePullToRefresh), enablePartialCustomTab(enablePartialCustomTab), animations(animations) {}

  public:
    friend bool operator==(const InAppBrowserOptions& lhs, const InAppBrowserOptions& rhs) = default;
  };

} // namespace margelo::nitro::inappbrowsernitro

namespace margelo::nitro {

  // C++ InAppBrowserOptions <> JS InAppBrowserOptions (object)
  template <>
  struct JSIConverter<margelo::nitro::inappbrowsernitro::InAppBrowserOptions> final {
    static inline margelo::nitro::inappbrowsernitro::InAppBrowserOptions fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
      jsi::Object obj = arg.asObject(runtime);
      return margelo::nitro::inappbrowsernitro::InAppBrowserOptions(
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DismissButtonStyle>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "dismissButtonStyle"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredBarTintColor"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredControlTintColor"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::StatusBarStyle>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredStatusBarStyle"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "readerMode"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "animated"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalPresentationStyle>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalPresentationStyle"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalTransitionStyle>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalTransitionStyle"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalEnabled"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableBarCollapsing"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ephemeralWebSession"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableEdgeDismiss"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::UserInterfaceStyle>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "overrideUserInterfaceStyle"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::FormSheetContentSize>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "formSheetPreferredContentSize"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "showTitle"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "toolbarColor"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "secondaryToolbarColor"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "navigationBarColor"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "navigationBarDividerColor"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableUrlBarHiding"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableDefaultShare"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserShareState>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "shareState"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserColorScheme>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "colorScheme"))),
        JSIConverter<std::optional<std::unordered_map<std::string, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "headers"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "forceCloseOnRedirection"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "hasBackButton"))),
        JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "browserPackage"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "showInRecents"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "includeReferrer"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "instantAppsEnabled"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enablePullToRefresh"))),
        JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enablePartialCustomTab"))),
        JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserAnimations>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "animations")))
      );
    }
    static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::inappbrowsernitro::InAppBrowserOptions& arg) {
      jsi::Object obj(runtime);
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "dismissButtonStyle"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DismissButtonStyle>>::toJSI(runtime, arg.dismissButtonStyle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "preferredBarTintColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.preferredBarTintColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "preferredControlTintColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.preferredControlTintColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "preferredStatusBarStyle"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::StatusBarStyle>>::toJSI(runtime, arg.preferredStatusBarStyle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "readerMode"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.readerMode));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "animated"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.animated));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "modalPresentationStyle"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalPresentationStyle>>::toJSI(runtime, arg.modalPresentationStyle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "modalTransitionStyle"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalTransitionStyle>>::toJSI(runtime, arg.modalTransitionStyle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "modalEnabled"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.modalEnabled));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enableBarCollapsing"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enableBarCollapsing));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "ephemeralWebSession"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.ephemeralWebSession));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enableEdgeDismiss"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enableEdgeDismiss));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "overrideUserInterfaceStyle"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::UserInterfaceStyle>>::toJSI(runtime, arg.overrideUserInterfaceStyle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "formSheetPreferredContentSize"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::FormSheetContentSize>>::toJSI(runtime, arg.formSheetPreferredContentSize));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "showTitle"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.showTitle));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "toolbarColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.toolbarColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "secondaryToolbarColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.secondaryToolbarColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "navigationBarColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.navigationBarColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "navigationBarDividerColor"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::toJSI(runtime, arg.navigationBarDividerColor));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enableUrlBarHiding"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enableUrlBarHiding));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enableDefaultShare"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enableDefaultShare));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "shareState"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserShareState>>::toJSI(runtime, arg.shareState));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "colorScheme"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserColorScheme>>::toJSI(runtime, arg.colorScheme));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "headers"), JSIConverter<std::optional<std::unordered_map<std::string, std::string>>>::toJSI(runtime, arg.headers));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "forceCloseOnRedirection"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.forceCloseOnRedirection));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "hasBackButton"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.hasBackButton));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "browserPackage"), JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.browserPackage));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "showInRecents"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.showInRecents));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "includeReferrer"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.includeReferrer));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "instantAppsEnabled"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.instantAppsEnabled));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enablePullToRefresh"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enablePullToRefresh));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "enablePartialCustomTab"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.enablePartialCustomTab));
      obj.setProperty(runtime, PropNameIDCache::get(runtime, "animations"), JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserAnimations>>::toJSI(runtime, arg.animations));
      return obj;
    }
    static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
      if (!value.isObject()) {
        return false;
      }
      jsi::Object obj = value.getObject(runtime);
      if (!nitro::isPlainObject(runtime, obj)) {
        return false;
      }
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DismissButtonStyle>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "dismissButtonStyle")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredBarTintColor")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredControlTintColor")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::StatusBarStyle>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "preferredStatusBarStyle")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "readerMode")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "animated")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalPresentationStyle>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalPresentationStyle")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::ModalTransitionStyle>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalTransitionStyle")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "modalEnabled")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableBarCollapsing")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ephemeralWebSession")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableEdgeDismiss")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::UserInterfaceStyle>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "overrideUserInterfaceStyle")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::FormSheetContentSize>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "formSheetPreferredContentSize")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "showTitle")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "toolbarColor")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "secondaryToolbarColor")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "navigationBarColor")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::DynamicColor>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "navigationBarDividerColor")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableUrlBarHiding")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enableDefaultShare")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserShareState>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "shareState")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserColorScheme>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "colorScheme")))) return false;
      if (!JSIConverter<std::optional<std::unordered_map<std::string, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "headers")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "forceCloseOnRedirection")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "hasBackButton")))) return false;
      if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "browserPackage")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "showInRecents")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "includeReferrer")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "instantAppsEnabled")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enablePullToRefresh")))) return false;
      if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enablePartialCustomTab")))) return false;
      if (!JSIConverter<std::optional<margelo::nitro::inappbrowsernitro::BrowserAnimations>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "animations")))) return false;
      return true;
    }
  };

} // namespace margelo::nitro
