//
// Created by Allen on 24/08/26.
//

#ifndef REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_CORE_JSICORE_H_
#define REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_CORE_JSICORE_H_

#include "jsi/jsi.h"
#include "ImgHO.h"
#include <jni.h>
#include <string>
using namespace facebook::jsi;
using namespace std;

using namespace facebook::jsi;


extern JavaVM *gJvm;





namespace jsiConversion::core {

void jPointToJsObject(Runtime &rt, JNIEnv *env, jobject jPoint, Object &jsPoint);
void jQuadToJsObject(Runtime &rt, JNIEnv *env, jobject jQuad, Object &jsQuad);
void jCapturedItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, int &outType, Object &jsItem);
void jCapturedItemArrayToJsArray(Runtime &rt, JNIEnv *env, jobjectArray jItemArray, int *&outTypes, Array &jsItemArray);

// ImageData: java object <--> jsi HostObject
jobject getJImageDataFromHO(JNIEnv *env, const ImageDataHostObject &imageDataHO);
void getHOFromJImageData(JNIEnv *env, jobject jImageData, ImageDataHostObject &imageHO);
} // namespace jsiConversion::core



Value imageDataHOToBase64(ImageDataHostObject &imageDataHO, Runtime &rt);

void addImageToBuffer(ImageDataHostObject &imageDataHO, string &nativeIsaId);
ImageDataHostObject getImage(string &nativeIsaId);

namespace jsi_install {
void install_imageDataToBase64(Runtime &jsiRuntime);
namespace isa {
void install_addImageToBuffer(Runtime &jsiRuntime);
void install_getImageData(Runtime &jsiRuntime);
} // namespace isa
} // namespace jsi_install

#endif // REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_CORE_JSICORE_H_
