// This file was autogenerated by some hot garbage in the `uniffi-bindgen-react-native` crate.
// Trust me, you don't want to mess with it!
#include "payjoin.hpp"

#include "UniffiJsiTypes.h"
#include <stdexcept>
#include <map>
#include <utility>
#include <iostream>
#include <thread>

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

// Calling into Rust.
extern "C" {
    typedef void
    (*UniffiRustFutureContinuationCallback)(
    uint64_t data, 
    int8_t poll_result
    );
    typedef void
    (*UniffiForeignFutureDroppedCallback)(
    uint64_t handle
    );
    typedef void
    (*UniffiCallbackInterfaceFree)(
    uint64_t handle
    );
    typedef uint64_t
    (*UniffiCallbackInterfaceClone)(
    uint64_t handle
    );typedef struct UniffiForeignFutureDroppedCallbackStruct {
        uint64_t handle;
        UniffiForeignFutureDroppedCallback free;
    } UniffiForeignFutureDroppedCallbackStruct;typedef struct UniffiForeignFutureResultU8 {
        uint8_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultU8;
    typedef void
    (*UniffiForeignFutureCompleteU8)(
    uint64_t callback_data, 
    UniffiForeignFutureResultU8 result
    );typedef struct UniffiForeignFutureResultI8 {
        int8_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultI8;
    typedef void
    (*UniffiForeignFutureCompleteI8)(
    uint64_t callback_data, 
    UniffiForeignFutureResultI8 result
    );typedef struct UniffiForeignFutureResultU16 {
        uint16_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultU16;
    typedef void
    (*UniffiForeignFutureCompleteU16)(
    uint64_t callback_data, 
    UniffiForeignFutureResultU16 result
    );typedef struct UniffiForeignFutureResultI16 {
        int16_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultI16;
    typedef void
    (*UniffiForeignFutureCompleteI16)(
    uint64_t callback_data, 
    UniffiForeignFutureResultI16 result
    );typedef struct UniffiForeignFutureResultU32 {
        uint32_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultU32;
    typedef void
    (*UniffiForeignFutureCompleteU32)(
    uint64_t callback_data, 
    UniffiForeignFutureResultU32 result
    );typedef struct UniffiForeignFutureResultI32 {
        int32_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultI32;
    typedef void
    (*UniffiForeignFutureCompleteI32)(
    uint64_t callback_data, 
    UniffiForeignFutureResultI32 result
    );typedef struct UniffiForeignFutureResultU64 {
        uint64_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultU64;
    typedef void
    (*UniffiForeignFutureCompleteU64)(
    uint64_t callback_data, 
    UniffiForeignFutureResultU64 result
    );typedef struct UniffiForeignFutureResultI64 {
        int64_t return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultI64;
    typedef void
    (*UniffiForeignFutureCompleteI64)(
    uint64_t callback_data, 
    UniffiForeignFutureResultI64 result
    );typedef struct UniffiForeignFutureResultF32 {
        float return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultF32;
    typedef void
    (*UniffiForeignFutureCompleteF32)(
    uint64_t callback_data, 
    UniffiForeignFutureResultF32 result
    );typedef struct UniffiForeignFutureResultF64 {
        double return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultF64;
    typedef void
    (*UniffiForeignFutureCompleteF64)(
    uint64_t callback_data, 
    UniffiForeignFutureResultF64 result
    );typedef struct UniffiForeignFutureResultRustBuffer {
        RustBuffer return_value;
        RustCallStatus call_status;
    } UniffiForeignFutureResultRustBuffer;
    typedef void
    (*UniffiForeignFutureCompleteRustBuffer)(
    uint64_t callback_data, 
    UniffiForeignFutureResultRustBuffer result
    );typedef struct UniffiForeignFutureResultVoid {
        RustCallStatus call_status;
    } UniffiForeignFutureResultVoid;
    typedef void
    (*UniffiForeignFutureCompleteVoid)(
    uint64_t callback_data, 
    UniffiForeignFutureResultVoid result
    );
    typedef void
    (*UniffiCallbackInterfaceCanBroadcastMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer tx, 
    int8_t * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceIsInputOwnedMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer outpoint, 
    int8_t * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceIsOutputKnownMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer outpoint, 
    int8_t * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceIsScriptOwnedMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer script, 
    int8_t * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer event, 
    void * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod1)(
    uint64_t uniffi_handle, 
    RustBuffer * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod2)(
    uint64_t uniffi_handle, 
    void * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer event, 
    UniffiForeignFutureCompleteVoid uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1)(
    uint64_t uniffi_handle, 
    UniffiForeignFutureCompleteRustBuffer uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );
    typedef void
    (*UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2)(
    uint64_t uniffi_handle, 
    UniffiForeignFutureCompleteVoid uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );
    typedef void
    (*UniffiCallbackInterfaceProcessPsbtMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer psbt, 
    RustBuffer * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceTransactionFinderMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer txid, 
    RustBuffer * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer event, 
    void * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterMethod1)(
    uint64_t uniffi_handle, 
    RustBuffer * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterMethod2)(
    uint64_t uniffi_handle, 
    void * uniffi_out_return, RustCallStatus* rust_call_status
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod0)(
    uint64_t uniffi_handle, 
    RustBuffer event, 
    UniffiForeignFutureCompleteVoid uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod1)(
    uint64_t uniffi_handle, 
    UniffiForeignFutureCompleteRustBuffer uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );
    typedef void
    (*UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod2)(
    uint64_t uniffi_handle, 
    UniffiForeignFutureCompleteVoid uniffi_future_callback, 
    uint64_t uniffi_callback_data, 
    UniffiForeignFutureDroppedCallbackStruct * uniffi_out_dropped_callback
    );typedef struct UniffiVTableCallbackInterfaceCanBroadcast {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceCanBroadcastMethod0 callback;
    } UniffiVTableCallbackInterfaceCanBroadcast;typedef struct UniffiVTableCallbackInterfaceIsInputOwned {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceIsInputOwnedMethod0 callback;
    } UniffiVTableCallbackInterfaceIsInputOwned;typedef struct UniffiVTableCallbackInterfaceIsOutputKnown {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceIsOutputKnownMethod0 callback;
    } UniffiVTableCallbackInterfaceIsOutputKnown;typedef struct UniffiVTableCallbackInterfaceIsScriptOwned {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceIsScriptOwnedMethod0 callback;
    } UniffiVTableCallbackInterfaceIsScriptOwned;typedef struct UniffiVTableCallbackInterfaceJsonReceiverSessionPersister {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod0 save;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod1 load;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod2 close;
    } UniffiVTableCallbackInterfaceJsonReceiverSessionPersister;typedef struct UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0 save;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1 load;
        UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2 close;
    } UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync;typedef struct UniffiVTableCallbackInterfaceProcessPsbt {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceProcessPsbtMethod0 callback;
    } UniffiVTableCallbackInterfaceProcessPsbt;typedef struct UniffiVTableCallbackInterfaceTransactionFinder {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceTransactionFinderMethod0 callback;
    } UniffiVTableCallbackInterfaceTransactionFinder;typedef struct UniffiVTableCallbackInterfaceJsonSenderSessionPersister {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceJsonSenderSessionPersisterMethod0 save;
        UniffiCallbackInterfaceJsonSenderSessionPersisterMethod1 load;
        UniffiCallbackInterfaceJsonSenderSessionPersisterMethod2 close;
    } UniffiVTableCallbackInterfaceJsonSenderSessionPersister;typedef struct UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync {
        UniffiCallbackInterfaceFree uniffi_free;
        UniffiCallbackInterfaceClone uniffi_clone;
        UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod0 save;
        UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod1 load;
        UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod2 close;
    } UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync;
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_implementationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_implementationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_serdejsonerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_serdejsonerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_clientresponse(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_clientresponse(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_ohttpkeys(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_ohttpkeys(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode(
        RustBuffer bytes, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_ohttperror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_ohttperror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_assumeinteractivetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_canbroadcast(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_canbroadcast(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast(
        UniffiVTableCallbackInterfaceCanBroadcast * vtable
    );
    int8_t uniffi_payjoin_ffi_fn_method_canbroadcast_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer tx, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_canceltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_canceltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_canceltransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_canceltransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_hasreplyableerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_hasreplyableerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request(
        /*handle*/ uint64_t ptr, 
        RustBuffer ohttp_relay, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer body, 
        /*handle*/ uint64_t ohttp_context, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_initialreceivetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_initialreceivetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialreceivetransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_initialized(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_initialized(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialized_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_initialized_create_poll_request(
        /*handle*/ uint64_t ptr, 
        RustBuffer ohttp_relay, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialized_pj_uri(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialized_process_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer body, 
        /*handle*/ uint64_t ctx, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_initializedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_initializedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_initializedtransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initializedtransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_inputpair(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_inputpair(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_inputpair_new(
        RustBuffer txin, 
        RustBuffer psbtin, 
        RustBuffer expected_weight, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_inputpair_outpoint(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_isinputowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_isinputowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned(
        UniffiVTableCallbackInterfaceIsInputOwned * vtable
    );
    int8_t uniffi_payjoin_ffi_fn_method_isinputowned_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer outpoint, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_isoutputknown(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_isoutputknown(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown(
        UniffiVTableCallbackInterfaceIsOutputKnown * vtable
    );
    int8_t uniffi_payjoin_ffi_fn_method_isoutputknown_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer outpoint, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_isscriptowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_isscriptowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned(
        UniffiVTableCallbackInterfaceIsScriptOwned * vtable
    );
    int8_t uniffi_payjoin_ffi_fn_method_isscriptowned_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer script, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister(
        UniffiVTableCallbackInterfaceJsonReceiverSessionPersister * vtable
    );
    void uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save(
        /*handle*/ uint64_t ptr, 
        RustBuffer event, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync(
        UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync * vtable
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save(
        /*handle*/ uint64_t ptr, 
        RustBuffer event
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load(
        /*handle*/ uint64_t ptr
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close(
        /*handle*/ uint64_t ptr
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_maybeinputsowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_maybeinputsowned(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t is_owned, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_maybeinputsseen(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_maybeinputsseen(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t is_known, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_maybeinputsseentransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_monitor(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_monitor(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_monitor_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t find_transaction, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_monitortransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_monitortransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_method_monitortransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_monitortransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_outputsunknown(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_outputsunknown(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_outputsunknown_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t is_receiver_output, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_outputsunknowntransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_outputsunknowntransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_payjoinproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_payjoinproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request(
        /*handle*/ uint64_t ptr, 
        RustBuffer ohttp_relay, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer body, 
        /*handle*/ uint64_t ohttp_context, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_payjoinproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pendingfallbacktransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_processpsbt(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_processpsbt(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt(
        UniffiVTableCallbackInterfaceProcessPsbt * vtable
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_processpsbt_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer psbt, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_provisionalproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_provisionalproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t process_psbt, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_provisionalproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiverbuilder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiverbuilder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new(
        RustBuffer address, 
        RustBuffer directory, 
        /*handle*/ uint64_t ohttp_keys, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiverbuilder_build(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount(
        /*handle*/ uint64_t ptr, 
        uint64_t amount_sats, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration(
        /*handle*/ uint64_t ptr, 
        uint64_t expiration_secs, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate(
        /*handle*/ uint64_t ptr, 
        uint64_t max_effective_fee_rate_sat_per_vb, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiverpendingfallback(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiverpendingfallback(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiversessionevent(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiversessionevent(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json(
        RustBuffer json, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiversessionhistory(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiversessionhistory(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_receiversessionhistory_status(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiversessionoutcome(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiversessionoutcome(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiversessionstatus(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiversessionstatus(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_replayresult(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_replayresult(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_replayresult_session_history(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_replayresult_state(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_transactionfinder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_transactionfinder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder(
        UniffiVTableCallbackInterfaceTransactionFinder * vtable
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_transactionfinder_callback(
        /*handle*/ uint64_t ptr, 
        RustBuffer txid, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability(
        /*handle*/ uint64_t ptr, 
        RustBuffer min_fee_rate_sat_per_kwu, 
        /*handle*/ uint64_t can_broadcast, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsfeerange(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsfeerange(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range(
        /*handle*/ uint64_t ptr, 
        RustBuffer min_fee_rate_sat_per_vb, 
        RustBuffer max_effective_fee_rate_sat_per_vb, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsfeerangetransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsinputs(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsinputs(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputs_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs(
        /*handle*/ uint64_t ptr, 
        RustBuffer replacement_inputs, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy(
        /*handle*/ uint64_t ptr, 
        RustBuffer candidate_inputs, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsinputstransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsinputstransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputstransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsoutputs(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsoutputs(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs(
        /*handle*/ uint64_t ptr, 
        RustBuffer replacement_outputs, 
        RustBuffer drain_script_pubkey, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script(
        /*handle*/ uint64_t ptr, 
        RustBuffer output_script_pubkey, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wantsoutputstransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wantsoutputstransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_addressparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_addressparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_coinselectionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_coinselectionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_inputcontributionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_inputcontributionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_jsonreply(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_jsonreply(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_protocolerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_protocolerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_psbtinputerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_psbtinputerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receivercreaterequesterror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_receiverreplayerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_receiverreplayerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sessionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sessionerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_broadcastedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_broadcastedtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_method_broadcastedtransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_initialsendtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_initialsendtransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialsendtransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister(
        UniffiVTableCallbackInterfaceJsonSenderSessionPersister * vtable
    );
    void uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save(
        /*handle*/ uint64_t ptr, 
        RustBuffer event, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync(
        UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync * vtable
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save(
        /*handle*/ uint64_t ptr, 
        RustBuffer event
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load(
        /*handle*/ uint64_t ptr
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close(
        /*handle*/ uint64_t ptr
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pjparam(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pjparam(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pollingforproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pollingforproposal(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request(
        /*handle*/ uint64_t ptr, 
        RustBuffer ohttp_relay, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer response, 
        /*handle*/ uint64_t ohttp_ctx, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pollingforproposaltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_senderbuilder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_senderbuilder(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_senderbuilder_new(
        RustBuffer psbt, 
        /*handle*/ uint64_t uri, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing(
        /*handle*/ uint64_t ptr, 
        uint64_t min_fee_rate_sat_per_kwu, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended(
        /*handle*/ uint64_t ptr, 
        uint64_t min_fee_rate_sat_per_kwu, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee(
        /*handle*/ uint64_t ptr, 
        uint64_t max_fee_contribution_sats, 
        RustBuffer change_index, 
        uint64_t min_fee_rate_sat_per_kwu, 
        int8_t clamp_fee_contribution, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sendercanceltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sendercanceltransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_sendercanceltransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_senderpendingfallback(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_senderpendingfallback(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderpendingfallback_close(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_senderreplayresult(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_senderreplayresult(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderreplayresult_state(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sendersessionevent(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sendersessionevent(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json(
        RustBuffer json, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sendersessionhistory(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sendersessionhistory(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_sendersessionhistory_status(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sendersessionoutcome(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sendersessionoutcome(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_sendersessionstatus(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_sendersessionstatus(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_v1context(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_v1context(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_v1context_process_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer response, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_withreplykey(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_withreplykey(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_withreplykey_cancel(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request(
        /*handle*/ uint64_t ptr, 
        RustBuffer ohttp_relay, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_withreplykey_process_response(
        /*handle*/ uint64_t ptr, 
        RustBuffer response, 
        /*handle*/ uint64_t post_ctx, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_withreplykeytransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_withreplykeytransition(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_withreplykeytransition_save(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_createrequesterror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_createrequesterror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_decapsulationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_decapsulationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_senderbuildererror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_senderbuildererror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_senderreplayerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_senderreplayerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_validationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_validationerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_wellknownerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_wellknownerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_wellknownerror_code(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pjuri(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pjuri(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjuri_address(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjuri_amount_sats(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjuri_as_string(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats(
        /*handle*/ uint64_t ptr, 
        uint64_t amount_sats, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_uri(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_uri(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_uri_parse(
        RustBuffer uri, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uri_address(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uri_amount_sats(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uri_as_string(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_method_uri_check_pj_supported(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uri_label(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uri_message(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_url(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_url(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_constructor_url_parse(
        RustBuffer input, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_url_as_string(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_url_query(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_feerateerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_feerateerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_intourlerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_intourlerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_pjnotsupported(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_pjnotsupported(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    int8_t uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne(
        /*handle*/ uint64_t ptr, 
        /*handle*/ uint64_t other, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_uriparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_uriparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_clone_urlparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void uniffi_payjoin_ffi_fn_free_urlparseerror(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display(
        /*handle*/ uint64_t ptr, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys(
        RustBuffer ohttp_relay, 
        RustBuffer payjoin_directory
    );
    RustBuffer uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs(
        RustBuffer cleared_psbt_base64, 
        RustBuffer signed_psbt_base64, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_func_receiver_manual_contribute(
        RustBuffer original_psbt_base64, 
        RustBuffer receive_address, 
        int8_t disable_output_substitution, 
        RustBuffer input, 
        RustBuffer owned_scripts_hex, 
        RustBuffer owned_outpoints, 
        RustBuffer seen_outpoints, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer uniffi_payjoin_ffi_fn_func_receiver_manual_finalize(
        RustBuffer provisional_state, 
        RustBuffer signed_psbt_base64, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_func_replay_receiver_event_log(
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async(
        /*handle*/ uint64_t persister
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_func_replay_sender_event_log(
        /*handle*/ uint64_t persister, 
        RustCallStatus *uniffi_out_err
    );
    /*handle*/ uint64_t uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async(
        /*handle*/ uint64_t persister
    );
    RustBuffer ffi_payjoin_ffi_rustbuffer_alloc(
        uint64_t size, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer ffi_payjoin_ffi_rustbuffer_from_bytes(
        ForeignBytes bytes, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rustbuffer_free(
        RustBuffer buf, 
        RustCallStatus *uniffi_out_err
    );
    RustBuffer ffi_payjoin_ffi_rustbuffer_reserve(
        RustBuffer buf, 
        uint64_t additional, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_u8(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_u8(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_u8(
        /*handle*/ uint64_t handle
    );
    uint8_t ffi_payjoin_ffi_rust_future_complete_u8(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_i8(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_i8(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_i8(
        /*handle*/ uint64_t handle
    );
    int8_t ffi_payjoin_ffi_rust_future_complete_i8(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_u16(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_u16(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_u16(
        /*handle*/ uint64_t handle
    );
    uint16_t ffi_payjoin_ffi_rust_future_complete_u16(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_i16(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_i16(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_i16(
        /*handle*/ uint64_t handle
    );
    int16_t ffi_payjoin_ffi_rust_future_complete_i16(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_u32(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_u32(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_u32(
        /*handle*/ uint64_t handle
    );
    uint32_t ffi_payjoin_ffi_rust_future_complete_u32(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_i32(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_i32(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_i32(
        /*handle*/ uint64_t handle
    );
    int32_t ffi_payjoin_ffi_rust_future_complete_i32(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_u64(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_u64(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_u64(
        /*handle*/ uint64_t handle
    );
    uint64_t ffi_payjoin_ffi_rust_future_complete_u64(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_i64(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_i64(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_i64(
        /*handle*/ uint64_t handle
    );
    int64_t ffi_payjoin_ffi_rust_future_complete_i64(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_f32(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_f32(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_f32(
        /*handle*/ uint64_t handle
    );
    float ffi_payjoin_ffi_rust_future_complete_f32(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_f64(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_f64(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_f64(
        /*handle*/ uint64_t handle
    );
    double ffi_payjoin_ffi_rust_future_complete_f64(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_rust_buffer(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_rust_buffer(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_rust_buffer(
        /*handle*/ uint64_t handle
    );
    RustBuffer ffi_payjoin_ffi_rust_future_complete_rust_buffer(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    void ffi_payjoin_ffi_rust_future_poll_void(
        /*handle*/ uint64_t handle, 
        UniffiRustFutureContinuationCallback callback, 
        /*handle*/ uint64_t callback_data
    );
    void ffi_payjoin_ffi_rust_future_cancel_void(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_free_void(
        /*handle*/ uint64_t handle
    );
    void ffi_payjoin_ffi_rust_future_complete_void(
        /*handle*/ uint64_t handle, 
        RustCallStatus *uniffi_out_err
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_replay_sender_event_log(
    );
    uint16_t uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_canbroadcast_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_canceltransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_canceltransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialized_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialized_pj_uri(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialized_process_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initializedtransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_inputpair_outpoint(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_isinputowned_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_isoutputknown_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_isscriptowned_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_monitor_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_monitortransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_monitortransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_processpsbt_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverbuilder_build(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_replayresult_session_history(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_replayresult_state(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_transactionfinder_callback(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialsendtransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderreplayresult_state(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_v1context_process_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_withreplykey_cancel(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_withreplykey_process_response(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_wellknownerror_code(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjuri_address(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjuri_as_string(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_address(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_amount_sats(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_as_string(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_label(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_uri_message(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_url_as_string(
    );
    uint16_t uniffi_payjoin_ffi_checksum_method_url_query(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_inputpair_new(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_uri_parse(
    );
    uint16_t uniffi_payjoin_ffi_checksum_constructor_url_parse(
    );
    uint32_t ffi_payjoin_ffi_uniffi_contract_version(
    );
}


namespace uniffi::payjoin {
template <typename T> struct Bridging;

using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <typename T> struct Bridging<ReferenceHolder<T>> {
  static jsi::Value jsNew(jsi::Runtime &rt) {
    auto holder = jsi::Object(rt);
    return holder;
  }
  static T fromJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker,
                  const jsi::Value &value) {
    auto obj = value.asObject(rt);
    if (obj.hasProperty(rt, "pointee")) {
      auto pointee = obj.getProperty(rt, "pointee");
      return uniffi::payjoin::Bridging<T>::fromJs(rt, callInvoker, pointee);
    }
    throw jsi::JSError(
      rt,
      "Expected ReferenceHolder to have a pointee property. This is likely a bug in uniffi-bindgen-react-native"
    );
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<RustBuffer> {
  static RustBuffer rustbuffer_alloc(int32_t size) {
      RustCallStatus status = { UNIFFI_CALL_STATUS_OK };
      return ffi_payjoin_ffi_rustbuffer_alloc(
          size,
          &status
      );
  }

  static void rustbuffer_free(RustBuffer buf) {
    RustCallStatus status = { UNIFFI_CALL_STATUS_OK };
    ffi_payjoin_ffi_rustbuffer_free(
        buf,
        &status
    );
  }

  static RustBuffer rustbuffer_from_bytes(ForeignBytes bytes) {
    RustCallStatus status = { UNIFFI_CALL_STATUS_OK };
    return ffi_payjoin_ffi_rustbuffer_from_bytes(
      bytes,
      &status
    );
  }

  static RustBuffer fromJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker>,
                           const jsi::Value &value) {
    try {
      auto buffer = uniffi_jsi::Bridging<jsi::ArrayBuffer>::value_to_arraybuffer(rt, value);
      auto bytes = ForeignBytes{
          .len = static_cast<int32_t>(buffer.length(rt)),
          .data = buffer.data(rt),
      };

      // This buffer is constructed from foreign bytes. Rust scaffolding copies
      // the bytes, to make the RustBuffer.
      auto buf = rustbuffer_from_bytes(bytes);
      // Once it leaves this function, the buffer is immediately passed back
      // into Rust, where it's used to deserialize into the Rust versions of the
      // arguments. At that point, the copy is destroyed.
      return buf;
    } catch (const std::logic_error &e) {
      throw jsi::JSError(rt, e.what());
    }
  }

  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker>,
                         RustBuffer buf) {
    // View-handoff: hand JS a `Uint8Array` view aliasing the Rust-owned bytes
    // (no boundary copy). The single mandatory copy now happens inside
    // `converter.lift(view)` (string decode, byte-array `set`, field-by-field
    // record reads). The codegen-emitted try/finally calls `rustbuffer_free`
    // on the view after `lift` returns, releasing the Rust allocation.
    //
    // Capacity hint: Rust may return a buffer where `capacity > len`. The
    // view's `byteLength` is `len` (so converters that decode the whole view
    // see only the message bytes), but `rustbuffer_free` needs `capacity` to
    // free correctly. We stash `capacity` on the view via a string-keyed
    // property when it differs from `len`; the JSI `rustbufferFree` host
    // function reads it back and falls back to `byteLength` for views from
    // `rustbufferAlloc(n)` where `byteLength == capacity` already.
    //
    // CMutableBuffer is non-owning here: its destructor leaves `buf.data`
    // alone. Only the codegen-emitted `rustbuffer_free` path frees it.
    auto payload = std::make_shared<uniffi_jsi::CMutableBuffer>(
        buf.data, static_cast<size_t>(buf.len));
    auto view = uniffi_jsi::arraybufferToUint8Array(
        rt, jsi::ArrayBuffer(rt, payload));
    if (buf.capacity != static_cast<uint64_t>(buf.len)) {
      view.setProperty(rt, uniffi_jsi::kUbrnRustCapacity,
                       jsi::Value(static_cast<double>(buf.capacity)));
    }
    return jsi::Value(rt, view);
  }
};

} // namespace uniffi::payjoin

namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<RustCallStatus> {
  static jsi::Value jsSuccess(jsi::Runtime &rt) {
    auto statusObject = jsi::Object(rt);
    statusObject.setProperty(rt, "code", jsi::Value(rt, UNIFFI_CALL_STATUS_OK));
    return statusObject;
  }
  static RustCallStatus rustSuccess(jsi::Runtime &rt) {
    return {UNIFFI_CALL_STATUS_OK};
  }
  static void copyIntoJs(jsi::Runtime &rt,
                         std::shared_ptr<CallInvoker> callInvoker,
                         const RustCallStatus status,
                         const jsi::Value &jsStatus) {
    auto statusObject = jsStatus.asObject(rt);
    if (status.error_buf.data != nullptr) {
      // The error path is NOT wrapped in the codegen-emitted try/finally that
      // covers normal returns: `errorBuf` is read by the runtime's call-status
      // dispatcher (rust-call.ts) which throws straight to the user without
      // ever calling `rustbuffer_free`. Switching this site to view-handoff
      // would leak the Rust allocation, so we keep the copy semantics here:
      // copy the bytes into a JS-owned ArrayBuffer and free the Rust buffer
      // immediately. The errorBuf is small (a serialized error variant) and
      // only allocated on the cold error path, so the boundary copy is cheap.
      auto len = static_cast<size_t>(status.error_buf.len);
      uint8_t *bytes = new uint8_t[len];
      std::memcpy(bytes, status.error_buf.data, len);
      auto payload = std::make_shared<uniffi_jsi::CMutableBuffer>(bytes, len);
      auto view = uniffi_jsi::arraybufferToUint8Array(
          rt, jsi::ArrayBuffer(rt, payload));
      statusObject.setProperty(rt, "errorBuf", view);
      Bridging<RustBuffer>::rustbuffer_free(status.error_buf);
    }
    if (status.code != UNIFFI_CALL_STATUS_OK) {
      auto code =
          uniffi_jsi::Bridging<uint8_t>::toJs(rt, callInvoker, status.code);
      statusObject.setProperty(rt, "code", code);
    }
  }

  static RustCallStatus fromJs(jsi::Runtime &rt,
                               std::shared_ptr<CallInvoker> invoker,
                               const jsi::Value &jsStatus) {
    RustCallStatus status;
    auto statusObject = jsStatus.asObject(rt);
    if (statusObject.hasProperty(rt, "errorBuf")) {
      auto rbuf = statusObject.getProperty(rt, "errorBuf");
      status.error_buf =
          Bridging<RustBuffer>::fromJs(rt, invoker, rbuf);
    }
    if (statusObject.hasProperty(rt, "code")) {
      auto code = statusObject.getProperty(rt, "code");
      status.code = uniffi_jsi::Bridging<uint8_t>::fromJs(rt, invoker, code);
    }
    return status;
  }

  static void copyFromJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> invoker,
                         const jsi::Value &jsStatus, RustCallStatus *status) {
    auto statusObject = jsStatus.asObject(rt);
    if (statusObject.hasProperty(rt, "errorBuf")) {
      auto rbuf = statusObject.getProperty(rt, "errorBuf");
      status->error_buf =
          Bridging<RustBuffer>::fromJs(rt, invoker, rbuf);
    }
    if (statusObject.hasProperty(rt, "code")) {
      auto code = statusObject.getProperty(rt, "code");
      status->code = uniffi_jsi::Bridging<uint8_t>::fromJs(rt, invoker, code);
    }
  }
};

} // namespace uniffi::payjoin
// In other uniffi bindings, it is assumed that the foreign language holds on
// to the vtable, which the Rust just gets a pointer to.
// Here, we need to hold on to them, but also be able to clear them at just the
// right time so we can support hot-reloading.
namespace uniffi::payjoin::registry {
    template <typename T>
    class VTableHolder {
    public:
        T vtable;
        VTableHolder(T v) : vtable(v) {}
    };

    // Mutex to bind the storage and setting of vtable together.
    // We declare it here, but the lock is taken by callers of the putTable
    // method who are also sending a pointer to Rust.
    static std::mutex vtableMutex;

    // Registry to hold all vtables so they persist even when JS objects are GC'd.
    // The only reason this exists is to prevent a dangling pointer in the
    // Rust machinery: i.e. we don't need to access or write to this registry
    // after startup.
    // Registry to hold all vtables so they persist even when JS objects are GC'd.
    // Maps string identifiers to vtable holders using type erasure
    static std::unordered_map<std::string, std::shared_ptr<void>> vtableRegistry;

    // Add a vtable to the registry with an identifier
    template <typename T>
    static T* putTable(std::string_view identifier, T vtable) {
        auto holder = std::make_shared<VTableHolder<T>>(vtable);
        // Store the raw pointer to the vtable before type erasure
        T* rawPtr = &(holder->vtable);
        // Store the holder using type erasure with the string identifier
        vtableRegistry[std::string(identifier)] = std::shared_ptr<void>(holder);
        return rawPtr;
    }

    // Clear the registry.
    //
    // Conceptually, this is called after teardown of the module (i.e. after
    // teardown of the jsi::Runtime). However, because Rust is dropping callbacks
    // because the Runtime is being torn down, we must keep the registry intact
    // until after the runtime goes away.
    //
    // Therefore, in practice we should call this when the next runtime is
    // being stood up.
    static void clearRegistry() {
        std::lock_guard<std::mutex> lock(vtableMutex);
        vtableRegistry.clear();
    }
} // namespace uniffi::payjoin::registry

// This calls into Rust.
    // Implementation of callback function calling from Rust to JS RustFutureContinuationCallback

// Callback function: uniffi::payjoin::cb::rustfuturecontinuationcallback::UniffiRustFutureContinuationCallback
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::rustfuturecontinuationcallback {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, int8_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_data
            ,int8_t rs_pollResult) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_data = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_data);
        auto js_pollResult = uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, rs_pollResult);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_data, js_pollResult
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiRustFutureContinuationCallback: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_data, int8_t rs_pollResult) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_data, 
            rs_pollResult);
    }

    [[maybe_unused]] static UniffiRustFutureContinuationCallback
    makeCallbackFunction( // uniffi::payjoin::cb::rustfuturecontinuationcallback
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_data, int8_t rs_pollResult) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_data
                    , rs_pollResult](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_data
                        , rs_pollResult);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::rustfuturecontinuationcallback
    // Implementation of callback function calling from Rust to JS ForeignFutureDroppedCallback

// Callback function: uniffi::payjoin::cb::foreignfuturedroppedcallback::UniffiForeignFutureDroppedCallback
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::foreignfuturedroppedcallback {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiForeignFutureDroppedCallback: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiForeignFutureDroppedCallback
    makeCallbackFunction( // uniffi::payjoin::cb::foreignfuturedroppedcallback
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::foreignfuturedroppedcallback
    // Implementation of free callback function CallbackInterfaceFree


// Callback function: uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free

// Callback function: uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free::UniffiCallbackInterfaceFree
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceFree: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceFree
    makeCallbackFunction( // uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                
                callInvoker->invokeNonBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureDroppedCallbackStruct> {
  static UniffiForeignFutureDroppedCallbackStruct fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureDroppedCallbackStruct");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureDroppedCallbackStruct rsObject;

    // Create the vtable from the js callbacks.
    rsObject.handle = uniffi_jsi::Bridging<uint64_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "handle")
      );
    rsObject.free = uniffi::payjoin::cb::foreignfuturedroppedcallback::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "free")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultU8> {
  static UniffiForeignFutureResultU8 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultU8");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultU8 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<uint8_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteU8,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteU8> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteU8 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteU8"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteU8 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultU8>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultI8> {
  static UniffiForeignFutureResultI8 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultI8");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultI8 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<int8_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteI8,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteI8> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteI8 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteI8"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteI8 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultI8>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultU16> {
  static UniffiForeignFutureResultU16 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultU16");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultU16 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<uint16_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteU16,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteU16> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteU16 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteU16"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteU16 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultU16>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultI16> {
  static UniffiForeignFutureResultI16 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultI16");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultI16 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<int16_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteI16,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteI16> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteI16 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteI16"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteI16 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultI16>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultU32> {
  static UniffiForeignFutureResultU32 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultU32");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultU32 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<uint32_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteU32,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteU32> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteU32 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteU32"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteU32 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultU32>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultI32> {
  static UniffiForeignFutureResultI32 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultI32");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultI32 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<int32_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteI32,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteI32> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteI32 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteI32"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteI32 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultI32>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultU64> {
  static UniffiForeignFutureResultU64 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultU64");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultU64 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<uint64_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteU64,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteU64> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteU64 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteU64"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteU64 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultU64>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultI64> {
  static UniffiForeignFutureResultI64 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultI64");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultI64 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<int64_t>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteI64,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteI64> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteI64 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteI64"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteI64 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultI64>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultF32> {
  static UniffiForeignFutureResultF32 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultF32");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultF32 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<float>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteF32,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteF32> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteF32 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteF32"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteF32 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultF32>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultF64> {
  static UniffiForeignFutureResultF64 fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultF64");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultF64 rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi_jsi::Bridging<double>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteF64,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteF64> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteF64 rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteF64"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteF64 func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultF64>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultRustBuffer> {
  static UniffiForeignFutureResultRustBuffer fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultRustBuffer");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultRustBuffer rsObject;

    // Create the vtable from the js callbacks.
    rsObject.return_value = uniffi::payjoin::Bridging<RustBuffer>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "return_value")
      );
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteRustBuffer,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteRustBuffer> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteRustBuffer rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteRustBuffer"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteRustBuffer func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultRustBuffer>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureResultVoid> {
  static UniffiForeignFutureResultVoid fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiForeignFutureResultVoid");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiForeignFutureResultVoid rsObject;

    // Create the vtable from the js callbacks.
    rsObject.call_status = uniffi::payjoin::Bridging<RustCallStatus>::fromJs(
        rt, callInvoker,
        jsObject.getProperty(rt, "call_status")
      );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of callback function calling from JS to Rust ForeignFutureCompleteVoid,
    // passed from Rust to JS as part of async callbacks.
namespace uniffi::payjoin {
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiForeignFutureCompleteVoid> {
  static jsi::Value toJs(jsi::Runtime &rt, std::shared_ptr<CallInvoker> callInvoker, UniffiForeignFutureCompleteVoid rsCallback) {
    return jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "--ForeignFutureCompleteVoid"),
        2,
        [rsCallback, callInvoker](
            jsi::Runtime &rt,
            const jsi::Value &thisValue,
            const jsi::Value *arguments,
            size_t count) -> jsi::Value
        {
            return intoRust(rt, callInvoker, thisValue, arguments, count, rsCallback);
        }
    );
  }

  static jsi::Value intoRust(
      jsi::Runtime &rt,
      std::shared_ptr<CallInvoker> callInvoker,
      const jsi::Value &thisValue,
      const jsi::Value *args,
      size_t count,
      UniffiForeignFutureCompleteVoid func) {
    // Convert the arguments into the Rust, with Bridging<T>::fromJs,
    // then call the rs_callback with those arguments.
        func(uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiForeignFutureResultVoid>::fromJs(rt, callInvoker, args[1])
        );

        
        return jsi::Value::undefined();
  }
};
} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceCanBroadcast


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast
    // Implementation of CallbackInterfaceCanBroadcastMethod0 for vtable field callback in VTableCallbackInterfaceCanBroadcast


// Callback function: uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast::UniffiCallbackInterfaceCanBroadcastMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, int8_t *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_tx
            ,int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_tx = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_tx);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_tx
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is Int8
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi_jsi::Bridging<
                    ReferenceHolder<int8_t>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceCanBroadcastMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_tx, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_tx, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceCanBroadcastMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_tx, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_tx
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_tx
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceCanBroadcast> {
  static UniffiVTableCallbackInterfaceCanBroadcast fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceCanBroadcast");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceCanBroadcast rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceIsInputOwned


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned
    // Implementation of CallbackInterfaceIsInputOwnedMethod0 for vtable field callback in VTableCallbackInterfaceIsInputOwned


// Callback function: uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned::UniffiCallbackInterfaceIsInputOwnedMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, int8_t *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_outpoint
            ,int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_outpoint = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_outpoint);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_outpoint
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is Int8
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi_jsi::Bridging<
                    ReferenceHolder<int8_t>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceIsInputOwnedMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_outpoint, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_outpoint, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceIsInputOwnedMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_outpoint, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_outpoint
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_outpoint
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceIsInputOwned> {
  static UniffiVTableCallbackInterfaceIsInputOwned fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceIsInputOwned");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceIsInputOwned rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceIsOutputKnown


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown
    // Implementation of CallbackInterfaceIsOutputKnownMethod0 for vtable field callback in VTableCallbackInterfaceIsOutputKnown


// Callback function: uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown::UniffiCallbackInterfaceIsOutputKnownMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, int8_t *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_outpoint
            ,int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_outpoint = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_outpoint);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_outpoint
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is Int8
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi_jsi::Bridging<
                    ReferenceHolder<int8_t>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceIsOutputKnownMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_outpoint, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_outpoint, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceIsOutputKnownMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_outpoint, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_outpoint
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_outpoint
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceIsOutputKnown> {
  static UniffiVTableCallbackInterfaceIsOutputKnown fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceIsOutputKnown");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceIsOutputKnown rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceIsScriptOwned


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned
    // Implementation of CallbackInterfaceIsScriptOwnedMethod0 for vtable field callback in VTableCallbackInterfaceIsScriptOwned


// Callback function: uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned::UniffiCallbackInterfaceIsScriptOwnedMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, int8_t *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_script
            ,int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_script = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_script);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_script
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is Int8
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi_jsi::Bridging<
                    ReferenceHolder<int8_t>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceIsScriptOwnedMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_script, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_script, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceIsScriptOwnedMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_script, int8_t * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_script
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_script
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceIsScriptOwned> {
  static UniffiVTableCallbackInterfaceIsScriptOwned fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceIsScriptOwned");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceIsScriptOwned rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceJsonReceiverSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterMethod0 for vtable field save in VTableCallbackInterfaceJsonReceiverSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister::UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, void *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_event
            ,void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_event = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_event);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_event
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_event, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_event, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_event, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_event
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_event
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterMethod1 for vtable field load in VTableCallbackInterfaceJsonReceiverSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister::UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod1
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is RustBuffer(None)
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi::payjoin::Bridging<
                    ReferenceHolder<RustBuffer>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod1: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod1
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterMethod2 for vtable field close in VTableCallbackInterfaceJsonReceiverSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister::UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod2
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, void *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod2: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterMethod2
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceJsonReceiverSessionPersister> {
  static UniffiVTableCallbackInterfaceJsonReceiverSessionPersister fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceJsonReceiverSessionPersister");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceJsonReceiverSessionPersister rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.save = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "save")
        );
    rsObject.load = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "load")
        );
    rsObject.close = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "close")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceJsonReceiverSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0 for vtable field save in VTableCallbackInterfaceJsonReceiverSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync::UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, UniffiForeignFutureCompleteVoid, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_event
            ,UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_event = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_event);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteVoid>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_event, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_event, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_event, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_event, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_event
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_event
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1 for vtable field load in VTableCallbackInterfaceJsonReceiverSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync::UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, UniffiForeignFutureCompleteRustBuffer, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteRustBuffer>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod1
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync
    // Implementation of CallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2 for vtable field close in VTableCallbackInterfaceJsonReceiverSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync::UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, UniffiForeignFutureCompleteVoid, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteVoid>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonReceiverSessionPersisterAsyncMethod2
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync> {
  static UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.save = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "save")
        );
    rsObject.load = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "load")
        );
    rsObject.close = uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "close")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceProcessPsbt


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt
    // Implementation of CallbackInterfaceProcessPsbtMethod0 for vtable field callback in VTableCallbackInterfaceProcessPsbt


// Callback function: uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt::UniffiCallbackInterfaceProcessPsbtMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, RustBuffer *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_psbt
            ,RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_psbt = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_psbt);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_psbt
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is RustBuffer(None)
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi::payjoin::Bridging<
                    ReferenceHolder<RustBuffer>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceProcessPsbtMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_psbt, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_psbt, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceProcessPsbtMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_psbt, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_psbt
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_psbt
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceProcessPsbt> {
  static UniffiVTableCallbackInterfaceProcessPsbt fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceProcessPsbt");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceProcessPsbt rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceTransactionFinder


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder
    // Implementation of CallbackInterfaceTransactionFinderMethod0 for vtable field callback in VTableCallbackInterfaceTransactionFinder


// Callback function: uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder::UniffiCallbackInterfaceTransactionFinderMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, RustBuffer *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_txid
            ,RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_txid = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_txid);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_txid
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is RustBuffer(None)
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi::payjoin::Bridging<
                    ReferenceHolder<RustBuffer>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceTransactionFinderMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_txid, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_txid, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceTransactionFinderMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_txid, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_txid
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_txid
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceTransactionFinder> {
  static UniffiVTableCallbackInterfaceTransactionFinder fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceTransactionFinder");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceTransactionFinder rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.callback = uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "callback")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceJsonSenderSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterMethod0 for vtable field save in VTableCallbackInterfaceJsonSenderSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister::UniffiCallbackInterfaceJsonSenderSessionPersisterMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, void *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_event
            ,void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_event = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_event);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_event
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_event, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_event, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_event, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_event
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_event
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterMethod1 for vtable field load in VTableCallbackInterfaceJsonSenderSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister::UniffiCallbackInterfaceJsonSenderSessionPersisterMethod1
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
            // return type is RustBuffer(None)
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutReturn =
                uniffi::payjoin::Bridging<
                    ReferenceHolder<RustBuffer>
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterMethod1: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterMethod1
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterMethod2 for vtable field close in VTableCallbackInterfaceJsonSenderSessionPersister


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister::UniffiCallbackInterfaceJsonSenderSessionPersisterMethod2
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, void *, RustCallStatus*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle
            );

            // Now copy the result back from JS into the RustCallStatus object.
            uniffi::payjoin::Bridging<RustCallStatus>::copyFromJs(rt, callInvoker, uniffiResult, uniffi_call_status);

            if (uniffi_call_status->code != UNIFFI_CALL_STATUS_OK) {
                // The JS callback finished abnormally, so we cannot retrieve the return value.
                return;
            }

            
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterMethod2: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiOutReturn, uniffi_call_status);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterMethod2
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, void * rs_uniffiOutReturn, RustCallStatus* uniffi_call_status) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiOutReturn, uniffi_call_status](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiOutReturn, uniffi_call_status);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceJsonSenderSessionPersister> {
  static UniffiVTableCallbackInterfaceJsonSenderSessionPersister fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceJsonSenderSessionPersister");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceJsonSenderSessionPersister rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.save = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "save")
        );
    rsObject.load = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "load")
        );
    rsObject.close = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "close")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin
    // Implementation of CallbackInterfaceClone for vtable field uniffi_clone in VTableCallbackInterfaceJsonSenderSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync::UniffiCallbackInterfaceClone
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, uint64_t*)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_handle
            , uint64_t* uniffi_direct_return) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_handle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_handle);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_handle
            );

            

            
            // Write the direct return value back to the caller.
            if (uniffi_direct_return != nullptr) {
                *uniffi_direct_return = uniffi_jsi::Bridging<uint64_t>::fromJs(
                    rt, callInvoker, uniffiResult
                );
            }
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceClone: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static uint64_t callback(uint64_t rs_handle) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return 0;
        }
        uint64_t uniffi_result = 0;

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_handle, 
            &uniffi_result);
        return uniffi_result;
    }

    [[maybe_unused]] static UniffiCallbackInterfaceClone
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_handle, uint64_t* uniffi_direct_return) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_handle, uniffi_direct_return](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_handle, uniffi_direct_return);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterAsyncMethod0 for vtable field save in VTableCallbackInterfaceJsonSenderSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync::UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod0
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, RustBuffer, UniffiForeignFutureCompleteVoid, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,RustBuffer rs_event
            ,UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_event = uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, rs_event);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteVoid>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_event, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod0: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, RustBuffer rs_event, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_event, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod0
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, RustBuffer rs_event, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_event
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_event
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterAsyncMethod1 for vtable field load in VTableCallbackInterfaceJsonSenderSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync::UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod1
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, UniffiForeignFutureCompleteRustBuffer, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteRustBuffer>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod1: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod1
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteRustBuffer rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync
    // Implementation of CallbackInterfaceJsonSenderSessionPersisterAsyncMethod2 for vtable field close in VTableCallbackInterfaceJsonSenderSessionPersisterAsync


// Callback function: uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync::UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod2
//
// We have the following constraints:
// - we need to pass a function pointer to Rust.
// - we need a jsi::Runtime and jsi::Function to call into JS.
// - function pointers can't store state, so we can't use a lamda.
//
// For this, we store a lambda as a global, as `rsLambda`. The `callback` function calls
// the lambda, which itself calls the `body` which then calls into JS.
//
// We then give the `callback` function pointer to Rust which will call the lambda sometime in the
// future.
namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync {
    using namespace facebook;

    // We need to store a lambda in a global so we can call it from
    // a function pointer. The function pointer is passed to Rust.
    static std::function<void(uint64_t, UniffiForeignFutureCompleteVoid, uint64_t, UniffiForeignFutureDroppedCallbackStruct *)> rsLambda = nullptr;

    // This is the main body of the callback. It's called from the lambda,
    // which itself is called from the callback function which is passed to Rust.
    static void body(jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     std::shared_ptr<jsi::Value> callbackValue
            ,uint64_t rs_uniffiHandle
            ,UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback
            ,uint64_t rs_uniffiCallbackData
            ,UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {

        // Convert the arguments from Rust, into jsi::Values.
        // We'll use the Bridging class to do this…
        auto js_uniffiHandle = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiHandle);
        auto js_uniffiFutureCallback = uniffi::payjoin::Bridging<UniffiForeignFutureCompleteVoid>::toJs(rt, callInvoker, rs_uniffiFutureCallback);
        auto js_uniffiCallbackData = uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, rs_uniffiCallbackData);

        // Now we are ready to call the callback.
        // We are already on the JS thread, because this `body` function was
        // invoked from the CallInvoker.
        try {
            // Getting the callback function
            auto cb = callbackValue->asObject(rt).asFunction(rt);
            auto uniffiResult = cb.call(rt, js_uniffiHandle, js_uniffiFutureCallback, js_uniffiCallbackData
            );

            

            
            // return type is Struct("ForeignFutureDroppedCallbackStruct")
            // Finally, we need to copy the return value back into the Rust pointer.
            *rs_uniffiOutDroppedCallback =
                uniffi::payjoin::Bridging<
                    UniffiForeignFutureDroppedCallbackStruct
                >::fromJs(
                    rt, callInvoker, uniffiResult
                );
        } catch (const jsi::JSError &error) {
            std::cout << "Error in callback UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod2: "
                    << error.what() << std::endl;
            throw error;
        }
    }

    static void callback(uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
        // If the runtime has shutdown, then there is no point in trying to
        // call into Javascript. BUT how do we tell if the runtime has shutdown?
        //
        // Answer: the module destructor calls into callback `cleanup` method,
        // which nulls out the rsLamda.
        //
        // If rsLamda is null, then there is no runtime to call into.
        if (rsLambda == nullptr) {
            // This only occurs when destructors are calling into Rust free/drop,
            // which causes the JS callback to be dropped.
            return;
        }

        // The runtime, the actual callback jsi::funtion, and the callInvoker
        // are all in the lambda.
        rsLambda(
            rs_uniffiHandle, 
            rs_uniffiFutureCallback, 
            rs_uniffiCallbackData, 
            rs_uniffiOutDroppedCallback);
    }

    [[maybe_unused]] static UniffiCallbackInterfaceJsonSenderSessionPersisterAsyncMethod2
    makeCallbackFunction( // uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync
                    jsi::Runtime &rt,
                     std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker,
                     const jsi::Value &value) {
        if (rsLambda != nullptr) {
            // `makeCallbackFunction` is called in two circumstances:
            //
            // 1. at startup, when initializing callback interface vtables.
            // 2. when polling futures. This happens at least once per future that is
            //    exposed to Javascript. We know that this is always the same function,
            //    `uniffiFutureContinuationCallback` in `async-rust-calls.ts`.
            //
            // We can therefore return the callback function without making anything
            // new if we've been initialized already.
            return callback;
        }
        auto callbackFunction = value.asObject(rt).asFunction(rt);
        auto callbackValue = std::make_shared<jsi::Value>(rt, callbackFunction);
        rsLambda = [&rt, callInvoker, callbackValue](uint64_t rs_uniffiHandle, UniffiForeignFutureCompleteVoid rs_uniffiFutureCallback, uint64_t rs_uniffiCallbackData, UniffiForeignFutureDroppedCallbackStruct * rs_uniffiOutDroppedCallback) {
                // We immediately make a lambda which will do the work of transforming the
                // arguments into JSI values and calling the callback.
                uniffi_runtime::UniffiCallFunc jsLambda = [
                    callInvoker,
                    callbackValue
                    , rs_uniffiHandle
                    , rs_uniffiFutureCallback
                    , rs_uniffiCallbackData
                    , rs_uniffiOutDroppedCallback](jsi::Runtime &rt) mutable {
                    body(rt, callInvoker, callbackValue
                        , rs_uniffiHandle
                        , rs_uniffiFutureCallback
                        , rs_uniffiCallbackData
                        , rs_uniffiOutDroppedCallback);
                };
                // We'll then call that lambda from the callInvoker which will
                // look after calling it on the correct thread.
                callInvoker->invokeBlocking(rt, jsLambda);
        };
        return callback;
    }

    // This method is called from the destructor of NativePayjoin, which only happens
    // when the jsi::Runtime is being destroyed.
    static void cleanup() {
        // The lambda holds a reference to the the Runtime, so when this is nulled out,
        // then the pointer will no longer be left dangling.
        rsLambda = nullptr;
    }
} // namespace uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync
namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync> {
  static UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync fromJs(jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &jsValue
  ) {
    // Check if the input is an object
    if (!jsValue.isObject()) {
      throw jsi::JSError(rt, "Expected an object for UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync");
    }

    // Get the object from the jsi::Value
    auto jsObject = jsValue.getObject(rt);

    // Create the vtable struct
    UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync rsObject;

    // Create the vtable from the js callbacks.
    rsObject.uniffi_free = uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_free")
        );
    rsObject.uniffi_clone = uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "uniffi_clone")
        );
    rsObject.save = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "save")
        );
    rsObject.load = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "load")
        );
    rsObject.close = uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync::makeCallbackFunction(
          rt, callInvoker, jsObject.getProperty(rt, "close")
        );

    return rsObject;
  }
};

} // namespace uniffi::payjoin


namespace uniffi::payjoin {
using namespace facebook;
using CallInvoker = uniffi_runtime::UniffiCallInvoker;

template <> struct Bridging<UniffiRustFutureContinuationCallback> {
  static UniffiRustFutureContinuationCallback fromJs(
    jsi::Runtime &rt,
    std::shared_ptr<CallInvoker> callInvoker,
    const jsi::Value &value
  ) {
    try {
      return uniffi::payjoin::cb::rustfuturecontinuationcallback::makeCallbackFunction(
        rt,
        callInvoker,
        value
      );
    } catch (const std::logic_error &e) {
      throw jsi::JSError(rt, e.what());
    }
  }
};

} // namespace uniffi::payjoin

NativePayjoin::NativePayjoin(
    jsi::Runtime &rt,
    std::shared_ptr<uniffi_runtime::UniffiCallInvoker> invoker
) : callInvoker(invoker), props() {
    // Map from Javascript names to the cpp names
    props["ubrn_uniffi_internal_fn_func_ffi__string_to_byte_length"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_func_ffi__string_to_byte_length"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_func_ffi__string_to_byte_length(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_func_ffi__string_to_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_func_ffi__string_to_buffer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_func_ffi__string_to_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_func_ffi__string_from_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_func_ffi__string_from_buffer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_func_ffi__string_from_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_func_ffi__read_string_from_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_func_ffi__read_string_from_buffer"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_func_ffi__read_string_from_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_implementationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_implementationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_implementationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_implementationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_implementationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_implementationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_serdejsonerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_serdejsonerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_serdejsonerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_serdejsonerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_serdejsonerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_serdejsonerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_clientresponse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_clientresponse"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_clientresponse(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_clientresponse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_clientresponse"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_clientresponse(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_ohttpkeys"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_ohttpkeys"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_ohttpkeys(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_ohttpkeys"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_ohttpkeys"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_ohttpkeys(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_ohttperror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_ohttperror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_ohttperror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_ohttperror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_ohttperror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_ohttperror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_assumeinteractivetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_assumeinteractivetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_assumeinteractivetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_canbroadcast"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_canbroadcast"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_canbroadcast(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_canbroadcast"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_canbroadcast"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_canbroadcast(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_canbroadcast_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_canbroadcast_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_canbroadcast_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_canceltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_canceltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_canceltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_canceltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_canceltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_canceltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_canceltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_canceltransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_canceltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_canceltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_canceltransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_canceltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_hasreplyableerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_hasreplyableerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_hasreplyableerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_hasreplyableerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_hasreplyableerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_hasreplyableerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_initialreceivetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_initialreceivetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_initialreceivetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_initialreceivetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_initialreceivetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_initialreceivetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_initialized"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_initialized"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_initialized(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_initialized"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_initialized"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_initialized(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialized_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialized_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialized_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialized_create_poll_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialized_create_poll_request"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialized_create_poll_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialized_pj_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialized_pj_uri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialized_pj_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialized_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialized_process_response"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialized_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_initializedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_initializedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_initializedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_initializedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_initializedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_initializedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initializedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initializedtransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initializedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initializedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initializedtransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initializedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_inputpair"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_inputpair"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_inputpair(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_inputpair"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_inputpair"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_inputpair(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_inputpair_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_inputpair_new"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_inputpair_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_inputpair_outpoint"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_inputpair_outpoint"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_inputpair_outpoint(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_isinputowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_isinputowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_isinputowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_isinputowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_isinputowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_isinputowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_isinputowned_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_isinputowned_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_isinputowned_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_isoutputknown"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_isoutputknown"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_isoutputknown(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_isoutputknown"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_isoutputknown"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_isoutputknown(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_isoutputknown_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_isoutputknown_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_isoutputknown_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_isscriptowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_isscriptowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_isscriptowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_isscriptowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_isscriptowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_isscriptowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_isscriptowned_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_isscriptowned_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_isscriptowned_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsowned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsowned"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_maybeinputsowned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsseen"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsseen"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsseen(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsseen"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsseen"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_maybeinputsseen(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsseentransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_maybeinputsseentransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_maybeinputsseentransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_monitor"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_monitor"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_monitor(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_monitor"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_monitor"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_monitor(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_monitor_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_monitor_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_monitor_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_monitortransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_monitortransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_monitortransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_monitortransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_monitortransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_monitortransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_monitortransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_monitortransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_monitortransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_monitortransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_monitortransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_monitortransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_outputsunknown"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_outputsunknown"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_outputsunknown(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_outputsunknown"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_outputsunknown"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_outputsunknown(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_outputsunknowntransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_outputsunknowntransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_outputsunknowntransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_outputsunknowntransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_outputsunknowntransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_outputsunknowntransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_payjoinproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_payjoinproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_payjoinproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_payjoinproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_payjoinproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_payjoinproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_payjoinproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_payjoinproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_payjoinproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pendingfallbacktransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pendingfallbacktransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pendingfallbacktransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_processpsbt"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_processpsbt"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_processpsbt(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_processpsbt"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_processpsbt"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_processpsbt(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_processpsbt_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_processpsbt_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_processpsbt_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_provisionalproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_provisionalproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_provisionalproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_provisionalproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_provisionalproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_provisionalproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_provisionalproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_provisionalproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_provisionalproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiverbuilder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiverbuilder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiverbuilder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiverbuilder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiverbuilder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiverbuilder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_build"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_build"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_build(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiverpendingfallback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiverpendingfallback"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiverpendingfallback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiverpendingfallback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiverpendingfallback"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiverpendingfallback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionevent"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionevent"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiversessionevent(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiversessionevent"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiversessionevent"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiversessionevent(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionhistory"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionhistory"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiversessionhistory(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiversessionhistory"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiversessionhistory"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiversessionhistory(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_status"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiversessionhistory_status"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_status(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionoutcome"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionoutcome"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiversessionoutcome(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiversessionoutcome"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiversessionoutcome"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiversessionoutcome(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionstatus"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiversessionstatus"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiversessionstatus(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiversessionstatus"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiversessionstatus"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiversessionstatus(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_replayresult"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_replayresult"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_replayresult(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_replayresult"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_replayresult"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_replayresult(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_replayresult_session_history"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_replayresult_session_history"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_replayresult_session_history(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_replayresult_state"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_replayresult_state"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_replayresult_state(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_transactionfinder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_transactionfinder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_transactionfinder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_transactionfinder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_transactionfinder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_transactionfinder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_transactionfinder_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_transactionfinder_callback"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_transactionfinder_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsfeerange"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsfeerange"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsfeerange(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsfeerange"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsfeerange"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsfeerange(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsfeerangetransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsfeerangetransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsfeerangetransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsinputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsinputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsinputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsinputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsinputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsinputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsinputstransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsinputstransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsinputstransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsinputstransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsinputstransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsinputstransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsoutputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsoutputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsoutputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsoutputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsoutputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsoutputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wantsoutputstransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wantsoutputstransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wantsoutputstransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wantsoutputstransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wantsoutputstransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wantsoutputstransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_addressparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_addressparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_addressparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_addressparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_addressparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_addressparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_coinselectionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_coinselectionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_coinselectionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_coinselectionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_coinselectionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_coinselectionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_inputcontributionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_inputcontributionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_inputcontributionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_inputcontributionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_inputcontributionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_inputcontributionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_jsonreply"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_jsonreply"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_jsonreply(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_jsonreply"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_jsonreply"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_jsonreply(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_protocolerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_protocolerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_protocolerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_protocolerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_protocolerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_protocolerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_psbtinputerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_psbtinputerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_psbtinputerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_psbtinputerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_psbtinputerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_psbtinputerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receivercreaterequesterror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receivercreaterequesterror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receivercreaterequesterror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_receiverreplayerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_receiverreplayerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_receiverreplayerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_receiverreplayerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_receiverreplayerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_receiverreplayerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sessionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sessionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sessionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sessionerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sessionerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sessionerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_broadcastedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_broadcastedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_broadcastedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_broadcastedtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_broadcastedtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_broadcastedtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_initialsendtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_initialsendtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_initialsendtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_initialsendtransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_initialsendtransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_initialsendtransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialsendtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialsendtransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialsendtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pjparam"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pjparam"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pjparam(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pjparam"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pjparam"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pjparam(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pollingforproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pollingforproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pollingforproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pollingforproposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pollingforproposal"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pollingforproposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pollingforproposaltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pollingforproposaltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pollingforproposaltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_senderbuilder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_senderbuilder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_senderbuilder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_senderbuilder"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_senderbuilder"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_senderbuilder(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_senderbuilder_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_senderbuilder_new"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_senderbuilder_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee"),
        5,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sendercanceltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sendercanceltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sendercanceltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sendercanceltransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sendercanceltransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sendercanceltransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_senderpendingfallback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_senderpendingfallback"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_senderpendingfallback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_senderpendingfallback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_senderpendingfallback"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_senderpendingfallback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderpendingfallback_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderpendingfallback_close"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderpendingfallback_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_senderreplayresult"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_senderreplayresult"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_senderreplayresult(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_senderreplayresult"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_senderreplayresult"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_senderreplayresult(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderreplayresult_state"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderreplayresult_state"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderreplayresult_state(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionevent"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionevent"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sendersessionevent(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sendersessionevent"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sendersessionevent"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sendersessionevent(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionhistory"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionhistory"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sendersessionhistory(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sendersessionhistory"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sendersessionhistory"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sendersessionhistory(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_status"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionhistory_status"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_status(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionoutcome"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionoutcome"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sendersessionoutcome(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sendersessionoutcome"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sendersessionoutcome"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sendersessionoutcome(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionstatus"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_sendersessionstatus"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_sendersessionstatus(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_sendersessionstatus"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_sendersessionstatus"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_sendersessionstatus(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_v1context"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_v1context"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_v1context(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_v1context"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_v1context"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_v1context(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_v1context_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_v1context_process_response"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_v1context_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_withreplykey"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_withreplykey"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_withreplykey(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_withreplykey"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_withreplykey"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_withreplykey(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_cancel"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_withreplykey_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_withreplykey_process_response"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_withreplykey_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_withreplykeytransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_withreplykeytransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_withreplykeytransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_withreplykeytransition"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_withreplykeytransition"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_withreplykeytransition(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_createrequesterror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_createrequesterror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_createrequesterror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_createrequesterror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_createrequesterror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_createrequesterror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_decapsulationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_decapsulationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_decapsulationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_decapsulationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_decapsulationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_decapsulationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_senderbuildererror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_senderbuildererror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_senderbuildererror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_senderbuildererror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_senderbuildererror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_senderbuildererror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_senderreplayerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_senderreplayerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_senderreplayerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_senderreplayerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_senderreplayerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_senderreplayerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_validationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_validationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_validationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_validationerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_validationerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_validationerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_wellknownerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_wellknownerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_wellknownerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_wellknownerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_wellknownerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_wellknownerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_code"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_code"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_code(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pjuri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pjuri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pjuri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pjuri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pjuri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pjuri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjuri_address"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjuri_address"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjuri_address(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjuri_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjuri_amount_sats"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjuri_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjuri_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjuri_as_string"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjuri_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_uri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_uri"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_uri_parse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_uri_parse"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_uri_parse(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_address"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_address"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_address(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_amount_sats"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_as_string"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_check_pj_supported"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_check_pj_supported"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_check_pj_supported(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_label"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_label"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_label(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uri_message"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uri_message"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uri_message(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_url"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_url"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_url(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_url"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_url"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_url(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_constructor_url_parse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_constructor_url_parse"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_constructor_url_parse(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_url_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_url_as_string"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_url_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_url_query"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_url_query"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_url_query(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_feerateerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_feerateerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_feerateerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_feerateerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_feerateerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_feerateerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_intourlerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_intourlerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_intourlerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_intourlerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_intourlerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_intourlerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_pjnotsupported"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_pjnotsupported"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_pjnotsupported(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_pjnotsupported"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_pjnotsupported"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_pjnotsupported(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_uriparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_uriparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_uriparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_uriparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_uriparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_uriparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_clone_urlparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_clone_urlparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_clone_urlparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_free_urlparseerror"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_free_urlparseerror"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_free_urlparseerror(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_receiver_manual_contribute"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_receiver_manual_contribute"),
        7,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_receiver_manual_contribute(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_receiver_manual_finalize"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_receiver_manual_finalize"),
        2,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_receiver_manual_finalize(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_replay_sender_event_log"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_replay_sender_event_log"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_replay_sender_event_log(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_u8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_u8"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_u8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_u8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_u8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_u8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_u8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_u8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_u8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_u8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_u8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_u8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_i8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_i8"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_i8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_i8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_i8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_i8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_i8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_i8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_i8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_i8"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_i8"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_i8(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_u16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_u16"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_u16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_u16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_u16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_u16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_u16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_u16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_u16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_u16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_u16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_u16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_i16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_i16"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_i16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_i16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_i16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_i16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_i16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_i16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_i16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_i16"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_i16"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_i16(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_u32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_u32"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_u32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_u32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_u32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_u32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_u32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_u32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_u32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_u32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_u32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_u32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_i32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_i32"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_i32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_i32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_i32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_i32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_i32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_i32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_i32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_i32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_i32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_i32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_u64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_u64"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_u64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_u64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_u64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_u64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_u64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_u64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_u64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_u64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_u64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_u64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_i64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_i64"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_i64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_i64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_i64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_i64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_i64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_i64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_i64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_i64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_i64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_i64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_f32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_f32"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_f32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_f32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_f32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_f32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_f32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_f32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_f32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_f32"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_f32"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_f32(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_f64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_f64"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_f64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_f64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_f64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_f64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_f64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_f64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_f64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_f64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_f64"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_f64(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_rust_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_rust_buffer"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_rust_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_rust_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_rust_buffer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_rust_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_rust_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_rust_buffer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_rust_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_rust_buffer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_rust_buffer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_rust_buffer(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_poll_void"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_poll_void"),
        3,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_poll_void(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_cancel_void"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_cancel_void"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_cancel_void(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_free_void"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_free_void"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_free_void(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_rust_future_complete_void"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_rust_future_complete_void"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_rust_future_complete_void(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_canbroadcast_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_canbroadcast_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_canbroadcast_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_canceltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_canceltransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_canceltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_canceltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_canceltransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_canceltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialized_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialized_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialized_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialized_pj_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialized_pj_uri"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialized_pj_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialized_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialized_process_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialized_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initializedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initializedtransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initializedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_inputpair_outpoint"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_inputpair_outpoint"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_inputpair_outpoint(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_isinputowned_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_isinputowned_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_isinputowned_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_isoutputknown_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_isoutputknown_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_isoutputknown_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_isscriptowned_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_isscriptowned_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_isscriptowned_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_monitor_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_monitor_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_monitor_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_monitortransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_monitortransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_monitortransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_monitortransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_monitortransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_monitortransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_processpsbt_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_processpsbt_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_processpsbt_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_build"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_build"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_build(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_replayresult_session_history"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_replayresult_session_history"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_replayresult_session_history(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_replayresult_state"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_replayresult_state"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_replayresult_state(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_transactionfinder_callback"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_transactionfinder_callback"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_transactionfinder_callback(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayresult_state"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayresult_state"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderreplayresult_state(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_v1context_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_v1context_process_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_v1context_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_cancel"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_cancel"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_cancel(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_process_response"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_withreplykey_process_response"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_process_response(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_wellknownerror_code"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_wellknownerror_code"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_wellknownerror_code(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_address"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_address"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjuri_address(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_as_string"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjuri_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_address"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_address"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_address(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_amount_sats"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_amount_sats"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_amount_sats(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_as_string"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_label"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_label"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_label(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_uri_message"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_uri_message"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_uri_message(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_url_as_string"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_url_as_string"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_url_as_string(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_method_url_query"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_method_url_query"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_method_url_query(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_inputpair_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_inputpair_new"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_inputpair_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_uri_parse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_uri_parse"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_uri_parse(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_payjoin_ffi_checksum_constructor_url_parse"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_payjoin_ffi_checksum_constructor_url_parse"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_payjoin_ffi_checksum_constructor_url_parse(rt, thisVal, args, count);
        }
    );
    props["ubrn_ffi_payjoin_ffi_uniffi_contract_version"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_ffi_payjoin_ffi_uniffi_contract_version"),
        0,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_ffi_payjoin_ffi_uniffi_contract_version(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_implementationerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_implementationerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_implementationerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_serdejsonerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_serdejsonerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_serdejsonerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_clientresponse_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_clientresponse_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_clientresponse_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_ohttpkeys_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_ohttpkeys_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_ohttpkeys_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_ohttperror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_ohttperror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_ohttperror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_assumeinteractivetransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_assumeinteractivetransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_assumeinteractivetransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_canbroadcast_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_canbroadcast_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_canbroadcast_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_canceltransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_canceltransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_canceltransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_hasreplyableerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_hasreplyableerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_hasreplyableerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_hasreplyableerrortransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_hasreplyableerrortransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_hasreplyableerrortransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_initialreceivetransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_initialreceivetransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_initialreceivetransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_initialized_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_initialized_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_initialized_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_initializedtransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_initializedtransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_initializedtransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_inputpair_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_inputpair_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_inputpair_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_isinputowned_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_isinputowned_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_isinputowned_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_isoutputknown_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_isoutputknown_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_isoutputknown_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_isscriptowned_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_isscriptowned_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_isscriptowned_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_jsonreceiversessionpersister_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_jsonreceiversessionpersister_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_jsonreceiversessionpersister_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_jsonreceiversessionpersisterasync_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_jsonreceiversessionpersisterasync_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_jsonreceiversessionpersisterasync_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_maybeinputsowned_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_maybeinputsowned_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_maybeinputsowned_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_maybeinputsownedtransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_maybeinputsownedtransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_maybeinputsownedtransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_maybeinputsseen_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_maybeinputsseen_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_maybeinputsseen_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_maybeinputsseentransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_maybeinputsseentransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_maybeinputsseentransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_monitor_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_monitor_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_monitor_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_monitortransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_monitortransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_monitortransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_outputsunknown_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_outputsunknown_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_outputsunknown_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_outputsunknowntransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_outputsunknowntransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_outputsunknowntransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_payjoinproposal_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_payjoinproposal_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_payjoinproposal_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_payjoinproposaltransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_payjoinproposaltransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_payjoinproposaltransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pendingfallbacktransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pendingfallbacktransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pendingfallbacktransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_processpsbt_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_processpsbt_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_processpsbt_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_provisionalproposal_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_provisionalproposal_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_provisionalproposal_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_provisionalproposaltransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_provisionalproposaltransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_provisionalproposaltransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiverbuilder_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiverbuilder_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiverbuilder_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiverpendingfallback_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiverpendingfallback_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiverpendingfallback_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiversessionevent_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiversessionevent_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiversessionevent_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiversessionhistory_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiversessionhistory_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiversessionhistory_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiversessionoutcome_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiversessionoutcome_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiversessionoutcome_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiversessionstatus_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiversessionstatus_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiversessionstatus_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_replayresult_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_replayresult_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_replayresult_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_transactionfinder_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_transactionfinder_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_transactionfinder_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_uncheckedoriginalpayload_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_uncheckedoriginalpayload_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_uncheckedoriginalpayload_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_uncheckedoriginalpayloadtransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_uncheckedoriginalpayloadtransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_uncheckedoriginalpayloadtransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsfeerange_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsfeerange_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsfeerange_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsfeerangetransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsfeerangetransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsfeerangetransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsinputs_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsinputs_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsinputs_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsinputstransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsinputstransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsinputstransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsoutputs_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsoutputs_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsoutputs_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wantsoutputstransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wantsoutputstransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wantsoutputstransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_addressparseerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_addressparseerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_addressparseerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_coinselectionerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_coinselectionerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_coinselectionerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_inputcontributionerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_inputcontributionerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_inputcontributionerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_jsonreply_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_jsonreply_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_jsonreply_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_outputsubstitutionprotocolerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_outputsubstitutionprotocolerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_outputsubstitutionprotocolerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_protocolerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_protocolerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_protocolerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_psbtinputerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_psbtinputerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_psbtinputerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receivercreaterequesterror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receivercreaterequesterror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receivercreaterequesterror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_receiverreplayerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_receiverreplayerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_receiverreplayerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sessionerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sessionerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sessionerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_broadcastedtransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_broadcastedtransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_broadcastedtransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_initialsendtransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_initialsendtransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_initialsendtransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_jsonsendersessionpersister_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_jsonsendersessionpersister_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_jsonsendersessionpersister_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_jsonsendersessionpersisterasync_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_jsonsendersessionpersisterasync_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_jsonsendersessionpersisterasync_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pjparam_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pjparam_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pjparam_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pollingforproposal_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pollingforproposal_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pollingforproposal_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pollingforproposaltransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pollingforproposaltransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pollingforproposaltransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_senderbuilder_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_senderbuilder_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_senderbuilder_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sendercanceltransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sendercanceltransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sendercanceltransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_senderpendingfallback_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_senderpendingfallback_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_senderpendingfallback_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_senderreplayresult_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_senderreplayresult_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_senderreplayresult_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sendersessionevent_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sendersessionevent_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sendersessionevent_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sendersessionhistory_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sendersessionhistory_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sendersessionhistory_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sendersessionoutcome_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sendersessionoutcome_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sendersessionoutcome_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_sendersessionstatus_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_sendersessionstatus_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_sendersessionstatus_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_v1context_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_v1context_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_v1context_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_withreplykey_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_withreplykey_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_withreplykey_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_withreplykeytransition_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_withreplykeytransition_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_withreplykeytransition_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_createrequesterror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_createrequesterror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_createrequesterror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_decapsulationerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_decapsulationerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_decapsulationerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_senderbuildererror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_senderbuildererror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_senderbuildererror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_senderreplayerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_senderreplayerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_senderreplayerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_validationerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_validationerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_validationerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_wellknownerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_wellknownerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_wellknownerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pjuri_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pjuri_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pjuri_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_uri_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_uri_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_uri_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_url_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_url_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_url_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_feerateerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_feerateerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_feerateerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_intourlerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_intourlerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_intourlerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_pjnotsupported_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_pjnotsupported_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_pjnotsupported_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_uriparseerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_uriparseerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_uriparseerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );
    props["ubrn_uniffi_internal_fn_method_urlparseerror_ffi__bless_pointer"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "ubrn_uniffi_internal_fn_method_urlparseerror_ffi__bless_pointer"),
        1,
        [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            return this->cpp_uniffi_internal_fn_method_urlparseerror_ffi__bless_pointer(rt, thisVal, args, count);
        }
    );

    // `rustbuffer_alloc(n)` -> Uint8Array view over Rust-owned memory of capacity `n`.
    // `rustbuffer_free(view)` -> hands the underlying (ptr, capacity) back to the
    // crate's `rustbuffer_free`. Together they let JS allocate buffers that the
    // codegen-emitted lowering path can fill in place and ship to Rust without copying.
    props["rustbuffer_alloc"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "rustbuffer_alloc"),
        1,
        [](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            if (count < 1 || !args[0].isNumber()) {
                throw jsi::JSError(rt, "rustbuffer_alloc expected a number argument");
            }
            double size = args[0].asNumber();
            if (size < 0) {
                throw jsi::JSError(rt, "rustbuffer_alloc: size must be non-negative");
            }
            if (size > INT32_MAX) {
                throw jsi::JSError(rt, "rustbuffer_alloc: size exceeds INT32_MAX");
            }
            auto rb = uniffi::payjoin::Bridging<RustBuffer>::rustbuffer_alloc(static_cast<int32_t>(size));
            if (rb.data == nullptr) {
                throw jsi::JSError(rt, "rustbuffer_alloc failed: alloc returned null");
            }
            // Non-owning view over Rust-allocated memory; CMutableBuffer's destructor
            // is the default and does not free `rb.data`. JS must call rustbuffer_free
            // explicitly before dropping the reference.
            auto payload = std::make_shared<uniffi_jsi::CMutableBuffer>(
                rb.data, static_cast<size_t>(rb.capacity));
            // Wrap as Uint8Array so JS can index/assign bytes directly.
            return jsi::Value(
                rt, uniffi_jsi::arraybufferToUint8Array(
                        rt, jsi::ArrayBuffer(rt, payload)));
        }
    );

    props["rustbuffer_free"] = jsi::Function::createFromHostFunction(
        rt,
        jsi::PropNameID::forAscii(rt, "rustbuffer_free"),
        1,
        [](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) -> jsi::Value {
            if (count < 1 || !args[0].isObject()) {
                throw jsi::JSError(rt, "rustbuffer_free expected a Uint8Array argument");
            }
            auto view = args[0].asObject(rt);
            auto byteLength =
                static_cast<size_t>(view.getProperty(rt, "byteLength").asNumber());
            // Empty views were never allocated by `rustbuffer_alloc`; nothing
            // to free. Bail out before reading buffer/byteOffset/capacity to
            // skip three JSI property traversals on the empty path.
            if (byteLength == 0) {
                return jsi::Value::undefined();
            }
            // Capacity resolution:
            //   * For a view from `rustbuffer_alloc(n)`, `byteLength == n == capacity`,
            //     and no `__ubrnRustCapacity` hint was set.
            //   * For a view from a lift-handoff, the codegen-emitted
            //     `Bridging<RustBuffer>::toJs` set `byteLength = len` and stashed
            //     the original `capacity` on `__ubrnRustCapacity` whenever
            //     `capacity != len`.
            // So: prefer the hint, fall back to byteLength.
            size_t capacity = byteLength;
            if (view.hasProperty(rt, uniffi_jsi::kUbrnRustCapacity)) {
                capacity = static_cast<size_t>(
                    view.getProperty(rt, uniffi_jsi::kUbrnRustCapacity).asNumber());
            }
            auto buffer = view.getPropertyAsObject(rt, "buffer").getArrayBuffer(rt);
            auto byteOffset =
                static_cast<size_t>(view.getProperty(rt, "byteOffset").asNumber());
            // Honour byteOffset for safety (defensive; currently always 0).
            RustBuffer rb {
                .capacity = static_cast<uint64_t>(capacity),
                .len = 0,
                .data = buffer.data(rt) + byteOffset,
            };
            uniffi::payjoin::Bridging<RustBuffer>::rustbuffer_free(rb);
            return jsi::Value::undefined();
        }
    );
}

void NativePayjoin::registerModule(jsi::Runtime &rt, std::shared_ptr<react::CallInvoker> callInvoker) {
    auto invoker = std::make_shared<uniffi_runtime::UniffiCallInvoker>(callInvoker);
    auto tm = std::make_shared<NativePayjoin>(rt, invoker);
    auto obj = rt.global().createFromHostObject(rt, tm);
    rt.global().setProperty(rt, "NativePayjoin", obj);
}

void NativePayjoin::unregisterModule(jsi::Runtime &rt) {
    uniffi::payjoin::registry::clearRegistry();
}

jsi::Value NativePayjoin::get(jsi::Runtime& rt, const jsi::PropNameID& name) {
    try {
        return jsi::Value(rt, props.at(name.utf8(rt)));
    }
    catch (std::out_of_range &) {
        return jsi::Value::undefined();
    }
}

std::vector<jsi::PropNameID> NativePayjoin::getPropertyNames(jsi::Runtime& rt) {
    std::vector<jsi::PropNameID> rval;
    for (auto& [key, value] : props) {
        rval.push_back(jsi::PropNameID::forUtf8(rt, key));
    }
    return rval;
}

void NativePayjoin::set(jsi::Runtime& rt, const jsi::PropNameID& name, const jsi::Value& value) {
    props.insert_or_assign(name.utf8(rt), &value);
}

NativePayjoin::~NativePayjoin() {
    // Cleanup for callback function RustFutureContinuationCallback
uniffi::payjoin::cb::rustfuturecontinuationcallback::cleanup();
    // Cleanup for callback function ForeignFutureDroppedCallback
uniffi::payjoin::cb::foreignfuturedroppedcallback::cleanup();
    // Cleanup for "free" callback function CallbackInterfaceFree
uniffi::payjoin::st::vtablecallbackinterfacecanbroadcast::vtablecallbackinterfacecanbroadcast::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfaceisinputowned::vtablecallbackinterfaceisinputowned::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfaceisoutputknown::vtablecallbackinterfaceisoutputknown::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfaceisscriptowned::vtablecallbackinterfaceisscriptowned::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersister::vtablecallbackinterfacejsonreceiversessionpersister::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfacejsonreceiversessionpersisterasync::vtablecallbackinterfacejsonreceiversessionpersisterasync::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfaceprocesspsbt::vtablecallbackinterfaceprocesspsbt::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfacetransactionfinder::vtablecallbackinterfacetransactionfinder::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersister::vtablecallbackinterfacejsonsendersessionpersister::free::cleanup();uniffi::payjoin::st::vtablecallbackinterfacejsonsendersessionpersisterasync::vtablecallbackinterfacejsonsendersessionpersisterasync::free::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacecanbroadcast::cleanup();
uniffi::payjoin::cb::callbackinterfacecanbroadcastmethod0::vtablecallbackinterfacecanbroadcast::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisinputowned::cleanup();
uniffi::payjoin::cb::callbackinterfaceisinputownedmethod0::vtablecallbackinterfaceisinputowned::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisoutputknown::cleanup();
uniffi::payjoin::cb::callbackinterfaceisoutputknownmethod0::vtablecallbackinterfaceisoutputknown::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceisscriptowned::cleanup();
uniffi::payjoin::cb::callbackinterfaceisscriptownedmethod0::vtablecallbackinterfaceisscriptowned::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod0::vtablecallbackinterfacejsonreceiversessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod1::vtablecallbackinterfacejsonreceiversessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersistermethod2::vtablecallbackinterfacejsonreceiversessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonreceiversessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod0::vtablecallbackinterfacejsonreceiversessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod1::vtablecallbackinterfacejsonreceiversessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonreceiversessionpersisterasyncmethod2::vtablecallbackinterfacejsonreceiversessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfaceprocesspsbt::cleanup();
uniffi::payjoin::cb::callbackinterfaceprocesspsbtmethod0::vtablecallbackinterfaceprocesspsbt::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacetransactionfinder::cleanup();
uniffi::payjoin::cb::callbackinterfacetransactionfindermethod0::vtablecallbackinterfacetransactionfinder::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod0::vtablecallbackinterfacejsonsendersessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod1::vtablecallbackinterfacejsonsendersessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersistermethod2::vtablecallbackinterfacejsonsendersessionpersister::cleanup();
uniffi::payjoin::cb::callbackinterfaceclone::vtablecallbackinterfacejsonsendersessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod0::vtablecallbackinterfacejsonsendersessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod1::vtablecallbackinterfacejsonsendersessionpersisterasync::cleanup();
uniffi::payjoin::cb::callbackinterfacejsonsendersessionpersisterasyncmethod2::vtablecallbackinterfacejsonsendersessionpersisterasync::cleanup();
}

// Utility functions for serialization/deserialization of strings.
jsi::Value NativePayjoin::cpp_uniffi_internal_fn_func_ffi__string_to_byte_length(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    return uniffi_jsi::Bridging<std::string>::string_to_bytelength(rt, args[0]);
}

jsi::Value NativePayjoin::cpp_uniffi_internal_fn_func_ffi__string_to_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    return uniffi_jsi::Bridging<std::string>::string_to_buffer(rt, args[0]);
}

jsi::Value NativePayjoin::cpp_uniffi_internal_fn_func_ffi__string_from_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    return uniffi_jsi::Bridging<std::string>::string_from_buffer(rt, args[0]);
}

jsi::Value NativePayjoin::cpp_uniffi_internal_fn_func_ffi__read_string_from_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    return uniffi_jsi::Bridging<std::string>::read_string_from_buffer(rt, args[0], args[1], args[2]);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_implementationerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_implementationerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_serdejsonerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_serdejsonerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_clientresponse_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_clientresponse(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_ohttpkeys_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_ohttpkeys(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_ohttperror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_ohttperror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_assumeinteractivetransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_assumeinteractivetransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_canbroadcast_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_canbroadcast(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_canceltransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_canceltransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_hasreplyableerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_hasreplyableerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_hasreplyableerrortransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_initialreceivetransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_initialreceivetransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_initialized_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_initialized(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_initializedtransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_initializedtransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_inputpair_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_inputpair(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_isinputowned_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_isinputowned(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_isoutputknown_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_isoutputknown(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_isscriptowned_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_isscriptowned(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_jsonreceiversessionpersister_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_jsonreceiversessionpersisterasync_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_maybeinputsowned_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_maybeinputsowned(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_maybeinputsownedtransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_maybeinputsseen_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_maybeinputsseen(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_maybeinputsseentransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_maybeinputsseentransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_monitor_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_monitor(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_monitortransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_monitortransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_outputsunknown_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_outputsunknown(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_outputsunknowntransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_outputsunknowntransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_payjoinproposal_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_payjoinproposal(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_payjoinproposaltransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_payjoinproposaltransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pendingfallbacktransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pendingfallbacktransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_processpsbt_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_processpsbt(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_provisionalproposal_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_provisionalproposal(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_provisionalproposaltransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_provisionalproposaltransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiverbuilder_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiverbuilder(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiverpendingfallback_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiverpendingfallback(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiversessionevent_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiversessionevent(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiversessionhistory_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiversessionhistory(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiversessionoutcome_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiversessionoutcome(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiversessionstatus_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiversessionstatus(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_replayresult_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_replayresult(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_transactionfinder_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_transactionfinder(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_uncheckedoriginalpayload_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_uncheckedoriginalpayloadtransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsfeerange_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsfeerange(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsfeerangetransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsfeerangetransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsinputs_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsinputs(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsinputstransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsinputstransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsoutputs_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsoutputs(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wantsoutputstransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wantsoutputstransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_addressparseerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_addressparseerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_coinselectionerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_coinselectionerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_inputcontributionerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_inputcontributionerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_jsonreply_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_jsonreply(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_outputsubstitutionprotocolerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_protocolerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_protocolerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_psbtinputerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_psbtinputerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receivercreaterequesterror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receivercreaterequesterror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_receiverreplayerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_receiverreplayerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sessionerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sessionerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_broadcastedtransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_broadcastedtransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_initialsendtransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_initialsendtransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_jsonsendersessionpersister_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_jsonsendersessionpersisterasync_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pjparam_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pjparam(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pollingforproposal_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pollingforproposal(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pollingforproposaltransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pollingforproposaltransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_senderbuilder_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_senderbuilder(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sendercanceltransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sendercanceltransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_senderpendingfallback_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_senderpendingfallback(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_senderreplayresult_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_senderreplayresult(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sendersessionevent_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sendersessionevent(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sendersessionhistory_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sendersessionhistory(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sendersessionoutcome_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sendersessionoutcome(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_sendersessionstatus_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_sendersessionstatus(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_v1context_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_v1context(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_withreplykey_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_withreplykey(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_withreplykeytransition_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_withreplykeytransition(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_createrequesterror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_createrequesterror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_decapsulationerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_decapsulationerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_senderbuildererror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_senderbuildererror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_senderreplayerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_senderreplayerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_validationerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_validationerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_wellknownerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_wellknownerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pjuri_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pjuri(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_uri_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_uri(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_url_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_url(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_feerateerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_feerateerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_intourlerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_intourlerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_pjnotsupported_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_pjnotsupported(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_uriparseerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_uriparseerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}jsi::Value NativePayjoin::cpp_uniffi_internal_fn_method_urlparseerror_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto pointer = uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[0]);
    auto static destructor = [](uint64_t p) {
        RustCallStatus status = {0};
        uniffi_payjoin_ffi_fn_free_urlparseerror(p, &status);
    };
    auto ptrObj = std::make_shared<uniffi_jsi::DestructibleObject>(pointer, destructor);
    auto obj = jsi::Object::createFromHostObject(rt, ptrObj);
    return jsi::Value(rt, obj);
}

// Methods calling directly into the uniffi generated C API of the Rust crate.
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_implementationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_implementationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_implementationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_implementationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_implementationerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_serdejsonerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_serdejsonerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_serdejsonerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_serdejsonerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_serdejsonerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_clientresponse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_clientresponse(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_clientresponse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_clientresponse(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_ohttpkeys(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_ohttpkeys(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_ohttpkeys(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_ohttpkeys(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_ohttpkeys_decode(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_ohttperror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_ohttperror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_ohttperror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_ohttperror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_ohttperror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_assumeinteractivetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_assumeinteractivetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_assumeinteractivetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_assumeinteractivetransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_canbroadcast(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_canbroadcast(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_canbroadcast(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_canbroadcast(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceCanBroadcast>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_canbroadcast(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceCanBroadcast",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_canbroadcast_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_canbroadcast_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_canceltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_canceltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_canceltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_canceltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_canceltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_canceltransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_canceltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_canceltransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_hasreplyableerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_hasreplyableerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_hasreplyableerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_hasreplyableerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_hasreplyableerror_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_hasreplyableerror_create_error_request(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_hasreplyableerror_process_error_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_hasreplyableerrortransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_hasreplyableerrortransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_hasreplyableerrortransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_initialreceivetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_initialreceivetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_initialreceivetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_initialreceivetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialreceivetransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_initialreceivetransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_initialized(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_initialized(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_initialized(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_initialized(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialized_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialized_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialized_create_poll_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialized_create_poll_request(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialized_pj_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialized_pj_uri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialized_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialized_process_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_initializedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_initializedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_initializedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_initializedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initializedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initializedtransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initializedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_initializedtransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_inputpair(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_inputpair(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_inputpair(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_inputpair(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_inputpair_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_inputpair_new(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_inputpair_outpoint(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_inputpair_outpoint(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_isinputowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_isinputowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_isinputowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_isinputowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceIsInputOwned>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_isinputowned(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceIsInputOwned",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_isinputowned_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_isinputowned_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_isoutputknown(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_isoutputknown(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_isoutputknown(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_isoutputknown(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceIsOutputKnown>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_isoutputknown(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceIsOutputKnown",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_isoutputknown_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_isoutputknown_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_isscriptowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_isscriptowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_isscriptowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_isscriptowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceIsScriptOwned>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_isscriptowned(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceIsScriptOwned",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_isscriptowned_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_isscriptowned_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersister(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersister(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceJsonReceiverSessionPersister>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersister(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceJsonReceiverSessionPersister",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_load(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersister_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_jsonreceiversessionpersisterasync(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_jsonreceiversessionpersisterasync(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_jsonreceiversessionpersisterasync(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceJsonReceiverSessionPersisterAsync",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_load(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonreceiversessionpersisterasync_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_maybeinputsowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_maybeinputsowned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_maybeinputsowned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsowned_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsowned_check_inputs_not_owned(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsowned_extract_tx_to_schedule_broadcast(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsowned_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_maybeinputsownedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_maybeinputsownedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsownedtransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsseen(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_maybeinputsseen(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_maybeinputsseen(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_maybeinputsseen(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsseen_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsseen_check_no_inputs_seen_before(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsseen_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_maybeinputsseentransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_maybeinputsseentransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_maybeinputsseentransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_maybeinputsseentransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_monitor(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_monitor(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_monitor(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_monitor(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_monitor_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_monitor_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_monitor_check_for_transaction(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_monitor_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_monitortransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_monitortransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_monitortransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_monitortransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_monitortransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_monitortransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_monitortransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_monitortransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_outputsunknown(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_outputsunknown(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_outputsunknown(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_outputsunknown(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsunknown_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsunknown_identify_receiver_outputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsunknown_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_outputsunknowntransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_outputsunknowntransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_outputsunknowntransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_outputsunknowntransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_outputsunknowntransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_payjoinproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_payjoinproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_payjoinproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_payjoinproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposal_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposal_create_post_request(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposal_process_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposal_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposal_psbt(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_payjoinproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_payjoinproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_payjoinproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_payjoinproposaltransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pendingfallbacktransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pendingfallbacktransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pendingfallbacktransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_pendingfallbacktransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_processpsbt(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_processpsbt(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_processpsbt(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_processpsbt(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceProcessPsbt>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_processpsbt(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceProcessPsbt",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_processpsbt_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_processpsbt_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_provisionalproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_provisionalproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_provisionalproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_provisionalproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposal_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposal_finalize_proposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposal_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposal_psbt_to_sign(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_provisionalproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_provisionalproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_provisionalproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_provisionalproposaltransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiverbuilder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiverbuilder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiverbuilder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiverbuilder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_receiverbuilder_new(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_build(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverbuilder_build(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverbuilder_with_amount(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverbuilder_with_expiration(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverbuilder_with_max_fee_rate(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiverpendingfallback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiverpendingfallback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiverpendingfallback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiverpendingfallback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverpendingfallback_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverpendingfallback_fallback_tx(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiversessionevent(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiversessionevent(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiversessionevent(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiversessionevent(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_receiversessionevent_from_json(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiversessionevent_to_json(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiversessionhistory(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiversessionhistory(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiversessionhistory(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiversessionhistory(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiversessionhistory_fallback_tx(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiversessionhistory_pj_uri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiversessionhistory_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiversessionhistory_status(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiversessionoutcome(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiversessionoutcome(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiversessionoutcome(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiversessionoutcome(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiversessionstatus(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiversessionstatus(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiversessionstatus(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiversessionstatus(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_replayresult(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_replayresult(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_replayresult(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_replayresult(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_replayresult_session_history(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_replayresult_session_history(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_replayresult_state(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_replayresult_state(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_transactionfinder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_transactionfinder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_transactionfinder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_transactionfinder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceTransactionFinder>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_transactionfinder(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceTransactionFinder",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_transactionfinder_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_transactionfinder_callback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayload(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayload(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_assume_interactive_receiver(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayload_check_broadcast_suitability(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_uncheckedoriginalpayloadtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_uncheckedoriginalpayloadtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_uncheckedoriginalpayloadtransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsfeerange(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsfeerange(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsfeerange(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsfeerange(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsfeerange_apply_fee_range(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsfeerange_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsfeerange_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsfeerangetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsfeerangetransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsfeerangetransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_wantsfeerangetransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsinputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsinputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsinputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsinputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputs_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputs_commit_inputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputs_contribute_inputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputs_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputs_try_preserving_privacy(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsinputstransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsinputstransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsinputstransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsinputstransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputstransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_wantsinputstransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsoutputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsoutputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsoutputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsoutputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_commit_outputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_output_substitution(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_proposal_txid_is_stable(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_replace_receiver_outputs(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputs_substitute_receiver_script(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wantsoutputstransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wantsoutputstransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wantsoutputstransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wantsoutputstransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_wantsoutputstransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_addressparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_addressparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_addressparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_addressparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_addressparseerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_coinselectionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_coinselectionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_coinselectionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_coinselectionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_coinselectionerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_inputcontributionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_inputcontributionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_inputcontributionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_inputcontributionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_inputcontributionerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_jsonreply(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_jsonreply(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_jsonreply(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_jsonreply(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_eq(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_jsonreply_uniffi_trait_eq_ne(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_outputsubstitutionprotocolerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_outputsubstitutionprotocolerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_outputsubstitutionprotocolerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_protocolerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_protocolerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_protocolerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_protocolerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_protocolerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_psbtinputerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_psbtinputerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_psbtinputerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_psbtinputerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_psbtinputerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receivercreaterequesterror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receivercreaterequesterror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receivercreaterequesterror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_is_expired(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receivercreaterequesterror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_receiverreplayerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_receiverreplayerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_receiverreplayerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_receiverreplayerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverreplayerror_is_expired(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_receiverreplayerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sessionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sessionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sessionerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sessionerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sessionerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_broadcastedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_broadcastedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_broadcastedtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_broadcastedtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_broadcastedtransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_broadcastedtransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_initialsendtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_initialsendtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_initialsendtransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_initialsendtransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialsendtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_initialsendtransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_initialsendtransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersister(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_jsonsendersessionpersister(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceJsonSenderSessionPersister>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersister(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceJsonSenderSessionPersister",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_load(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_method_jsonsendersessionpersister_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_jsonsendersessionpersisterasync(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_jsonsendersessionpersisterasync(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
    auto vtableInstance =
        uniffi::payjoin::Bridging<UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync>::fromJs(
            rt,
            callInvoker,
            args[0]
        );

    std::lock_guard<std::mutex> lock(uniffi::payjoin::registry::vtableMutex);
    uniffi_payjoin_ffi_fn_init_callback_vtable_jsonsendersessionpersisterasync(
        uniffi::payjoin::registry::putTable(
            "UniffiVTableCallbackInterfaceJsonSenderSessionPersisterAsync",
            vtableInstance
        )
    );
    return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_load(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_jsonsendersessionpersisterasync_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pjparam(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pjparam(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pjparam(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pjparam(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjparam_receiver_pubkey(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pollingforproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pollingforproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pollingforproposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pollingforproposal(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pollingforproposal_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pollingforproposal_create_poll_request(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pollingforproposal_process_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pollingforproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pollingforproposaltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pollingforproposaltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_pollingforproposaltransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_senderbuilder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_senderbuilder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_senderbuilder(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_senderbuilder(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_senderbuilder_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_senderbuilder_new(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuilder_always_disable_output_substitution(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuilder_build_non_incentivizing(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuilder_build_recommended(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuilder_build_with_additional_fee(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[2]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[3]), uniffi_jsi::Bridging<int8_t>::fromJs(rt, callInvoker, args[4]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sendercanceltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sendercanceltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sendercanceltransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sendercanceltransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendercanceltransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_sendercanceltransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_senderpendingfallback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_senderpendingfallback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_senderpendingfallback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_senderpendingfallback(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderpendingfallback_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderpendingfallback_close(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderpendingfallback_fallback_tx(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_senderreplayresult(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_senderreplayresult(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_senderreplayresult(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_senderreplayresult(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderreplayresult_session_history(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderreplayresult_state(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderreplayresult_state(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sendersessionevent(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sendersessionevent(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sendersessionevent(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sendersessionevent(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_sendersessionevent_from_json(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionevent_to_json(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sendersessionhistory(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sendersessionhistory(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sendersessionhistory(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sendersessionhistory(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionhistory_fallback_tx(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionhistory_pj_param(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionhistory_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionhistory_status(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sendersessionoutcome(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sendersessionoutcome(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sendersessionoutcome(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sendersessionoutcome(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_aborted(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionoutcome_is_success(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_sendersessionoutcome_success_psbt_base64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_sendersessionstatus(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_sendersessionstatus(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_sendersessionstatus(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_sendersessionstatus(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_v1context(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_v1context(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_v1context(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_v1context(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_v1context_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_v1context_process_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_withreplykey(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_withreplykey(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_withreplykey(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_withreplykey(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_withreplykey_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_withreplykey_cancel(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_withreplykey_create_v2_post_request(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_withreplykey_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_withreplykey_process_response(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_withreplykeytransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_withreplykeytransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_withreplykeytransition(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_withreplykeytransition(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_withreplykeytransition_save(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_method_withreplykeytransition_save_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_createrequesterror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_createrequesterror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_createrequesterror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_createrequesterror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_createrequesterror_is_expired(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_createrequesterror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_decapsulationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_decapsulationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_decapsulationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_decapsulationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_decapsulationerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_senderbuildererror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_senderbuildererror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_senderbuildererror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_senderbuildererror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_eq(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderbuildererror_uniffi_trait_eq_ne(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_senderreplayerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_senderreplayerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_senderreplayerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_senderreplayerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderreplayerror_is_expired(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_senderreplayerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_validationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_validationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_validationerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_validationerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_validationerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_wellknownerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_wellknownerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_wellknownerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_wellknownerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_code(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wellknownerror_code(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_wellknownerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pjuri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pjuri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pjuri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pjuri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjuri_address(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjuri_address(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjuri_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjuri_amount_sats(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjuri_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjuri_as_string(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjuri_pj_endpoint(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjuri_set_amount_sats(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging<uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_uri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_uri(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_uri_parse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_uri_parse(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_address(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_address(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_amount_sats(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_as_string(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_check_pj_supported(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_check_pj_supported(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_label(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_label(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uri_message(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uri_message(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_url(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_url(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_url(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_url(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_constructor_url_parse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_constructor_url_parse(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_url_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_url_as_string(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_url_query(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_url_query(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_feerateerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_feerateerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_feerateerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_feerateerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_feerateerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_intourlerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_intourlerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_intourlerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_intourlerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_intourlerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_pjnotsupported(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_pjnotsupported(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_pjnotsupported(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_pjnotsupported(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_eq(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_pjnotsupported_uniffi_trait_eq_ne(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_uriparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_uriparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_uriparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_uriparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_uriparseerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_clone_urlparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_clone_urlparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_free_urlparseerror(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        uniffi_payjoin_ffi_fn_free_urlparseerror(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_debug(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_method_urlparseerror_uniffi_trait_display(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_func_fetch_ohttp_keys(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_func_merge_finalized_proposal_inputs(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_receiver_manual_contribute(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_func_receiver_manual_contribute(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging<int8_t>::fromJs(rt, callInvoker, args[2]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[3]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[4]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[5]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[6]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_receiver_manual_finalize(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_func_receiver_manual_finalize(uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<RustBuffer>::fromJs(rt, callInvoker, args[1]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_func_replay_receiver_event_log(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_func_replay_receiver_event_log_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_replay_sender_event_log(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = uniffi_payjoin_ffi_fn_func_replay_sender_event_log(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_fn_func_replay_sender_event_log_async(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return uniffi_jsi::Bridging</*handle*/ uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_u8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_u8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_u8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_u8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<uint8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_i8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_i8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_i8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_i8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_i8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_i8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_i8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_i8(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int8_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_u16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_u16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_u16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_u16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_u16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_u16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_u16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_u16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_i16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_i16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_i16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_i16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_i16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_i16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_i16(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_i16(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_u32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_u32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_u32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_u32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_u32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_u32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_u32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_u32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<uint32_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_i32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_i32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_i32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_i32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_i32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_i32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_i32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_i32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int32_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_u64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_u64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_u64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_u64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_u64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_u64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_u64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_u64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<uint64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_i64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_i64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_i64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_i64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_i64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_i64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_i64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_i64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<int64_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_f32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_f32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_f32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_f32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_f32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_f32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_f32(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_f32(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<float>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_f64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_f64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_f64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_f64(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi_jsi::Bridging<double>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_rust_buffer(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_rust_buffer(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_rust_buffer(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        auto value = ffi_payjoin_ffi_rust_future_complete_rust_buffer(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return uniffi::payjoin::Bridging<RustBuffer>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_poll_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_poll_void(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), uniffi::payjoin::Bridging<UniffiRustFutureContinuationCallback>::fromJs(rt, callInvoker, args[1]), uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[2])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_cancel_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_cancel_void(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_free_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        ffi_payjoin_ffi_rust_future_free_void(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0])
        );

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_rust_future_complete_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        RustCallStatus status = uniffi::payjoin::Bridging<RustCallStatus>::rustSuccess(rt);
        ffi_payjoin_ffi_rust_future_complete_void(uniffi_jsi::Bridging</*handle*/ uint64_t>::fromJs(rt, callInvoker, args[0]), 
            &status
        );
        uniffi::payjoin::Bridging<RustCallStatus>::copyIntoJs(rt, callInvoker, status, args[count - 1]);

        
        return jsi::Value::undefined();
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_fetch_ohttp_keys(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_merge_finalized_proposal_inputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_receiver_manual_contribute(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_receiver_manual_finalize(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_replay_receiver_event_log_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_replay_sender_event_log(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_func_replay_sender_event_log_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_assumeinteractivetransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_canbroadcast_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_canbroadcast_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_canceltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_canceltransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_canceltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_canceltransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_hasreplyableerror_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_hasreplyableerror_create_error_request(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_hasreplyableerror_process_error_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_hasreplyableerrortransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialreceivetransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialized_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialized_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialized_create_poll_request(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialized_pj_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialized_pj_uri(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialized_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialized_process_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initializedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initializedtransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initializedtransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_inputpair_outpoint(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_inputpair_outpoint(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_isinputowned_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_isinputowned_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_isoutputknown_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_isoutputknown_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_isscriptowned_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_isscriptowned_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_load(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersister_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_load(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonreceiversessionpersisterasync_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsowned_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsowned_check_inputs_not_owned(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsowned_extract_tx_to_schedule_broadcast(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsowned_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsownedtransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsseen_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsseen_check_no_inputs_seen_before(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsseen_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_maybeinputsseentransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_monitor_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_monitor_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_monitor_check_for_transaction(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_monitor_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_monitortransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_monitortransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_monitortransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_monitortransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_outputsunknown_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_outputsunknown_identify_receiver_outputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_outputsunknown_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_outputsunknowntransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposal_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposal_create_post_request(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposal_process_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposal_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposal_psbt(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_payjoinproposaltransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pendingfallbacktransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_processpsbt_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_processpsbt_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposal_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposal_finalize_proposal(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposal_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposal_psbt_to_sign(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_provisionalproposaltransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_build(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverbuilder_build(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_amount(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_expiration(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverbuilder_with_max_fee_rate(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverpendingfallback_fallback_tx(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiversessionevent_to_json(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiversessionhistory_fallback_tx(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiversessionhistory_pj_uri(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiversessionhistory_status(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_replayresult_session_history(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_replayresult_session_history(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_replayresult_state(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_replayresult_state(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_transactionfinder_callback(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_transactionfinder_callback(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_assume_interactive_receiver(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayload_check_broadcast_suitability(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uncheckedoriginalpayloadtransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsfeerange_apply_fee_range(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsfeerange_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsfeerange_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsfeerangetransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputs_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputs_commit_inputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputs_contribute_inputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputs_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputs_try_preserving_privacy(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsinputstransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_commit_outputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_output_substitution(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_proposal_txid_is_stable(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_replace_receiver_outputs(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputs_substitute_receiver_script(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wantsoutputstransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receivercreaterequesterror_is_expired(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_receiverreplayerror_is_expired(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_broadcastedtransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialsendtransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_initialsendtransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_load(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersister_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_load(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_jsonsendersessionpersisterasync_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjparam_receiver_pubkey(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pollingforproposal_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pollingforproposal_create_poll_request(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pollingforproposal_process_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pollingforproposaltransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderbuilder_always_disable_output_substitution(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderbuilder_build_non_incentivizing(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderbuilder_build_recommended(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderbuilder_build_with_additional_fee(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendercanceltransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderpendingfallback_close(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderpendingfallback_fallback_tx(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderreplayresult_session_history(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderreplayresult_state(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderreplayresult_state(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionevent_to_json(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionhistory_fallback_tx(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionhistory_pj_param(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionhistory_status(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_aborted(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_is_success(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_sendersessionoutcome_success_psbt_base64(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_v1context_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_v1context_process_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_cancel(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_withreplykey_cancel(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_withreplykey_create_v2_post_request(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_withreplykey_process_response(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_withreplykey_process_response(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_withreplykeytransition_save_async(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_createrequesterror_is_expired(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_senderreplayerror_is_expired(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_wellknownerror_code(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_wellknownerror_code(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjuri_address(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjuri_address(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjuri_amount_sats(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjuri_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjuri_as_string(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjuri_pj_endpoint(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_pjuri_set_amount_sats(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_address(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_address(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_amount_sats(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_amount_sats(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_as_string(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_check_pj_supported(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_label(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_label(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_uri_message(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_uri_message(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_url_as_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_url_as_string(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_method_url_query(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_method_url_query(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_ohttpkeys_decode(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_inputpair_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_inputpair_new(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_receiverbuilder_new(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_receiversessionevent_from_json(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_senderbuilder_new(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_sendersessionevent_from_json(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_uri_parse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_uri_parse(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_uniffi_payjoin_ffi_checksum_constructor_url_parse(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = uniffi_payjoin_ffi_checksum_constructor_url_parse(
        );

        
        return uniffi_jsi::Bridging<uint16_t>::toJs(rt, callInvoker, value);
}
jsi::Value NativePayjoin::cpp_ffi_payjoin_ffi_uniffi_contract_version(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
        auto value = ffi_payjoin_ffi_uniffi_contract_version(
        );

        
        return uniffi_jsi::Bridging<uint32_t>::toJs(rt, callInvoker, value);
}