/**
 * 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: GenerateModuleObjCpp
 *
 * We create an umbrella header (and corresponding implementation) here since
 * Cxx compilation in BUCK has a limitation: source-code producing genrule()s
 * must have a single output. More files => more genrule()s => slower builds.
 */

#ifndef __cplusplus
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
#endif

// Avoid multiple includes of RNReactNativeStaticServerSpec symbols
#ifndef RNReactNativeStaticServerSpec_H
#define RNReactNativeStaticServerSpec_H

#import <Foundation/Foundation.h>
#import <RCTRequired/RCTRequired.h>
#import <RCTTypeSafety/RCTConvertHelpers.h>
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <optional>
#import <vector>

namespace JS {
  namespace NativeReactNativeStaticServer {
    struct Constants {

      struct Builder {
        struct Input {
          RCTRequired<NSString *> CRASHED;
          RCTRequired<bool> IS_MAC_CATALYST;
          RCTRequired<NSString *> LAUNCHED;
          RCTRequired<NSString *> TERMINATED;
        };

        /** Initialize with a set of values */
        Builder(const Input i);
        /** Initialize with an existing Constants */
        Builder(Constants i);
        /** Builds the object. Generally used only by the infrastructure. */
        NSDictionary *buildUnsafeRawValue() const { return _factory(); };
      private:
        NSDictionary *(^_factory)(void);
      };

      static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; }
      NSDictionary *unsafeRawValue() const { return _v; }
    private:
      Constants(NSDictionary *const v) : _v(v) {}
      NSDictionary *_v;
    };
  }
}
@protocol NativeReactNativeStaticServerSpec <RCTBridgeModule, RCTTurboModule>

- (void)addListener:(NSString *)eventName;
- (void)getActiveServerId:(RCTPromiseResolveBlock)resolve
                   reject:(RCTPromiseRejectBlock)reject;
- (void)removeListeners:(double)count;
- (void)start:(double)id
   configPath:(NSString *)configPath
   errlogPath:(NSString *)errlogPath
      resolve:(RCTPromiseResolveBlock)resolve
       reject:(RCTPromiseRejectBlock)reject;
- (void)getLocalIpAddress:(RCTPromiseResolveBlock)resolve
                   reject:(RCTPromiseRejectBlock)reject;
- (void)getOpenPort:(NSString *)address
            resolve:(RCTPromiseResolveBlock)resolve
             reject:(RCTPromiseRejectBlock)reject;
- (void)stop:(RCTPromiseResolveBlock)resolve
      reject:(RCTPromiseRejectBlock)reject;
- (facebook::react::ModuleConstants<JS::NativeReactNativeStaticServer::Constants::Builder>)constantsToExport;
- (facebook::react::ModuleConstants<JS::NativeReactNativeStaticServer::Constants::Builder>)getConstants;

@end
namespace facebook::react {
  /**
   * ObjC++ class for module 'NativeReactNativeStaticServer'
   */
  class JSI_EXPORT NativeReactNativeStaticServerSpecJSI : public ObjCTurboModule {
  public:
    NativeReactNativeStaticServerSpecJSI(const ObjCTurboModule::InitParams &params);
  };
} // namespace facebook::react
inline JS::NativeReactNativeStaticServer::Constants::Builder::Builder(const Input i) : _factory(^{
  NSMutableDictionary *d = [NSMutableDictionary new];
  auto CRASHED = i.CRASHED.get();
  d[@"CRASHED"] = CRASHED;
  auto IS_MAC_CATALYST = i.IS_MAC_CATALYST.get();
  d[@"IS_MAC_CATALYST"] = @(IS_MAC_CATALYST);
  auto LAUNCHED = i.LAUNCHED.get();
  d[@"LAUNCHED"] = LAUNCHED;
  auto TERMINATED = i.TERMINATED.get();
  d[@"TERMINATED"] = TERMINATED;
  return d;
}) {}
inline JS::NativeReactNativeStaticServer::Constants::Builder::Builder(Constants i) : _factory(^{
  return i.unsafeRawValue();
}) {}
#endif // RNReactNativeStaticServerSpec_H
