/**
 * 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 RNPdfFromImageSpec symbols
#ifndef RNPdfFromImageSpec_H
#define RNPdfFromImageSpec_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 NativePdfFromImage {
    struct ImageObjectNativePaperSize {
      double height() const;
      double width() const;

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

@interface RCTCxxConvert (NativePdfFromImage_ImageObjectNativePaperSize)
+ (RCTManagedPointer *)JS_NativePdfFromImage_ImageObjectNativePaperSize:(id)json;
@end
namespace JS {
  namespace NativePdfFromImage {
    struct ImageObjectNative {
      facebook::react::LazyVector<NSString *> imagePaths() const;
      NSString *name() const;
      std::optional<JS::NativePdfFromImage::ImageObjectNativePaperSize> paperSize() const;

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

@interface RCTCxxConvert (NativePdfFromImage_ImageObjectNative)
+ (RCTManagedPointer *)JS_NativePdfFromImage_ImageObjectNative:(id)json;
@end
@protocol NativePdfFromImageSpec <RCTBridgeModule, RCTTurboModule>

- (NSDictionary *)createPdf:(JS::NativePdfFromImage::ImageObjectNative &)imageObject;

@end

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


@end

namespace facebook::react {
  /**
   * ObjC++ class for module 'NativePdfFromImage'
   */
  class JSI_EXPORT NativePdfFromImageSpecJSI : public ObjCTurboModule {
  public:
    NativePdfFromImageSpecJSI(const ObjCTurboModule::InitParams &params);
  };
} // namespace facebook::react
inline double JS::NativePdfFromImage::ImageObjectNativePaperSize::height() const
{
  id const p = _v[@"height"];
  return RCTBridgingToDouble(p);
}
inline double JS::NativePdfFromImage::ImageObjectNativePaperSize::width() const
{
  id const p = _v[@"width"];
  return RCTBridgingToDouble(p);
}
inline facebook::react::LazyVector<NSString *> JS::NativePdfFromImage::ImageObjectNative::imagePaths() const
{
  id const p = _v[@"imagePaths"];
  return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); });
}
inline NSString *JS::NativePdfFromImage::ImageObjectNative::name() const
{
  id const p = _v[@"name"];
  return RCTBridgingToString(p);
}
inline std::optional<JS::NativePdfFromImage::ImageObjectNativePaperSize> JS::NativePdfFromImage::ImageObjectNative::paperSize() const
{
  id const p = _v[@"paperSize"];
  return (p == nil ? std::nullopt : std::make_optional(JS::NativePdfFromImage::ImageObjectNativePaperSize(p)));
}
NS_ASSUME_NONNULL_END
#endif // RNPdfFromImageSpec_H
