/**
 * 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 NativeRNFBTurboFunctions symbols
#ifndef NativeRNFBTurboFunctions_H
#define NativeRNFBTurboFunctions_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>


NS_ASSUME_NONNULL_BEGIN
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableData {
      id<NSObject> data() const;

      SpecHttpsCallableData(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableData)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableData:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableOptions {
      std::optional<double> timeout() const;
      std::optional<bool> limitedUseAppCheckTokens() const;

      SpecHttpsCallableOptions(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableOptions)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableOptions:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableFromUrlData {
      id<NSObject> data() const;

      SpecHttpsCallableFromUrlData(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableFromUrlData)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableFromUrlData:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableFromUrlOptions {
      std::optional<double> timeout() const;
      std::optional<bool> limitedUseAppCheckTokens() const;

      SpecHttpsCallableFromUrlOptions(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableFromUrlOptions)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableFromUrlOptions:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableStreamData {
      id<NSObject> data() const;

      SpecHttpsCallableStreamData(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableStreamData)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableStreamData:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableStreamOptions {
      std::optional<double> timeout() const;
      std::optional<bool> limitedUseAppCheckTokens() const;

      SpecHttpsCallableStreamOptions(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableStreamOptions)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableStreamOptions:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableStreamFromUrlData {
      id<NSObject> data() const;

      SpecHttpsCallableStreamFromUrlData(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlData)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlData:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions {
      id<NSObject> _Nullable signal() const;
      std::optional<bool> limitedUseAppCheckTokens() const;

      SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions:(id)json;
@end
namespace JS {
  namespace NativeRNFBTurboFunctions {
    struct SpecHttpsCallableStreamFromUrlOptions {
      std::optional<double> timeout() const;
      std::optional<bool> limitedUseAppCheckTokens() const;
      JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions httpsCallableStreamOptions() const;

      SpecHttpsCallableStreamFromUrlOptions(NSDictionary *const v) : _v(v) {}
    private:
      NSDictionary *_v;
    };
  }
}

@interface RCTCxxConvert (NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlOptions)
+ (RCTManagedPointer *)JS_NativeRNFBTurboFunctions_SpecHttpsCallableStreamFromUrlOptions:(id)json;
@end
@protocol NativeRNFBTurboFunctionsSpec <RCTBridgeModule, RCTTurboModule>

- (void)httpsCallable:(NSString *)appName
               region:(NSString *)region
         emulatorHost:(NSString * _Nullable)emulatorHost
         emulatorPort:(double)emulatorPort
                 name:(NSString *)name
                 data:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableData &)data
              options:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableOptions &)options
              resolve:(RCTPromiseResolveBlock)resolve
               reject:(RCTPromiseRejectBlock)reject;
- (void)httpsCallableFromUrl:(NSString *)appName
                      region:(NSString *)region
                emulatorHost:(NSString * _Nullable)emulatorHost
                emulatorPort:(double)emulatorPort
                         url:(NSString *)url
                        data:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableFromUrlData &)data
                     options:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableFromUrlOptions &)options
                     resolve:(RCTPromiseResolveBlock)resolve
                      reject:(RCTPromiseRejectBlock)reject;
- (void)httpsCallableStream:(NSString *)appName
                     region:(NSString *)region
               emulatorHost:(NSString * _Nullable)emulatorHost
               emulatorPort:(double)emulatorPort
                       name:(NSString *)name
                       data:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamData &)data
                    options:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamOptions &)options
                 listenerId:(double)listenerId;
- (void)httpsCallableStreamFromUrl:(NSString *)appName
                            region:(NSString *)region
                      emulatorHost:(NSString * _Nullable)emulatorHost
                      emulatorPort:(double)emulatorPort
                               url:(NSString *)url
                              data:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlData &)data
                           options:(JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptions &)options
                        listenerId:(double)listenerId;
- (void)removeFunctionsStreaming:(NSString *)appName
                          region:(NSString *)region
                      listenerId:(double)listenerId;

@end

@interface NativeRNFBTurboFunctionsSpecBase : NSObject {
@protected
facebook::react::EventEmitterCallback _eventEmitterCallback;
}
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;


@end

namespace facebook::react {
  /**
   * ObjC++ class for module 'NativeRNFBTurboFunctions'
   */
  class JSI_EXPORT NativeRNFBTurboFunctionsSpecJSI : public ObjCTurboModule {
  public:
    NativeRNFBTurboFunctionsSpecJSI(const ObjCTurboModule::InitParams &params);
  };
} // namespace facebook::react
inline id<NSObject> JS::NativeRNFBTurboFunctions::SpecHttpsCallableData::data() const
{
  id const p = _v[@"data"];
  return p;
}
inline std::optional<double> JS::NativeRNFBTurboFunctions::SpecHttpsCallableOptions::timeout() const
{
  id const p = _v[@"timeout"];
  return RCTBridgingToOptionalDouble(p);
}
inline std::optional<bool> JS::NativeRNFBTurboFunctions::SpecHttpsCallableOptions::limitedUseAppCheckTokens() const
{
  id const p = _v[@"limitedUseAppCheckTokens"];
  return RCTBridgingToOptionalBool(p);
}
inline id<NSObject> JS::NativeRNFBTurboFunctions::SpecHttpsCallableFromUrlData::data() const
{
  id const p = _v[@"data"];
  return p;
}
inline std::optional<double> JS::NativeRNFBTurboFunctions::SpecHttpsCallableFromUrlOptions::timeout() const
{
  id const p = _v[@"timeout"];
  return RCTBridgingToOptionalDouble(p);
}
inline std::optional<bool> JS::NativeRNFBTurboFunctions::SpecHttpsCallableFromUrlOptions::limitedUseAppCheckTokens() const
{
  id const p = _v[@"limitedUseAppCheckTokens"];
  return RCTBridgingToOptionalBool(p);
}
inline id<NSObject> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamData::data() const
{
  id const p = _v[@"data"];
  return p;
}
inline std::optional<double> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamOptions::timeout() const
{
  id const p = _v[@"timeout"];
  return RCTBridgingToOptionalDouble(p);
}
inline std::optional<bool> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamOptions::limitedUseAppCheckTokens() const
{
  id const p = _v[@"limitedUseAppCheckTokens"];
  return RCTBridgingToOptionalBool(p);
}
inline id<NSObject> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlData::data() const
{
  id const p = _v[@"data"];
  return p;
}
inline id<NSObject> _Nullable JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions::signal() const
{
  id const p = _v[@"signal"];
  return p;
}
inline std::optional<bool> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions::limitedUseAppCheckTokens() const
{
  id const p = _v[@"limitedUseAppCheckTokens"];
  return RCTBridgingToOptionalBool(p);
}
inline std::optional<double> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptions::timeout() const
{
  id const p = _v[@"timeout"];
  return RCTBridgingToOptionalDouble(p);
}
inline std::optional<bool> JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptions::limitedUseAppCheckTokens() const
{
  id const p = _v[@"limitedUseAppCheckTokens"];
  return RCTBridgingToOptionalBool(p);
}
inline JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptions::httpsCallableStreamOptions() const
{
  id const p = _v[@"httpsCallableStreamOptions"];
  return JS::NativeRNFBTurboFunctions::SpecHttpsCallableStreamFromUrlOptionsHttpsCallableStreamOptions(p);
}
NS_ASSUME_NONNULL_END
#endif // NativeRNFBTurboFunctions_H
