/**
 * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
 *
 * Do not edit this file as changes may cause incorrect behavior and will be lost
 * once the code is regenerated.
 *
 * @generated by codegen project: GenerateModuleH.js
 */

#pragma once

#include <ReactCommon/TurboModule.h>
#include <react/bridging/Bridging.h>

namespace facebook::react {


  class JSI_EXPORT NativeRNAirshipCxxSpecJSI : public TurboModule {
protected:
  NativeRNAirshipCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);

public:
  virtual jsi::Value takeOff(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value isFlying(jsi::Runtime &rt) = 0;
  virtual void airshipListenerAdded(jsi::Runtime &rt, jsi::String eventName) = 0;
  virtual jsi::Value takePendingEvents(jsi::Runtime &rt, jsi::String eventName, bool isHeadlessJS) = 0;
  virtual void addListener(jsi::Runtime &rt, jsi::String eventType) = 0;
  virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
  virtual jsi::Value channelEnableChannelCreation(jsi::Runtime &rt) = 0;
  virtual jsi::Value channelAddTag(jsi::Runtime &rt, jsi::String tag) = 0;
  virtual jsi::Value channelRemoveTag(jsi::Runtime &rt, jsi::String tag) = 0;
  virtual jsi::Value channelEditTags(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value channelGetTags(jsi::Runtime &rt) = 0;
  virtual jsi::Value channelGetChannelId(jsi::Runtime &rt) = 0;
  virtual jsi::Value channelGetSubscriptionLists(jsi::Runtime &rt) = 0;
  virtual jsi::Value channelEditTagGroups(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value channelEditAttributes(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value channelEditSubscriptionLists(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value pushSetUserNotificationsEnabled(jsi::Runtime &rt, bool enabled) = 0;
  virtual jsi::Value pushIsUserNotificationsEnabled(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushEnableUserNotifications(jsi::Runtime &rt, std::optional<jsi::Object> options) = 0;
  virtual jsi::Value pushGetNotificationStatus(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushGetRegistrationToken(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushGetActiveNotifications(jsi::Runtime &rt) = 0;
  virtual void pushClearNotifications(jsi::Runtime &rt) = 0;
  virtual void pushClearNotification(jsi::Runtime &rt, jsi::String identifier) = 0;
  virtual jsi::Value pushIosSetForegroundPresentationOptions(jsi::Runtime &rt, jsi::Array options) = 0;
  virtual jsi::Value pushIosSetNotificationOptions(jsi::Runtime &rt, jsi::Array options) = 0;
  virtual jsi::Value pushIosSetAutobadgeEnabled(jsi::Runtime &rt, bool enabled) = 0;
  virtual jsi::Value pushIosIsAutobadgeEnabled(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushIosSetBadgeNumber(jsi::Runtime &rt, double badgeNumber) = 0;
  virtual jsi::Value pushIosGetBadgeNumber(jsi::Runtime &rt) = 0;
  virtual void pushIosIsOverridePresentationOptionsEnabled(jsi::Runtime &rt, bool enabled) = 0;
  virtual void pushIosOverridePresentationOptions(jsi::Runtime &rt, jsi::String requestId, std::optional<jsi::Array> options) = 0;
  virtual jsi::Value pushIosGetAuthorizedNotificationSettings(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushIosGetAuthorizedNotificationStatus(jsi::Runtime &rt) = 0;
  virtual jsi::Value pushAndroidIsNotificationChannelEnabled(jsi::Runtime &rt, jsi::String channel) = 0;
  virtual void pushAndroidSetNotificationConfig(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual void pushAndroidIsOverrideForegroundDisplayEnabled(jsi::Runtime &rt, bool enabled) = 0;
  virtual void pushAndroidOverrideForegroundDisplay(jsi::Runtime &rt, jsi::String requestId, bool shouldDisplay) = 0;
  virtual jsi::Value contactIdentify(jsi::Runtime &rt, jsi::String namedUser) = 0;
  virtual jsi::Value contactReset(jsi::Runtime &rt) = 0;
  virtual jsi::Value contactNotifyRemoteLogin(jsi::Runtime &rt) = 0;
  virtual jsi::Value contactGetNamedUserId(jsi::Runtime &rt) = 0;
  virtual jsi::Value contactGetSubscriptionLists(jsi::Runtime &rt) = 0;
  virtual jsi::Value contactEditTagGroups(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value contactEditAttributes(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value contactEditSubscriptionLists(jsi::Runtime &rt, jsi::Array operations) = 0;
  virtual jsi::Value analyticsTrackScreen(jsi::Runtime &rt, std::optional<jsi::String> screen) = 0;
  virtual jsi::Value analyticsAssociateIdentifier(jsi::Runtime &rt, jsi::String key, std::optional<jsi::String> identifier) = 0;
  virtual jsi::Value addCustomEvent(jsi::Runtime &rt, jsi::Object event) = 0;
  virtual jsi::Value analyticsGetSessionId(jsi::Runtime &rt) = 0;
  virtual jsi::Value actionRun(jsi::Runtime &rt, jsi::Object action) = 0;
  virtual jsi::Value privacyManagerSetEnabledFeatures(jsi::Runtime &rt, jsi::Array features) = 0;
  virtual jsi::Value privacyManagerGetEnabledFeatures(jsi::Runtime &rt) = 0;
  virtual jsi::Value privacyManagerEnableFeature(jsi::Runtime &rt, jsi::Array features) = 0;
  virtual jsi::Value privacyManagerDisableFeature(jsi::Runtime &rt, jsi::Array features) = 0;
  virtual jsi::Value privacyManagerIsFeatureEnabled(jsi::Runtime &rt, jsi::Array features) = 0;
  virtual jsi::Value inAppSetDisplayInterval(jsi::Runtime &rt, double milliseconds) = 0;
  virtual jsi::Value inAppGetDisplayInterval(jsi::Runtime &rt) = 0;
  virtual jsi::Value inAppSetPaused(jsi::Runtime &rt, bool paused) = 0;
  virtual jsi::Value inAppIsPaused(jsi::Runtime &rt) = 0;
  virtual void inAppResendPendingEmbeddedEvent(jsi::Runtime &rt) = 0;
  virtual jsi::Value messageCenterGetUnreadCount(jsi::Runtime &rt) = 0;
  virtual jsi::Value messageCenterDismiss(jsi::Runtime &rt) = 0;
  virtual jsi::Value messageCenterDisplay(jsi::Runtime &rt, std::optional<jsi::String> messageId) = 0;
  virtual jsi::Value messageCenterGetMessages(jsi::Runtime &rt) = 0;
  virtual jsi::Value messageCenterDeleteMessage(jsi::Runtime &rt, jsi::String messageId) = 0;
  virtual jsi::Value messageCenterMarkMessageRead(jsi::Runtime &rt, jsi::String messageId) = 0;
  virtual jsi::Value messageCenterRefresh(jsi::Runtime &rt) = 0;
  virtual void messageCenterSetAutoLaunchDefaultMessageCenter(jsi::Runtime &rt, bool enabled) = 0;
  virtual jsi::Value messageCenterShowMessageCenter(jsi::Runtime &rt, std::optional<jsi::String> messageId) = 0;
  virtual jsi::Value messageCenterShowMessageView(jsi::Runtime &rt, jsi::String messageId) = 0;
  virtual jsi::Value preferenceCenterDisplay(jsi::Runtime &rt, jsi::String preferenceCenterId) = 0;
  virtual jsi::Value preferenceCenterGetConfig(jsi::Runtime &rt, jsi::String preferenceCenterId) = 0;
  virtual void preferenceCenterAutoLaunchDefaultPreferenceCenter(jsi::Runtime &rt, jsi::String preferenceCenterId, bool autoLaunch) = 0;
  virtual jsi::Value localeSetLocaleOverride(jsi::Runtime &rt, jsi::String localeIdentifier) = 0;
  virtual jsi::Value localeGetLocale(jsi::Runtime &rt) = 0;
  virtual jsi::Value localeClearLocaleOverride(jsi::Runtime &rt) = 0;
  virtual jsi::Value featureFlagManagerFlag(jsi::Runtime &rt, jsi::String flagName, bool useResultCache) = 0;
  virtual jsi::Value featureFlagManagerTrackInteraction(jsi::Runtime &rt, jsi::Object flag) = 0;
  virtual jsi::Value featureFlagManagerResultCacheGetFlag(jsi::Runtime &rt, jsi::String flagName) = 0;
  virtual jsi::Value featureFlagManagerResultCacheSetFlag(jsi::Runtime &rt, jsi::Object flag, double ttl) = 0;
  virtual jsi::Value featureFlagManagerResultCacheRemoveFlag(jsi::Runtime &rt, jsi::String flagName) = 0;
  virtual jsi::Value liveActivityListAll(jsi::Runtime &rt) = 0;
  virtual jsi::Value liveActivityList(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveActivityStart(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveActivityUpdate(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveActivityEnd(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveUpdateListAll(jsi::Runtime &rt) = 0;
  virtual jsi::Value liveUpdateList(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveUpdateStart(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveUpdateUpdate(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveUpdateEnd(jsi::Runtime &rt, jsi::Object request) = 0;
  virtual jsi::Value liveUpdateClearAll(jsi::Runtime &rt) = 0;

};

template <typename T>
class JSI_EXPORT NativeRNAirshipCxxSpec : public TurboModule {
public:
  jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
    return delegate_.create(rt, propName);
  }

  std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override {
    return delegate_.getPropertyNames(runtime);
  }

  static constexpr std::string_view kModuleName = "RNAirship";

protected:
  NativeRNAirshipCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
    : TurboModule(std::string{NativeRNAirshipCxxSpec::kModuleName}, jsInvoker),
      delegate_(reinterpret_cast<T*>(this), jsInvoker) {}


private:
  class Delegate : public NativeRNAirshipCxxSpecJSI {
  public:
    Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
      NativeRNAirshipCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {

    }

    jsi::Value takeOff(jsi::Runtime &rt, jsi::Object config) override {
      static_assert(
          bridging::getParameterCount(&T::takeOff) == 2,
          "Expected takeOff(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::takeOff, jsInvoker_, instance_, std::move(config));
    }
    jsi::Value isFlying(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::isFlying) == 1,
          "Expected isFlying(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::isFlying, jsInvoker_, instance_);
    }
    void airshipListenerAdded(jsi::Runtime &rt, jsi::String eventName) override {
      static_assert(
          bridging::getParameterCount(&T::airshipListenerAdded) == 2,
          "Expected airshipListenerAdded(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::airshipListenerAdded, jsInvoker_, instance_, std::move(eventName));
    }
    jsi::Value takePendingEvents(jsi::Runtime &rt, jsi::String eventName, bool isHeadlessJS) override {
      static_assert(
          bridging::getParameterCount(&T::takePendingEvents) == 3,
          "Expected takePendingEvents(...) to have 3 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::takePendingEvents, jsInvoker_, instance_, std::move(eventName), std::move(isHeadlessJS));
    }
    void addListener(jsi::Runtime &rt, jsi::String eventType) override {
      static_assert(
          bridging::getParameterCount(&T::addListener) == 2,
          "Expected addListener(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::addListener, jsInvoker_, instance_, std::move(eventType));
    }
    void removeListeners(jsi::Runtime &rt, double count) override {
      static_assert(
          bridging::getParameterCount(&T::removeListeners) == 2,
          "Expected removeListeners(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
    }
    jsi::Value channelEnableChannelCreation(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::channelEnableChannelCreation) == 1,
          "Expected channelEnableChannelCreation(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelEnableChannelCreation, jsInvoker_, instance_);
    }
    jsi::Value channelAddTag(jsi::Runtime &rt, jsi::String tag) override {
      static_assert(
          bridging::getParameterCount(&T::channelAddTag) == 2,
          "Expected channelAddTag(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelAddTag, jsInvoker_, instance_, std::move(tag));
    }
    jsi::Value channelRemoveTag(jsi::Runtime &rt, jsi::String tag) override {
      static_assert(
          bridging::getParameterCount(&T::channelRemoveTag) == 2,
          "Expected channelRemoveTag(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelRemoveTag, jsInvoker_, instance_, std::move(tag));
    }
    jsi::Value channelEditTags(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::channelEditTags) == 2,
          "Expected channelEditTags(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelEditTags, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value channelGetTags(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::channelGetTags) == 1,
          "Expected channelGetTags(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelGetTags, jsInvoker_, instance_);
    }
    jsi::Value channelGetChannelId(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::channelGetChannelId) == 1,
          "Expected channelGetChannelId(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelGetChannelId, jsInvoker_, instance_);
    }
    jsi::Value channelGetSubscriptionLists(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::channelGetSubscriptionLists) == 1,
          "Expected channelGetSubscriptionLists(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelGetSubscriptionLists, jsInvoker_, instance_);
    }
    jsi::Value channelEditTagGroups(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::channelEditTagGroups) == 2,
          "Expected channelEditTagGroups(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelEditTagGroups, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value channelEditAttributes(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::channelEditAttributes) == 2,
          "Expected channelEditAttributes(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelEditAttributes, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value channelEditSubscriptionLists(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::channelEditSubscriptionLists) == 2,
          "Expected channelEditSubscriptionLists(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::channelEditSubscriptionLists, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value pushSetUserNotificationsEnabled(jsi::Runtime &rt, bool enabled) override {
      static_assert(
          bridging::getParameterCount(&T::pushSetUserNotificationsEnabled) == 2,
          "Expected pushSetUserNotificationsEnabled(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushSetUserNotificationsEnabled, jsInvoker_, instance_, std::move(enabled));
    }
    jsi::Value pushIsUserNotificationsEnabled(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushIsUserNotificationsEnabled) == 1,
          "Expected pushIsUserNotificationsEnabled(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIsUserNotificationsEnabled, jsInvoker_, instance_);
    }
    jsi::Value pushEnableUserNotifications(jsi::Runtime &rt, std::optional<jsi::Object> options) override {
      static_assert(
          bridging::getParameterCount(&T::pushEnableUserNotifications) == 2,
          "Expected pushEnableUserNotifications(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushEnableUserNotifications, jsInvoker_, instance_, std::move(options));
    }
    jsi::Value pushGetNotificationStatus(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushGetNotificationStatus) == 1,
          "Expected pushGetNotificationStatus(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushGetNotificationStatus, jsInvoker_, instance_);
    }
    jsi::Value pushGetRegistrationToken(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushGetRegistrationToken) == 1,
          "Expected pushGetRegistrationToken(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushGetRegistrationToken, jsInvoker_, instance_);
    }
    jsi::Value pushGetActiveNotifications(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushGetActiveNotifications) == 1,
          "Expected pushGetActiveNotifications(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushGetActiveNotifications, jsInvoker_, instance_);
    }
    void pushClearNotifications(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushClearNotifications) == 1,
          "Expected pushClearNotifications(...) to have 1 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushClearNotifications, jsInvoker_, instance_);
    }
    void pushClearNotification(jsi::Runtime &rt, jsi::String identifier) override {
      static_assert(
          bridging::getParameterCount(&T::pushClearNotification) == 2,
          "Expected pushClearNotification(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushClearNotification, jsInvoker_, instance_, std::move(identifier));
    }
    jsi::Value pushIosSetForegroundPresentationOptions(jsi::Runtime &rt, jsi::Array options) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosSetForegroundPresentationOptions) == 2,
          "Expected pushIosSetForegroundPresentationOptions(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosSetForegroundPresentationOptions, jsInvoker_, instance_, std::move(options));
    }
    jsi::Value pushIosSetNotificationOptions(jsi::Runtime &rt, jsi::Array options) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosSetNotificationOptions) == 2,
          "Expected pushIosSetNotificationOptions(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosSetNotificationOptions, jsInvoker_, instance_, std::move(options));
    }
    jsi::Value pushIosSetAutobadgeEnabled(jsi::Runtime &rt, bool enabled) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosSetAutobadgeEnabled) == 2,
          "Expected pushIosSetAutobadgeEnabled(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosSetAutobadgeEnabled, jsInvoker_, instance_, std::move(enabled));
    }
    jsi::Value pushIosIsAutobadgeEnabled(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosIsAutobadgeEnabled) == 1,
          "Expected pushIosIsAutobadgeEnabled(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosIsAutobadgeEnabled, jsInvoker_, instance_);
    }
    jsi::Value pushIosSetBadgeNumber(jsi::Runtime &rt, double badgeNumber) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosSetBadgeNumber) == 2,
          "Expected pushIosSetBadgeNumber(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosSetBadgeNumber, jsInvoker_, instance_, std::move(badgeNumber));
    }
    jsi::Value pushIosGetBadgeNumber(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosGetBadgeNumber) == 1,
          "Expected pushIosGetBadgeNumber(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosGetBadgeNumber, jsInvoker_, instance_);
    }
    void pushIosIsOverridePresentationOptionsEnabled(jsi::Runtime &rt, bool enabled) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosIsOverridePresentationOptionsEnabled) == 2,
          "Expected pushIosIsOverridePresentationOptionsEnabled(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushIosIsOverridePresentationOptionsEnabled, jsInvoker_, instance_, std::move(enabled));
    }
    void pushIosOverridePresentationOptions(jsi::Runtime &rt, jsi::String requestId, std::optional<jsi::Array> options) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosOverridePresentationOptions) == 3,
          "Expected pushIosOverridePresentationOptions(...) to have 3 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushIosOverridePresentationOptions, jsInvoker_, instance_, std::move(requestId), std::move(options));
    }
    jsi::Value pushIosGetAuthorizedNotificationSettings(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosGetAuthorizedNotificationSettings) == 1,
          "Expected pushIosGetAuthorizedNotificationSettings(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosGetAuthorizedNotificationSettings, jsInvoker_, instance_);
    }
    jsi::Value pushIosGetAuthorizedNotificationStatus(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::pushIosGetAuthorizedNotificationStatus) == 1,
          "Expected pushIosGetAuthorizedNotificationStatus(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushIosGetAuthorizedNotificationStatus, jsInvoker_, instance_);
    }
    jsi::Value pushAndroidIsNotificationChannelEnabled(jsi::Runtime &rt, jsi::String channel) override {
      static_assert(
          bridging::getParameterCount(&T::pushAndroidIsNotificationChannelEnabled) == 2,
          "Expected pushAndroidIsNotificationChannelEnabled(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::pushAndroidIsNotificationChannelEnabled, jsInvoker_, instance_, std::move(channel));
    }
    void pushAndroidSetNotificationConfig(jsi::Runtime &rt, jsi::Object config) override {
      static_assert(
          bridging::getParameterCount(&T::pushAndroidSetNotificationConfig) == 2,
          "Expected pushAndroidSetNotificationConfig(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushAndroidSetNotificationConfig, jsInvoker_, instance_, std::move(config));
    }
    void pushAndroidIsOverrideForegroundDisplayEnabled(jsi::Runtime &rt, bool enabled) override {
      static_assert(
          bridging::getParameterCount(&T::pushAndroidIsOverrideForegroundDisplayEnabled) == 2,
          "Expected pushAndroidIsOverrideForegroundDisplayEnabled(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushAndroidIsOverrideForegroundDisplayEnabled, jsInvoker_, instance_, std::move(enabled));
    }
    void pushAndroidOverrideForegroundDisplay(jsi::Runtime &rt, jsi::String requestId, bool shouldDisplay) override {
      static_assert(
          bridging::getParameterCount(&T::pushAndroidOverrideForegroundDisplay) == 3,
          "Expected pushAndroidOverrideForegroundDisplay(...) to have 3 parameters");

      return bridging::callFromJs<void>(
          rt, &T::pushAndroidOverrideForegroundDisplay, jsInvoker_, instance_, std::move(requestId), std::move(shouldDisplay));
    }
    jsi::Value contactIdentify(jsi::Runtime &rt, jsi::String namedUser) override {
      static_assert(
          bridging::getParameterCount(&T::contactIdentify) == 2,
          "Expected contactIdentify(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactIdentify, jsInvoker_, instance_, std::move(namedUser));
    }
    jsi::Value contactReset(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::contactReset) == 1,
          "Expected contactReset(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactReset, jsInvoker_, instance_);
    }
    jsi::Value contactNotifyRemoteLogin(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::contactNotifyRemoteLogin) == 1,
          "Expected contactNotifyRemoteLogin(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactNotifyRemoteLogin, jsInvoker_, instance_);
    }
    jsi::Value contactGetNamedUserId(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::contactGetNamedUserId) == 1,
          "Expected contactGetNamedUserId(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactGetNamedUserId, jsInvoker_, instance_);
    }
    jsi::Value contactGetSubscriptionLists(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::contactGetSubscriptionLists) == 1,
          "Expected contactGetSubscriptionLists(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactGetSubscriptionLists, jsInvoker_, instance_);
    }
    jsi::Value contactEditTagGroups(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::contactEditTagGroups) == 2,
          "Expected contactEditTagGroups(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactEditTagGroups, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value contactEditAttributes(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::contactEditAttributes) == 2,
          "Expected contactEditAttributes(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactEditAttributes, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value contactEditSubscriptionLists(jsi::Runtime &rt, jsi::Array operations) override {
      static_assert(
          bridging::getParameterCount(&T::contactEditSubscriptionLists) == 2,
          "Expected contactEditSubscriptionLists(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::contactEditSubscriptionLists, jsInvoker_, instance_, std::move(operations));
    }
    jsi::Value analyticsTrackScreen(jsi::Runtime &rt, std::optional<jsi::String> screen) override {
      static_assert(
          bridging::getParameterCount(&T::analyticsTrackScreen) == 2,
          "Expected analyticsTrackScreen(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::analyticsTrackScreen, jsInvoker_, instance_, std::move(screen));
    }
    jsi::Value analyticsAssociateIdentifier(jsi::Runtime &rt, jsi::String key, std::optional<jsi::String> identifier) override {
      static_assert(
          bridging::getParameterCount(&T::analyticsAssociateIdentifier) == 3,
          "Expected analyticsAssociateIdentifier(...) to have 3 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::analyticsAssociateIdentifier, jsInvoker_, instance_, std::move(key), std::move(identifier));
    }
    jsi::Value addCustomEvent(jsi::Runtime &rt, jsi::Object event) override {
      static_assert(
          bridging::getParameterCount(&T::addCustomEvent) == 2,
          "Expected addCustomEvent(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::addCustomEvent, jsInvoker_, instance_, std::move(event));
    }
    jsi::Value analyticsGetSessionId(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::analyticsGetSessionId) == 1,
          "Expected analyticsGetSessionId(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::analyticsGetSessionId, jsInvoker_, instance_);
    }
    jsi::Value actionRun(jsi::Runtime &rt, jsi::Object action) override {
      static_assert(
          bridging::getParameterCount(&T::actionRun) == 2,
          "Expected actionRun(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::actionRun, jsInvoker_, instance_, std::move(action));
    }
    jsi::Value privacyManagerSetEnabledFeatures(jsi::Runtime &rt, jsi::Array features) override {
      static_assert(
          bridging::getParameterCount(&T::privacyManagerSetEnabledFeatures) == 2,
          "Expected privacyManagerSetEnabledFeatures(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::privacyManagerSetEnabledFeatures, jsInvoker_, instance_, std::move(features));
    }
    jsi::Value privacyManagerGetEnabledFeatures(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::privacyManagerGetEnabledFeatures) == 1,
          "Expected privacyManagerGetEnabledFeatures(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::privacyManagerGetEnabledFeatures, jsInvoker_, instance_);
    }
    jsi::Value privacyManagerEnableFeature(jsi::Runtime &rt, jsi::Array features) override {
      static_assert(
          bridging::getParameterCount(&T::privacyManagerEnableFeature) == 2,
          "Expected privacyManagerEnableFeature(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::privacyManagerEnableFeature, jsInvoker_, instance_, std::move(features));
    }
    jsi::Value privacyManagerDisableFeature(jsi::Runtime &rt, jsi::Array features) override {
      static_assert(
          bridging::getParameterCount(&T::privacyManagerDisableFeature) == 2,
          "Expected privacyManagerDisableFeature(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::privacyManagerDisableFeature, jsInvoker_, instance_, std::move(features));
    }
    jsi::Value privacyManagerIsFeatureEnabled(jsi::Runtime &rt, jsi::Array features) override {
      static_assert(
          bridging::getParameterCount(&T::privacyManagerIsFeatureEnabled) == 2,
          "Expected privacyManagerIsFeatureEnabled(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::privacyManagerIsFeatureEnabled, jsInvoker_, instance_, std::move(features));
    }
    jsi::Value inAppSetDisplayInterval(jsi::Runtime &rt, double milliseconds) override {
      static_assert(
          bridging::getParameterCount(&T::inAppSetDisplayInterval) == 2,
          "Expected inAppSetDisplayInterval(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::inAppSetDisplayInterval, jsInvoker_, instance_, std::move(milliseconds));
    }
    jsi::Value inAppGetDisplayInterval(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::inAppGetDisplayInterval) == 1,
          "Expected inAppGetDisplayInterval(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::inAppGetDisplayInterval, jsInvoker_, instance_);
    }
    jsi::Value inAppSetPaused(jsi::Runtime &rt, bool paused) override {
      static_assert(
          bridging::getParameterCount(&T::inAppSetPaused) == 2,
          "Expected inAppSetPaused(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::inAppSetPaused, jsInvoker_, instance_, std::move(paused));
    }
    jsi::Value inAppIsPaused(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::inAppIsPaused) == 1,
          "Expected inAppIsPaused(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::inAppIsPaused, jsInvoker_, instance_);
    }
    void inAppResendPendingEmbeddedEvent(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::inAppResendPendingEmbeddedEvent) == 1,
          "Expected inAppResendPendingEmbeddedEvent(...) to have 1 parameters");

      return bridging::callFromJs<void>(
          rt, &T::inAppResendPendingEmbeddedEvent, jsInvoker_, instance_);
    }
    jsi::Value messageCenterGetUnreadCount(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterGetUnreadCount) == 1,
          "Expected messageCenterGetUnreadCount(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterGetUnreadCount, jsInvoker_, instance_);
    }
    jsi::Value messageCenterDismiss(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterDismiss) == 1,
          "Expected messageCenterDismiss(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterDismiss, jsInvoker_, instance_);
    }
    jsi::Value messageCenterDisplay(jsi::Runtime &rt, std::optional<jsi::String> messageId) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterDisplay) == 2,
          "Expected messageCenterDisplay(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterDisplay, jsInvoker_, instance_, std::move(messageId));
    }
    jsi::Value messageCenterGetMessages(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterGetMessages) == 1,
          "Expected messageCenterGetMessages(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterGetMessages, jsInvoker_, instance_);
    }
    jsi::Value messageCenterDeleteMessage(jsi::Runtime &rt, jsi::String messageId) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterDeleteMessage) == 2,
          "Expected messageCenterDeleteMessage(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterDeleteMessage, jsInvoker_, instance_, std::move(messageId));
    }
    jsi::Value messageCenterMarkMessageRead(jsi::Runtime &rt, jsi::String messageId) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterMarkMessageRead) == 2,
          "Expected messageCenterMarkMessageRead(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterMarkMessageRead, jsInvoker_, instance_, std::move(messageId));
    }
    jsi::Value messageCenterRefresh(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterRefresh) == 1,
          "Expected messageCenterRefresh(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterRefresh, jsInvoker_, instance_);
    }
    void messageCenterSetAutoLaunchDefaultMessageCenter(jsi::Runtime &rt, bool enabled) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterSetAutoLaunchDefaultMessageCenter) == 2,
          "Expected messageCenterSetAutoLaunchDefaultMessageCenter(...) to have 2 parameters");

      return bridging::callFromJs<void>(
          rt, &T::messageCenterSetAutoLaunchDefaultMessageCenter, jsInvoker_, instance_, std::move(enabled));
    }
    jsi::Value messageCenterShowMessageCenter(jsi::Runtime &rt, std::optional<jsi::String> messageId) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterShowMessageCenter) == 2,
          "Expected messageCenterShowMessageCenter(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterShowMessageCenter, jsInvoker_, instance_, std::move(messageId));
    }
    jsi::Value messageCenterShowMessageView(jsi::Runtime &rt, jsi::String messageId) override {
      static_assert(
          bridging::getParameterCount(&T::messageCenterShowMessageView) == 2,
          "Expected messageCenterShowMessageView(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::messageCenterShowMessageView, jsInvoker_, instance_, std::move(messageId));
    }
    jsi::Value preferenceCenterDisplay(jsi::Runtime &rt, jsi::String preferenceCenterId) override {
      static_assert(
          bridging::getParameterCount(&T::preferenceCenterDisplay) == 2,
          "Expected preferenceCenterDisplay(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::preferenceCenterDisplay, jsInvoker_, instance_, std::move(preferenceCenterId));
    }
    jsi::Value preferenceCenterGetConfig(jsi::Runtime &rt, jsi::String preferenceCenterId) override {
      static_assert(
          bridging::getParameterCount(&T::preferenceCenterGetConfig) == 2,
          "Expected preferenceCenterGetConfig(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::preferenceCenterGetConfig, jsInvoker_, instance_, std::move(preferenceCenterId));
    }
    void preferenceCenterAutoLaunchDefaultPreferenceCenter(jsi::Runtime &rt, jsi::String preferenceCenterId, bool autoLaunch) override {
      static_assert(
          bridging::getParameterCount(&T::preferenceCenterAutoLaunchDefaultPreferenceCenter) == 3,
          "Expected preferenceCenterAutoLaunchDefaultPreferenceCenter(...) to have 3 parameters");

      return bridging::callFromJs<void>(
          rt, &T::preferenceCenterAutoLaunchDefaultPreferenceCenter, jsInvoker_, instance_, std::move(preferenceCenterId), std::move(autoLaunch));
    }
    jsi::Value localeSetLocaleOverride(jsi::Runtime &rt, jsi::String localeIdentifier) override {
      static_assert(
          bridging::getParameterCount(&T::localeSetLocaleOverride) == 2,
          "Expected localeSetLocaleOverride(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::localeSetLocaleOverride, jsInvoker_, instance_, std::move(localeIdentifier));
    }
    jsi::Value localeGetLocale(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::localeGetLocale) == 1,
          "Expected localeGetLocale(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::localeGetLocale, jsInvoker_, instance_);
    }
    jsi::Value localeClearLocaleOverride(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::localeClearLocaleOverride) == 1,
          "Expected localeClearLocaleOverride(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::localeClearLocaleOverride, jsInvoker_, instance_);
    }
    jsi::Value featureFlagManagerFlag(jsi::Runtime &rt, jsi::String flagName, bool useResultCache) override {
      static_assert(
          bridging::getParameterCount(&T::featureFlagManagerFlag) == 3,
          "Expected featureFlagManagerFlag(...) to have 3 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::featureFlagManagerFlag, jsInvoker_, instance_, std::move(flagName), std::move(useResultCache));
    }
    jsi::Value featureFlagManagerTrackInteraction(jsi::Runtime &rt, jsi::Object flag) override {
      static_assert(
          bridging::getParameterCount(&T::featureFlagManagerTrackInteraction) == 2,
          "Expected featureFlagManagerTrackInteraction(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::featureFlagManagerTrackInteraction, jsInvoker_, instance_, std::move(flag));
    }
    jsi::Value featureFlagManagerResultCacheGetFlag(jsi::Runtime &rt, jsi::String flagName) override {
      static_assert(
          bridging::getParameterCount(&T::featureFlagManagerResultCacheGetFlag) == 2,
          "Expected featureFlagManagerResultCacheGetFlag(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::featureFlagManagerResultCacheGetFlag, jsInvoker_, instance_, std::move(flagName));
    }
    jsi::Value featureFlagManagerResultCacheSetFlag(jsi::Runtime &rt, jsi::Object flag, double ttl) override {
      static_assert(
          bridging::getParameterCount(&T::featureFlagManagerResultCacheSetFlag) == 3,
          "Expected featureFlagManagerResultCacheSetFlag(...) to have 3 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::featureFlagManagerResultCacheSetFlag, jsInvoker_, instance_, std::move(flag), std::move(ttl));
    }
    jsi::Value featureFlagManagerResultCacheRemoveFlag(jsi::Runtime &rt, jsi::String flagName) override {
      static_assert(
          bridging::getParameterCount(&T::featureFlagManagerResultCacheRemoveFlag) == 2,
          "Expected featureFlagManagerResultCacheRemoveFlag(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::featureFlagManagerResultCacheRemoveFlag, jsInvoker_, instance_, std::move(flagName));
    }
    jsi::Value liveActivityListAll(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::liveActivityListAll) == 1,
          "Expected liveActivityListAll(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveActivityListAll, jsInvoker_, instance_);
    }
    jsi::Value liveActivityList(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveActivityList) == 2,
          "Expected liveActivityList(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveActivityList, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveActivityStart(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveActivityStart) == 2,
          "Expected liveActivityStart(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveActivityStart, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveActivityUpdate(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveActivityUpdate) == 2,
          "Expected liveActivityUpdate(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveActivityUpdate, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveActivityEnd(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveActivityEnd) == 2,
          "Expected liveActivityEnd(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveActivityEnd, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveUpdateListAll(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateListAll) == 1,
          "Expected liveUpdateListAll(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateListAll, jsInvoker_, instance_);
    }
    jsi::Value liveUpdateList(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateList) == 2,
          "Expected liveUpdateList(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateList, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveUpdateStart(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateStart) == 2,
          "Expected liveUpdateStart(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateStart, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveUpdateUpdate(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateUpdate) == 2,
          "Expected liveUpdateUpdate(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateUpdate, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveUpdateEnd(jsi::Runtime &rt, jsi::Object request) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateEnd) == 2,
          "Expected liveUpdateEnd(...) to have 2 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateEnd, jsInvoker_, instance_, std::move(request));
    }
    jsi::Value liveUpdateClearAll(jsi::Runtime &rt) override {
      static_assert(
          bridging::getParameterCount(&T::liveUpdateClearAll) == 1,
          "Expected liveUpdateClearAll(...) to have 1 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::liveUpdateClearAll, jsInvoker_, instance_);
    }

  private:
    friend class NativeRNAirshipCxxSpec;
    T *instance_;
  };

  Delegate delegate_;
};

} // namespace facebook::react
