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

#import <Foundation/Foundation.h>
#import <NitroModules/HybridObjectRegistry.hpp>
#import "ReactNativeHealthkit-Swift-Cxx-Umbrella.hpp"
#import <type_traits>

#include "HybridWorkoutsModuleSpecSwift.hpp"
#include "HybridCoreModuleSpecSwift.hpp"
#include "HybridCharacteristicTypeModuleSpecSwift.hpp"
#include "HybridQuantityTypeModuleSpecSwift.hpp"
#include "HybridCategoryTypeModuleSpecSwift.hpp"
#include "HybridCorrelationTypeModuleSpecSwift.hpp"
#include "HybridElectrocardiogramModuleSpecSwift.hpp"
#include "HybridHeartbeatSeriesModuleSpecSwift.hpp"
#include "HybridStateOfMindModuleSpecSwift.hpp"
#include "HybridMedicationModuleSpecSwift.hpp"

@interface ReactNativeHealthkitAutolinking : NSObject
@end

@implementation ReactNativeHealthkitAutolinking

+ (void) load {
  using namespace margelo::nitro;
  using namespace margelo::nitro::healthkit;

  HybridObjectRegistry::registerHybridObjectConstructor(
    "WorkoutsModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridWorkoutsModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createWorkoutsModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "CoreModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridCoreModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createCoreModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "CharacteristicTypeModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridCharacteristicTypeModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createCharacteristicTypeModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "QuantityTypeModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridQuantityTypeModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createQuantityTypeModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "CategoryTypeModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridCategoryTypeModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createCategoryTypeModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "CorrelationTypeModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridCorrelationTypeModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createCorrelationTypeModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "ElectrocardiogramModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridElectrocardiogramModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createElectrocardiogramModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "HeartbeatSeriesModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridHeartbeatSeriesModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createHeartbeatSeriesModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "StateOfMindModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridStateOfMindModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createStateOfMindModule();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "MedicationModule",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridMedicationModuleSpec> hybridObject = ReactNativeHealthkit::ReactNativeHealthkitAutolinking::createMedicationModule();
      return hybridObject;
    }
  );
}

@end
