// Generated by uniffi-bindgen-react-native
#include <jni.h>
#include <jsi/jsi.h>
#include <ReactCommon/CallInvokerHolder.h>
#include "breeztech-breez-sdk-spark-react-native.h"

namespace jsi = facebook::jsi;
namespace react = facebook::react;

// Automated testing checks Java_com_breeztech_breezsdkspark_BreezSdkSparkReactNativeModule and breeztech_breezsdksparkreactnative
// by comparing the whole line here.
/*
Java_com_breeztech_breezsdkspark_BreezSdkSparkReactNativeModule_nativeMultiply(JNIEnv *env, jclass type, jdouble a, jdouble b) {
    return breeztech_breezsdksparkreactnative::multiply(a, b);
}
*/

// Installer coming from BreezSdkSparkReactNativeModule
extern "C"
JNIEXPORT jboolean JNICALL
Java_com_breeztech_breezsdkspark_BreezSdkSparkReactNativeModule_nativeInstallRustCrate(
    JNIEnv *env,
    jclass type,
    jlong rtPtr,
    jobject callInvokerHolderJavaObj
) {
    using JCallInvokerHolder = facebook::react::CallInvokerHolder;

    auto holderLocal = facebook::jni::make_local(callInvokerHolderJavaObj);
    auto holderRef = facebook::jni::static_ref_cast<JCallInvokerHolder::javaobject>(holderLocal);
    auto* holderCxx = holderRef->cthis();
    auto jsCallInvoker = holderCxx->getCallInvoker();
    auto runtime = reinterpret_cast<jsi::Runtime *>(rtPtr);

    return breeztech_breezsdksparkreactnative::installRustCrate(*runtime, jsCallInvoker);
}

extern "C"
JNIEXPORT jboolean JNICALL
Java_com_breeztech_breezsdkspark_BreezSdkSparkReactNativeModule_nativeCleanupRustCrate(JNIEnv *env, jclass type, jlong rtPtr) {
    auto runtime = reinterpret_cast<jsi::Runtime *>(rtPtr);
    return breeztech_breezsdksparkreactnative::cleanupRustCrate(*runtime);
}