/**
 * 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 NativeFitnessGeolocationCxxSpecJSI : public TurboModule {
protected:
  NativeFitnessGeolocationCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);

public:
  virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
  virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
  virtual jsi::Value getCurrentPosition(jsi::Runtime &rt, jsi::Object options) = 0;
  virtual double watchPosition(jsi::Runtime &rt, jsi::Object options) = 0;
  virtual void clearWatch(jsi::Runtime &rt, double watchId) = 0;
  virtual void stopLocationObserving(jsi::Runtime &rt) = 0;
  virtual jsi::Value getPendingForJs(jsi::Runtime &rt, double limit) = 0;
  virtual jsi::Value markDelivered(jsi::Runtime &rt, jsi::Array ids) = 0;
  virtual jsi::Value purgeDelivered(jsi::Runtime &rt) = 0;
  virtual jsi::Value getQueueSize(jsi::Runtime &rt) = 0;
  virtual jsi::Value requestAuthorization(jsi::Runtime &rt, jsi::String level) = 0;
  virtual jsi::Value getAuthorizationStatus(jsi::Runtime &rt) = 0;
  virtual jsi::Value ready(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value setConfiguration(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value setConfig(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value getState(jsi::Runtime &rt) = 0;
  virtual jsi::Value start(jsi::Runtime &rt) = 0;
  virtual jsi::Value stop(jsi::Runtime &rt) = 0;
  virtual jsi::Value reset(jsi::Runtime &rt) = 0;
  virtual jsi::Value changePace(jsi::Runtime &rt, bool isMoving) = 0;
  virtual jsi::Value setActivityPaused(jsi::Runtime &rt, bool paused) = 0;
  virtual jsi::Value startSchedule(jsi::Runtime &rt) = 0;
  virtual jsi::Value stopSchedule(jsi::Runtime &rt) = 0;
  virtual jsi::Value startGeofences(jsi::Runtime &rt) = 0;
  virtual jsi::Value sync(jsi::Runtime &rt) = 0;
  virtual jsi::Value httpSync(jsi::Runtime &rt) = 0;
  virtual jsi::Value configureHttp(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value getLocations(jsi::Runtime &rt) = 0;
  virtual jsi::Value destroyLocation(jsi::Runtime &rt, jsi::String uuid) = 0;
  virtual jsi::Value destroyLocations(jsi::Runtime &rt) = 0;
  virtual jsi::Value getCount(jsi::Runtime &rt) = 0;
  virtual jsi::Value insertLocation(jsi::Runtime &rt, jsi::Object params) = 0;
  virtual jsi::Value createSession(jsi::Runtime &rt, jsi::String name, jsi::String activityType, std::optional<jsi::String> extras) = 0;
  virtual jsi::Value endSession(jsi::Runtime &rt, jsi::String sessionId, jsi::Object data) = 0;
  virtual jsi::Value discardSession(jsi::Runtime &rt, jsi::String sessionId) = 0;
  virtual jsi::Value getPendingSessions(jsi::Runtime &rt) = 0;
  virtual jsi::Value startMotionTracking(jsi::Runtime &rt, bool includePedometer) = 0;
  virtual jsi::Value stopMotionTracking(jsi::Runtime &rt) = 0;
  virtual jsi::Value configureAutoPause(jsi::Runtime &rt, jsi::Object config) = 0;
  virtual jsi::Value getDiagnostics(jsi::Runtime &rt) = 0;
  virtual void devLog(jsi::Runtime &rt, jsi::String level, jsi::String tag, jsi::String message, std::optional<jsi::Object> data) = 0;
  virtual jsi::Value log(jsi::Runtime &rt, jsi::String level, jsi::String message, std::optional<jsi::Object> data) = 0;
  virtual jsi::Value getLog(jsi::Runtime &rt, jsi::Object query) = 0;
  virtual jsi::Value destroyLog(jsi::Runtime &rt) = 0;
  virtual jsi::Value uploadLog(jsi::Runtime &rt, jsi::String url, jsi::Object query) = 0;
  virtual void setLiveActivityEnabled(jsi::Runtime &rt, bool enabled) = 0;
  virtual jsi::Value getLiveActivityEnabled(jsi::Runtime &rt) = 0;
  virtual jsi::Value startLiveActivity(jsi::Runtime &rt, jsi::String name, jsi::String activityType) = 0;
  virtual void updateLiveActivity(jsi::Runtime &rt, double distance, double duration, jsi::String pace, double speed, double calories, jsi::String gpsStatus, bool isPaused) = 0;
  virtual jsi::Value endLiveActivity(jsi::Runtime &rt, double distance, double duration, double calories) = 0;
  virtual jsi::Value requestTemporaryFullAccuracy(jsi::Runtime &rt, jsi::String purpose) = 0;
  virtual jsi::Value isIgnoringBatteryOptimizations(jsi::Runtime &rt) = 0;
  virtual jsi::Value requestBatteryOptimizationPermission(jsi::Runtime &rt) = 0;
  virtual jsi::Value openOemBatterySettings(jsi::Runtime &rt) = 0;
  virtual double startTimeBasedTracking(jsi::Runtime &rt, jsi::Object options) = 0;
  virtual jsi::Value stopTimeBasedTracking(jsi::Runtime &rt, double watchId) = 0;
  virtual jsi::Value pauseTimeBasedTracking(jsi::Runtime &rt, double watchId) = 0;
  virtual jsi::Value resumeTimeBasedTracking(jsi::Runtime &rt, double watchId) = 0;
  virtual jsi::Value setTimeBasedInterval(jsi::Runtime &rt, double watchId, double intervalMs) = 0;
  virtual jsi::Value getOdometer(jsi::Runtime &rt) = 0;
  virtual jsi::Value resetOdometer(jsi::Runtime &rt) = 0;
  virtual jsi::Value setOdometer(jsi::Runtime &rt, double value) = 0;

};

template <typename T>
class JSI_EXPORT NativeFitnessGeolocationCxxSpec : 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 = "FitnessGeolocation";

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


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

    }

    void addListener(jsi::Runtime &rt, jsi::String eventName) 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(eventName));
    }
    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 getCurrentPosition(jsi::Runtime &rt, jsi::Object options) override {
      static_assert(
          bridging::getParameterCount(&T::getCurrentPosition) == 2,
          "Expected getCurrentPosition(...) to have 2 parameters");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::insertLocation, jsInvoker_, instance_, std::move(params));
    }
    jsi::Value createSession(jsi::Runtime &rt, jsi::String name, jsi::String activityType, std::optional<jsi::String> extras) override {
      static_assert(
          bridging::getParameterCount(&T::createSession) == 4,
          "Expected createSession(...) to have 4 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::createSession, jsInvoker_, instance_, std::move(name), std::move(activityType), std::move(extras));
    }
    jsi::Value endSession(jsi::Runtime &rt, jsi::String sessionId, jsi::Object data) override {
      static_assert(
          bridging::getParameterCount(&T::endSession) == 3,
          "Expected endSession(...) to have 3 parameters");

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

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

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

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

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

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::getDiagnostics, jsInvoker_, instance_);
    }
    void devLog(jsi::Runtime &rt, jsi::String level, jsi::String tag, jsi::String message, std::optional<jsi::Object> data) override {
      static_assert(
          bridging::getParameterCount(&T::devLog) == 5,
          "Expected devLog(...) to have 5 parameters");

      return bridging::callFromJs<void>(
          rt, &T::devLog, jsInvoker_, instance_, std::move(level), std::move(tag), std::move(message), std::move(data));
    }
    jsi::Value log(jsi::Runtime &rt, jsi::String level, jsi::String message, std::optional<jsi::Object> data) override {
      static_assert(
          bridging::getParameterCount(&T::log) == 4,
          "Expected log(...) to have 4 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::log, jsInvoker_, instance_, std::move(level), std::move(message), std::move(data));
    }
    jsi::Value getLog(jsi::Runtime &rt, jsi::Object query) override {
      static_assert(
          bridging::getParameterCount(&T::getLog) == 2,
          "Expected getLog(...) to have 2 parameters");

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::destroyLog, jsInvoker_, instance_);
    }
    jsi::Value uploadLog(jsi::Runtime &rt, jsi::String url, jsi::Object query) override {
      static_assert(
          bridging::getParameterCount(&T::uploadLog) == 3,
          "Expected uploadLog(...) to have 3 parameters");

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

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::getLiveActivityEnabled, jsInvoker_, instance_);
    }
    jsi::Value startLiveActivity(jsi::Runtime &rt, jsi::String name, jsi::String activityType) override {
      static_assert(
          bridging::getParameterCount(&T::startLiveActivity) == 3,
          "Expected startLiveActivity(...) to have 3 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::startLiveActivity, jsInvoker_, instance_, std::move(name), std::move(activityType));
    }
    void updateLiveActivity(jsi::Runtime &rt, double distance, double duration, jsi::String pace, double speed, double calories, jsi::String gpsStatus, bool isPaused) override {
      static_assert(
          bridging::getParameterCount(&T::updateLiveActivity) == 8,
          "Expected updateLiveActivity(...) to have 8 parameters");

      return bridging::callFromJs<void>(
          rt, &T::updateLiveActivity, jsInvoker_, instance_, std::move(distance), std::move(duration), std::move(pace), std::move(speed), std::move(calories), std::move(gpsStatus), std::move(isPaused));
    }
    jsi::Value endLiveActivity(jsi::Runtime &rt, double distance, double duration, double calories) override {
      static_assert(
          bridging::getParameterCount(&T::endLiveActivity) == 4,
          "Expected endLiveActivity(...) to have 4 parameters");

      return bridging::callFromJs<jsi::Value>(
          rt, &T::endLiveActivity, jsInvoker_, instance_, std::move(distance), std::move(duration), std::move(calories));
    }
    jsi::Value requestTemporaryFullAccuracy(jsi::Runtime &rt, jsi::String purpose) override {
      static_assert(
          bridging::getParameterCount(&T::requestTemporaryFullAccuracy) == 2,
          "Expected requestTemporaryFullAccuracy(...) to have 2 parameters");

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

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

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

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

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

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

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::resumeTimeBasedTracking, jsInvoker_, instance_, std::move(watchId));
    }
    jsi::Value setTimeBasedInterval(jsi::Runtime &rt, double watchId, double intervalMs) override {
      static_assert(
          bridging::getParameterCount(&T::setTimeBasedInterval) == 3,
          "Expected setTimeBasedInterval(...) to have 3 parameters");

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

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

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

      return bridging::callFromJs<jsi::Value>(
          rt, &T::setOdometer, jsInvoker_, instance_, std::move(value));
    }

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

  Delegate delegate_;
};

} // namespace facebook::react
