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

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

#include "HybridNitroFetchSpecSwift.hpp"
#include "HybridNitroFetchClientSpecSwift.hpp"
#include "HybridNativeStorageSpecSwift.hpp"
#include "HybridNitroCronetSpecSwift.hpp"

@interface NitroFetchAutolinking : NSObject
@end

@implementation NitroFetchAutolinking

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

  HybridObjectRegistry::registerHybridObjectConstructor(
    "NitroFetch",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNitroFetchSpec> hybridObject = NitroFetch::NitroFetchAutolinking::createNitroFetch();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "NitroFetchClient",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNitroFetchClientSpec> hybridObject = NitroFetch::NitroFetchAutolinking::createNitroFetchClient();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "NativeStorage",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNativeStorageSpec> hybridObject = NitroFetch::NitroFetchAutolinking::createNativeStorage();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "NitroCronet",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNitroCronetSpec> hybridObject = NitroFetch::NitroFetchAutolinking::createNitroCronet();
      return hybridObject;
    }
  );
}

@end
