Starting to look like something that might work...
authorMatt Corallo <git@bluematt.me>
Thu, 27 Aug 2020 20:17:40 +0000 (16:17 -0400)
committerMatt Corallo <git@bluematt.me>
Thu, 27 Aug 2020 20:18:43 +0000 (16:18 -0400)
genbindings.py
genbindings.sh
pom.xml
src/main/java/org/ldk/bindings.java [deleted file]
src/main/java/org/ldk/impl/bindings.java [new file with mode: 0644]
src/main/jni/bindings.c
src/main/jni/org_ldk_bindings.h [deleted file]
src/main/jni/org_ldk_impl_bindings.h [new file with mode: 0644]

index a867f55830efb77765d54a8ff75b350923c627ac..350ccb6398af9f5ded3e9034889c4a3a7dba89b8 100755 (executable)
@@ -6,9 +6,11 @@ if len(sys.argv) != 4:
     sys.exit(1)
 
 with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.argv[3], "w") as out_c:
+    opaque_structs = set()
+
     var_is_arr_regex = re.compile("\(\*([A-za-z_]*)\)\[([0-9]*)\]")
     var_ty_regex = re.compile("([A-za-z_0-9]*)(.*)")
-    def map_type(fn_arg, print_void, ret_arr_len):
+    def map_type(fn_arg, print_void, ret_arr_len, is_free):
         fn_arg = fn_arg.strip()
         if fn_arg.startswith("MUST_USE_RES "):
             fn_arg = fn_arg[13:]
@@ -66,7 +68,7 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
             return ("unsigned char " + arr_name + "_arr[" + arr_len + "];\n" +
                     "(*_env)->GetByteArrayRegion (_env, """ + arr_name + ", 0, " + arr_len + ", " + arr_name + "_arr);\n" +
                     "unsigned char (*""" + arr_name + "_ref)[" + arr_len + "] = &" + arr_name + "_arr;",
-                (c_ty + "Array " + arr_name + "_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0\n" +
+                (c_ty + "Array " + arr_name + "_arr = (*_env)->NewByteArray(_env, " + arr_len + ");\n" +
                     "(*_env)->SetByteArrayRegion(_env, " + arr_name + "_arr, 0, " + arr_len + ", *",
                     ");\nreturn ret_arr;"),
                 arr_name + "_ref")
@@ -76,9 +78,13 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
             out_c.write(" " + no_ptr.strip())
             if is_ptr_to_obj is not None:
                 if no_ptr == fn_arg:
-                    return (is_ptr_to_obj + " " + no_ptr.strip() + "_conv = *(" + is_ptr_to_obj + "*)" + no_ptr.strip() + ";",
+                    base_conv = is_ptr_to_obj + " " + no_ptr.strip() + "_conv = *(" + is_ptr_to_obj + "*)" + no_ptr.strip() + ";\nfree((void*)" + no_ptr.strip() + ");";
+                    if is_ptr_to_obj in opaque_structs:
+                        return (base_conv + "\n" + no_ptr.strip() + "_conv._underlying_ref = false;",
                             "XXX2", no_ptr.strip() + "_conv")
+                    return (base_conv, "XXX2", no_ptr.strip() + "_conv")
                 else:
+                    assert(not is_free)
                     return (is_ptr_to_obj + "* " + no_ptr.strip() + "_conv = (" + is_ptr_to_obj + "*)" + no_ptr.strip() + ";",
                             "XXX2", no_ptr.strip() + "_conv")
             elif no_ptr != fn_arg:
@@ -90,38 +96,39 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
             out_java.write(" arg")
             out_c.write(" arg")
             if is_ptr_to_obj is not None:
-                return (is_ptr_to_obj + " arg_conv = *(" + is_ptr_to_obj + "*)arg;", "XXX2", "arg_conv")
+                assert(not is_free or is_ptr_to_obj not in opaque_structs);
+                return (is_ptr_to_obj + " arg_conv = *(" + is_ptr_to_obj + "*)arg;\nfree((void*)arg);", "XXX2", "arg_conv")
             else:
+                assert(not is_free)
                 return (None, "XXX6", "arg")
         else:
             # We don't have a parameter name, and don't want one (cause we're returning)
             if is_ptr_to_obj is not None:
                 if no_ptr == fn_arg:
-                    return (None, (is_ptr_to_obj + "* ret = malloc(sizeof(" + is_ptr_to_obj + "));\n*ret = ", ";\nreturn (long)ret;"), None)
+                    if is_ptr_to_obj in opaque_structs:
+                        # If we're returning a newly-allocated struct, we don't want Rust to ever
+                        # free, instead relying on the Java GC to lose the ref. We undo this in
+                        # any _free function.
+                        # To avoid any issues, we first assert that the incoming object is non-ref.
+                        return (None, (is_ptr_to_obj + "* ret = malloc(sizeof(" + is_ptr_to_obj + "));\n*ret = ", ";\nassert(!ret->_underlying_ref);\nret->_underlying_ref = true;\nreturn (long)ret;"), None)
+                    else:
+                        return (None, (is_ptr_to_obj + "* ret = malloc(sizeof(" + is_ptr_to_obj + "));\n*ret = ", ";\nreturn (long)ret;"), None)
                 else:
                     return (None, ("return (long) ", ";"), None)
             else:
                 return (None, None, None)
 
-    def map_fn_args(fn_args, f):
-        for idx, arg in enumerate(fn_args.split(',')):
-            if idx != 0:
-                out_java.write(", ")
-            if arg != "void":
-                out_c.write(", ")
-            map_type(arg, False)
-
     def map_fn(re_match, ret_arr_len):
         out_java.write("\t/// " + line)
         out_java.write("\tpublic static native ")
         out_c.write("JNIEXPORT ")
 
-        _, ret_conv, _ = map_type(re_match.group(1), True, ret_arr_len)
+        _, ret_conv, _ = map_type(re_match.group(1), True, ret_arr_len, False)
         if ret_conv is not None:
             ret_conv_pfx, ret_conv_sfx = ret_conv
 
         out_java.write(" " + re_match.group(2) + "(")
-        out_c.write(" JNICALL " + re_match.group(2).replace('_', '_1') + "(JNIEnv * _env, jclass _b")
+        out_c.write(" JNICALL Java_org_ldk_impl_bindings_" + re_match.group(2).replace('_', '_1') + "(JNIEnv * _env, jclass _b")
 
         arg_names = []
         for idx, arg in enumerate(re_match.group(3).split(',')):
@@ -129,7 +136,7 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
                 out_java.write(", ")
             if arg != "void":
                 out_c.write(", ")
-            arg_names.append(map_type(arg, False, None))
+            arg_names.append(map_type(arg, False, None, re_match.group(2).endswith("_free")))
 
         out_java.write(");\n")
         out_c.write(") {\n")
@@ -156,7 +163,7 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
             out_c.write(";")
         out_c.write("\n}\n\n")
 
-    out_java.write("""package org.ldk;
+    out_java.write("""package org.ldk.impl;
 
 public class bindings {
        static {
@@ -164,9 +171,11 @@ public class bindings {
        }
 
 """)
-    out_c.write("#include \"org_ldk_bindings.h\"\n")
-    out_c.write("#include <rust_types.h>\n\n")
-    out_c.write("#include <lightning.h>\n\n")
+    out_c.write("#include \"org_ldk_impl_bindings.h\"\n")
+    out_c.write("#include <rust_types.h>\n")
+    out_c.write("#include <lightning.h>\n")
+    out_c.write("#include <assert.h>\n\n")
+    out_c.write("#include <string.h>\n\n")
 
     in_block_comment = False
     in_block_enum = False
@@ -178,6 +187,14 @@ public class bindings {
     reg_fn_regex = re.compile("([A-Za-z_0-9\* ]* \*?)([a-zA-Z_0-9]*)\((.*)\);$")
     const_val_regex = re.compile("^extern const ([A-Za-z_0-9]*) ([A-Za-z_0-9]*);$")
 
+    line_indicates_opaque_regex = re.compile("^   bool _underlying_ref;$")
+    line_indicates_trait_regex = re.compile("^   ([A-Za-z_0-9]* \*?)\(\*([A-Za-z_0-9]*)\)\((const )?void \*this_arg.*\);$")
+    assert(line_indicates_trait_regex.match("   uintptr_t (*send_data)(void *this_arg, LDKu8slice data, bool resume_read);"))
+    assert(line_indicates_trait_regex.match("   LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);"))
+    assert(line_indicates_trait_regex.match("   void *(*clone)(const void *this_arg);"))
+    struct_name_regex = re.compile("^typedef struct (MUST_USE_STRUCT )?(LDK[A-Za-z_0-9]*) {$")
+    assert(struct_name_regex.match("typedef struct LDKCVecTempl_u8 {"))
+
     for line in in_h:
         if in_block_comment:
             #out_java.write("\t" + line)
@@ -187,7 +204,11 @@ public class bindings {
             cur_block_struct  = cur_block_struct + line
             if line.startswith("} "):
                 field_lines = []
+                struct_name = None
                 struct_lines = cur_block_struct.split("\n")
+                is_opaque = False
+                trait_fn_lines = []
+
                 for idx, struct_line in enumerate(struct_lines):
                     if struct_line.strip().startswith("/*"):
                         in_block_comment = True
@@ -195,8 +216,78 @@ public class bindings {
                         if struct_line.endswith("*/"):
                             in_block_comment = False
                     else:
+                        struct_name_match = struct_name_regex.match(struct_line)
+                        if struct_name_match is not None:
+                            struct_name = struct_name_match.group(2)
+                        if line_indicates_opaque_regex.match(struct_line):
+                            is_opaque = True
+                        trait_fn_match = line_indicates_trait_regex.match(struct_line)
+                        if trait_fn_match is not None:
+                            trait_fn_lines.append(trait_fn_match)
                         field_lines.append(struct_line)
-                #out_java.write("".join(field_lines) + "\n")
+
+                assert(struct_name is not None)
+                assert(len(trait_fn_lines) == 0 or not is_opaque)
+                if is_opaque:
+                    opaque_structs.add(struct_name)
+                if len(trait_fn_lines) > 0:
+                    out_java.write("\tpublic interface " + struct_name + " {\n")
+                    for fn_line in trait_fn_lines:
+                        if fn_line.group(2) != "free" and fn_line.group(2) != "clone":
+                            out_java.write("\t\t void " + fn_line.group(2) + "(/* TODO + rtype */);\n")
+                    out_java.write("\t}\n")
+                    out_java.write("\tpublic static native long " + struct_name + "_new(" + struct_name + " impl);\n")
+
+                    out_c.write("typedef struct " + struct_name + "_JCalls {\n")
+                    out_c.write("\tJNIEnv *env;\n")
+                    out_c.write("\tjobject o;\n")
+                    for fn_line in trait_fn_lines:
+                        if fn_line.group(2) != "free" and fn_line.group(2) != "clone":
+                            out_c.write("\tjmethodID " + fn_line.group(2) + "_meth;\n")
+                    out_c.write("} " + struct_name + "_JCalls;\n")
+
+                    for fn_line in trait_fn_lines:
+                        if fn_line.group(2) != "free" and fn_line.group(2) != "clone":
+                            out_c.write("void " + fn_line.group(2) + "_jcall(void* this_arg/* TODO + rtype */) {\n")
+                            out_c.write("\t" + struct_name + "_JCalls *arg = (" + struct_name + "_JCalls*) this_arg;\n")
+                            out_c.write("\t(*arg->env)->CallObjectMethod(arg->env, arg->o, arg->" + fn_line.group(2) + "_meth);\n");
+                            out_c.write("}\n")
+                        elif fn_line.group(2) == "free":
+                            out_c.write("void " + struct_name + "_JCalls_free(void* this_arg) {\n")
+                            out_c.write("\t" + struct_name + "_JCalls *arg = (" + struct_name + "_JCalls*) this_arg;\n")
+                            out_c.write("\t(*arg->env)->DeleteGlobalRef(arg->env, arg->o);\n")
+                            out_c.write("\tfree(arg);\n")
+                            out_c.write("}\n")
+                        elif fn_line.group(2) == "clone":
+                            out_c.write("void* " + struct_name + "_JCalls_clone(void* this_arg) {\n")
+                            out_c.write("\t" + struct_name + "_JCalls *ret = malloc(sizeof(" + struct_name + "_JCalls));\n")
+                            out_c.write("\tmemcpy(ret, this_arg, sizeof(" + struct_name + "_JCalls));\n")
+                            out_c.write("\treturn ret;\n")
+                            out_c.write("}\n")
+
+                    out_c.write("JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_" + struct_name.replace("_", "_1") + "_1new (JNIEnv * env, jclass _a, jobject o) {\n")
+                    out_c.write("\tjclass c = (*env)->GetObjectClass(env, o);\n")
+                    out_c.write("\tassert(c != NULL);\n")
+                    out_c.write("\t" + struct_name + "_JCalls *calls = malloc(sizeof(" + struct_name + "_JCalls));\n")
+                    out_c.write("\tcalls->env = env;\n")
+                    out_c.write("\tcalls->o = (*env)->NewGlobalRef(env, o);\n")
+                    for fn_line in trait_fn_lines:
+                        if fn_line.group(2) != "free" and fn_line.group(2) != "clone":
+                            out_c.write("\tcalls->" + fn_line.group(2) + "_meth = (*env)->GetMethodID(env, c, \"" + fn_line.group(2) + "\", \"" + "TODO" + "\");\n")
+                            out_c.write("\tassert(calls->" + fn_line.group(2) + "_meth != NULL);\n")
+                    out_c.write("\n\t" + struct_name + " *ret = malloc(sizeof(" + struct_name + "));\n")
+                    out_c.write("\tret->this_arg = (void*) calls;\n")
+                    for fn_line in trait_fn_lines:
+                        if fn_line.group(2) != "free" and fn_line.group(2) != "clone":
+                            out_c.write("\tret->" + fn_line.group(2) + " = " + fn_line.group(2) + "_jcall;\n")
+                        elif fn_line.group(2) == "free":
+                            out_c.write("\tret->free = " + struct_name + "_JCalls_free;\n")
+                        else:
+                            out_c.write("\tret->clone = " + struct_name + "_JCalls_clone;\n")
+                    out_c.write("\treturn (long)ret;\n")
+                    out_c.write("}\n\n")
+
+                    #out_java.write("/* " + "\n".join(field_lines) + "*/\n")
                 cur_block_struct = None
         elif in_block_union:
             if line.startswith("} "):
index 16f6ef989d41d08db52cde78470782627f40f7d9..a84ce4dde24ccd83654bf621727e3021ff9b4ddd 100755 (executable)
@@ -5,7 +5,7 @@ if [ "$1" = "" -o "$2" = "" ]; then
        exit 1
 fi
 set -e
-./genbindings.py "$1/lightning-c-bindings/include/lightning.h" src/main/java/org/ldk/bindings.java src/main/jni/bindings.c
-javac -h src/main/jni src/main/java/org/ldk/bindings.java
-rm src/main/java/org/ldk/bindings.class
-gcc -o liblightningjni.so -shared -fPIC -Wno-pointer-sign -Wall -Isrc/main/jni -I"$1/lightning-c-bindings/include/" $2 src/main/jni/bindings.c "$1"/target/debug/liblightning.a
+./genbindings.py "$1/lightning-c-bindings/include/lightning.h" src/main/java/org/ldk/impl/bindings.java src/main/jni/bindings.c
+javac -h src/main/jni src/main/java/org/ldk/impl/bindings.java
+rm src/main/java/org/ldk/impl/bindings*.class
+clang -Wall -Wno-incompatible-pointer-types -flto -fuse-ld=lld -O2 -o liblightningjni.so -shared -fPIC -Wno-pointer-sign -Isrc/main/jni -I"$1/lightning-c-bindings/include/" $2 src/main/jni/bindings.c "$1"/target/debug/liblightning.a
diff --git a/pom.xml b/pom.xml
index da5f5b05f06cee047cd930497a001fe1f8a7c007..4e98b6e8dcb31b46b974168b8d5a5e3c3a636c02 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.example</groupId>
+    <groupId>org.ldk</groupId>
     <artifactId>ldk-java</artifactId>
     <version>1.0-SNAPSHOT</version>
     <properties>
diff --git a/src/main/java/org/ldk/bindings.java b/src/main/java/org/ldk/bindings.java
deleted file mode 100644 (file)
index 60e13c1..0000000
+++ /dev/null
@@ -1,1024 +0,0 @@
-package org.ldk;
-
-public class bindings {
-       static {
-               System.loadLibrary("lightning");
-       }
-
-       /// extern const void (*C2Tuple_OutPointScriptZ_free)(LDKC2Tuple_OutPointScriptZ);
-       public static native void C2TupleOutPointScriptZfree(long arg);
-       /// extern const void (*C2Tuple_Scriptu64Z_free)(LDKC2Tuple_Scriptu64Z);
-       public static native void C2TupleScriptu64Zfree(long arg);
-       /// extern const void (*C2Tuple_SecretKey_u832Z_free)(LDKC2Tuple_SecretKey_u832Z);
-       public static native void C2TupleSecretKeyu832Zfree(long arg);
-       /// extern const void (*C2Tuple_SignatureCVec_SignatureZZ_free)(LDKC2Tuple_SignatureCVec_SignatureZZ);
-       public static native void C2TupleSignatureCVecSignatureZZfree(long arg);
-       /// extern const void (*C2Tuple_Txidu32Z_free)(LDKC2Tuple_Txidu32Z);
-       public static native void C2TupleTxidu32Zfree(long arg);
-       /// extern const void (*C2Tuple_u64u64Z_free)(LDKC2Tuple_u64u64Z);
-       public static native void C2Tupleu64u64Zfree(long arg);
-       /// extern const void (*C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free)(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ);
-       public static native void C3TupleChannelAnnouncementChannelUpdateChannelUpdateZfree(long arg);
-       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_err)(LDKChainError);
-       public static native long CResultC2TupleScriptu64ZChainErrorZerr(long arg);
-       /// extern const void (*CResult_C2Tuple_Scriptu64ZChainErrorZ_free)(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ);
-       public static native void CResultC2TupleScriptu64ZChainErrorZfree(long arg);
-       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_good)(LDKC2Tuple_Scriptu64Z);
-       public static native long CResultC2TupleScriptu64ZChainErrorZgood(long arg);
-       /// extern const void (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free)(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ);
-       public static native void CResultC2TupleSignatureCVecSignatureZZNoneZfree(long arg);
-       /// extern const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_good)(LDKC2Tuple_SignatureCVec_SignatureZZ);
-       public static native long CResultC2TupleSignatureCVecSignatureZZNoneZgood(long arg);
-       /// extern const void (*CResult_CVec_SignatureZNoneZ_free)(LDKCResult_CVec_SignatureZNoneZ);
-       public static native void CResultCVecSignatureZNoneZfree(long arg);
-       /// extern const LDKCResult_CVec_SignatureZNoneZ (*CResult_CVec_SignatureZNoneZ_good)(LDKCVec_SignatureZ);
-       public static native long CResultCVecSignatureZNoneZgood(long arg);
-       /// extern const LDKCResult_CVec_u8ZPeerHandleErrorZ (*CResult_CVec_u8ZPeerHandleErrorZ_err)(LDKPeerHandleError);
-       public static native long CResultCVecu8ZPeerHandleErrorZerr(long arg);
-       /// extern const void (*CResult_CVec_u8ZPeerHandleErrorZ_free)(LDKCResult_CVec_u8ZPeerHandleErrorZ);
-       public static native void CResultCVecu8ZPeerHandleErrorZfree(long arg);
-       /// extern const LDKCResult_CVec_u8ZPeerHandleErrorZ (*CResult_CVec_u8ZPeerHandleErrorZ_good)(LDKCVec_u8Z);
-       public static native long CResultCVecu8ZPeerHandleErrorZgood(long arg);
-       /// extern const LDKCResult_NoneAPIErrorZ (*CResult_NoneAPIErrorZ_err)(LDKAPIError);
-       public static native long CResultNoneAPIErrorZerr(long arg);
-       /// extern const void (*CResult_NoneAPIErrorZ_free)(LDKCResult_NoneAPIErrorZ);
-       public static native void CResultNoneAPIErrorZfree(long arg);
-       /// extern const LDKCResult_NoneChannelMonitorUpdateErrZ (*CResult_NoneChannelMonitorUpdateErrZ_err)(LDKChannelMonitorUpdateErr);
-       public static native long CResultNoneChannelMonitorUpdateErrZerr(long arg);
-       /// extern const void (*CResult_NoneChannelMonitorUpdateErrZ_free)(LDKCResult_NoneChannelMonitorUpdateErrZ);
-       public static native void CResultNoneChannelMonitorUpdateErrZfree(long arg);
-       /// extern const LDKCResult_NoneMonitorUpdateErrorZ (*CResult_NoneMonitorUpdateErrorZ_err)(LDKMonitorUpdateError);
-       public static native long CResultNoneMonitorUpdateErrorZerr(long arg);
-       /// extern const void (*CResult_NoneMonitorUpdateErrorZ_free)(LDKCResult_NoneMonitorUpdateErrorZ);
-       public static native void CResultNoneMonitorUpdateErrorZfree(long arg);
-       /// extern const LDKCResult_NonePaymentSendFailureZ (*CResult_NonePaymentSendFailureZ_err)(LDKPaymentSendFailure);
-       public static native long CResultNonePaymentSendFailureZerr(long arg);
-       /// extern const void (*CResult_NonePaymentSendFailureZ_free)(LDKCResult_NonePaymentSendFailureZ);
-       public static native void CResultNonePaymentSendFailureZfree(long arg);
-       /// extern const LDKCResult_NonePeerHandleErrorZ (*CResult_NonePeerHandleErrorZ_err)(LDKPeerHandleError);
-       public static native long CResultNonePeerHandleErrorZerr(long arg);
-       /// extern const void (*CResult_NonePeerHandleErrorZ_free)(LDKCResult_NonePeerHandleErrorZ);
-       public static native void CResultNonePeerHandleErrorZfree(long arg);
-       /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_err)(LDKLightningError);
-       public static native long CResultRouteLightningErrorZerr(long arg);
-       /// extern const void (*CResult_RouteLightningErrorZ_free)(LDKCResult_RouteLightningErrorZ);
-       public static native void CResultRouteLightningErrorZfree(long arg);
-       /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_good)(LDKRoute);
-       public static native long CResultRouteLightningErrorZgood(long arg);
-       /// extern const void (*CResult_SignatureNoneZ_free)(LDKCResult_SignatureNoneZ);
-       public static native void CResultSignatureNoneZfree(long arg);
-       /// extern const LDKCResult_SignatureNoneZ (*CResult_SignatureNoneZ_good)(LDKSignature);
-       public static native long CResultSignatureNoneZgood(long arg);
-       /// extern const LDKCResult_boolLightningErrorZ (*CResult_boolLightningErrorZ_err)(LDKLightningError);
-       public static native long CResultboolLightningErrorZerr(long arg);
-       /// extern const void (*CResult_boolLightningErrorZ_free)(LDKCResult_boolLightningErrorZ);
-       public static native void CResultboolLightningErrorZfree(long arg);
-       /// extern const LDKCResult_boolLightningErrorZ (*CResult_boolLightningErrorZ_good)(bool);
-       public static native long CResultboolLightningErrorZgood(boolean arg);
-       /// extern const LDKCResult_boolPeerHandleErrorZ (*CResult_boolPeerHandleErrorZ_err)(LDKPeerHandleError);
-       public static native long CResultboolPeerHandleErrorZerr(long arg);
-       /// extern const void (*CResult_boolPeerHandleErrorZ_free)(LDKCResult_boolPeerHandleErrorZ);
-       public static native void CResultboolPeerHandleErrorZfree(long arg);
-       /// extern const LDKCResult_boolPeerHandleErrorZ (*CResult_boolPeerHandleErrorZ_good)(bool);
-       public static native long CResultboolPeerHandleErrorZgood(boolean arg);
-       /// extern const void (*CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free)(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ);
-       public static native void CVecC3TupleChannelAnnouncementChannelUpdateChannelUpdateZZfree(long arg);
-       /// extern const void (*CVec_CVec_RouteHopZZ_free)(LDKCVec_CVec_RouteHopZZ);
-       public static native void CVecCVecRouteHopZZfree(long arg);
-       /// extern const void (*CVec_ChannelDetailsZ_free)(LDKCVec_ChannelDetailsZ);
-       public static native void CVecChannelDetailsZfree(long arg);
-       /// extern const void (*CVec_EventZ_free)(LDKCVec_EventZ);
-       public static native void CVecEventZfree(long arg);
-       /// extern const void (*CVec_HTLCUpdateZ_free)(LDKCVec_HTLCUpdateZ);
-       public static native void CVecHTLCUpdateZfree(long arg);
-       /// extern const void (*CVec_MessageSendEventZ_free)(LDKCVec_MessageSendEventZ);
-       public static native void CVecMessageSendEventZfree(long arg);
-       /// extern const void (*CVec_NetAddressZ_free)(LDKCVec_NetAddressZ);
-       public static native void CVecNetAddressZfree(long arg);
-       /// extern const void (*CVec_NodeAnnouncementZ_free)(LDKCVec_NodeAnnouncementZ);
-       public static native void CVecNodeAnnouncementZfree(long arg);
-       /// extern const void (*CVec_PublicKeyZ_free)(LDKCVec_PublicKeyZ);
-       public static native void CVecPublicKeyZfree(long arg);
-       /// extern const void (*CVec_RouteHopZ_free)(LDKCVec_RouteHopZ);
-       public static native void CVecRouteHopZfree(long arg);
-       /// extern const void (*CVec_SignatureZ_free)(LDKCVec_SignatureZ);
-       public static native void CVecSignatureZfree(long arg);
-       /// extern const void (*CVec_SpendableOutputDescriptorZ_free)(LDKCVec_SpendableOutputDescriptorZ);
-       public static native void CVecSpendableOutputDescriptorZfree(long arg);
-       /// extern const void (*CVec_TransactionZ_free)(LDKCVec_TransactionZ);
-       public static native void CVecTransactionZfree(long arg);
-       /// extern const void (*CVec_UpdateAddHTLCZ_free)(LDKCVec_UpdateAddHTLCZ);
-       public static native void CVecUpdateAddHTLCZfree(long arg);
-       /// extern const void (*CVec_UpdateFailHTLCZ_free)(LDKCVec_UpdateFailHTLCZ);
-       public static native void CVecUpdateFailHTLCZfree(long arg);
-       /// extern const void (*CVec_UpdateFailMalformedHTLCZ_free)(LDKCVec_UpdateFailMalformedHTLCZ);
-       public static native void CVecUpdateFailMalformedHTLCZfree(long arg);
-       /// extern const void (*CVec_UpdateFulfillHTLCZ_free)(LDKCVec_UpdateFulfillHTLCZ);
-       public static native void CVecUpdateFulfillHTLCZfree(long arg);
-       /// extern const void (*CVec_u64Z_free)(LDKCVec_u64Z);
-       public static native void CVecu64Zfree(long arg);
-       /// extern const void (*CVec_u8Z_free)(LDKCVec_u8Z);
-       public static native void CVecu8Zfree(long arg);
-       /// extern const void (*CVec_usizeZ_free)(LDKCVec_usizeZ);
-       public static native void CVecusizeZfree(long arg);
-       /// LDKC2Tuple_Txidu32Z C2Tuple_Txidu32Z_new(LDKThirtyTwoBytes a, uint32_t b);
-       public static native long C2TupleTxidu32Znew(long a, int b);
-       /// LDKC2Tuple_Scriptu64Z C2Tuple_Scriptu64Z_new(LDKCVec_u8Z a, uint64_t b);
-       public static native long C2TupleScriptu64Znew(long a, long b);
-       /// LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b);
-       public static native long C2Tupleu64u64Znew(long a, long b);
-       /// LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(LDKSignature a, LDKCVec_SignatureZ b);
-       public static native long C2TupleSignatureCVecSignatureZZnew(long a, long b);
-       /// LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
-       public static native long CResultC2TupleSignatureCVecSignatureZZNoneZerr();
-       /// LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
-       public static native long CResultSignatureNoneZerr();
-       /// LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
-       public static native long CResultCVecSignatureZNoneZerr();
-       /// LDKC2Tuple_SecretKey_u832Z C2Tuple_SecretKey_u832Z_new(LDKSecretKey a, LDKThirtyTwoBytes b);
-       public static native long C2TupleSecretKeyu832Znew(long a, long b);
-       /// LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_good(void);
-       public static native long CResultNoneAPIErrorZgood();
-       /// LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_good(void);
-       public static native long CResultNonePaymentSendFailureZgood();
-       /// LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_good(void);
-       public static native long CResultNoneChannelMonitorUpdateErrZgood();
-       /// LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_good(void);
-       public static native long CResultNoneMonitorUpdateErrorZgood();
-       /// LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(LDKOutPoint a, LDKCVec_u8Z b);
-       public static native long C2TupleOutPointScriptZnew(long a, long b);
-       /// LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(LDKChannelAnnouncement a, LDKChannelUpdate b, LDKChannelUpdate c);
-       public static native long C3TupleChannelAnnouncementChannelUpdateChannelUpdateZnew(long a, long b, long c);
-       /// LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_good(void);
-       public static native long CResultNonePeerHandleErrorZgood();
-       /// void Event_free(LDKEvent this_ptr);
-       public static native void Eventfree(long this_ptr);
-       /// void MessageSendEvent_free(LDKMessageSendEvent this_ptr);
-       public static native void MessageSendEventfree(long this_ptr);
-       /// void MessageSendEventsProvider_free(LDKMessageSendEventsProvider this_ptr);
-       public static native void MessageSendEventsProviderfree(long this_ptr);
-       /// void EventsProvider_free(LDKEventsProvider this_ptr);
-       public static native void EventsProviderfree(long this_ptr);
-       /// void APIError_free(LDKAPIError this_ptr);
-       public static native void APIErrorfree(long this_ptr);
-       /// MUST_USE_RES LDKLevel Level_max(void);
-       public static native long Levelmax();
-       /// void Logger_free(LDKLogger this_ptr);
-       public static native void Loggerfree(long this_ptr);
-       /// void ChannelHandshakeConfig_free(LDKChannelHandshakeConfig this_ptr);
-       public static native void ChannelHandshakeConfigfree(long this_ptr);
-       /// uint32_t ChannelHandshakeConfig_get_minimum_depth(const LDKChannelHandshakeConfig *this_ptr);
-       public static native int ChannelHandshakeConfiggetminimumdepth(long this_ptr);
-       /// void ChannelHandshakeConfig_set_minimum_depth(LDKChannelHandshakeConfig *this_ptr, uint32_t val);
-       public static native void ChannelHandshakeConfigsetminimumdepth(long this_ptr, int val);
-       /// uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const LDKChannelHandshakeConfig *this_ptr);
-       public static native long ChannelHandshakeConfiggetourtoselfdelay(long this_ptr);
-       /// void ChannelHandshakeConfig_set_our_to_self_delay(LDKChannelHandshakeConfig *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeConfigsetourtoselfdelay(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const LDKChannelHandshakeConfig *this_ptr);
-       public static native long ChannelHandshakeConfiggetourhtlcminimummsat(long this_ptr);
-       /// void ChannelHandshakeConfig_set_our_htlc_minimum_msat(LDKChannelHandshakeConfig *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeConfigsetourhtlcminimummsat(long this_ptr, long val);
-       /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
-       public static native long ChannelHandshakeConfignew(int minimum_depth_arg, long our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
-       /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
-       public static native long ChannelHandshakeConfigdefault();
-       /// void ChannelHandshakeLimits_free(LDKChannelHandshakeLimits this_ptr);
-       public static native void ChannelHandshakeLimitsfree(long this_ptr);
-       /// uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetminfundingsatoshis(long this_ptr);
-       /// void ChannelHandshakeLimits_set_min_funding_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetminfundingsatoshis(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetmaxhtlcminimummsat(long this_ptr);
-       /// void ChannelHandshakeLimits_set_max_htlc_minimum_msat(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetmaxhtlcminimummsat(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetminmaxhtlcvalueinflightmsat(long this_ptr);
-       /// void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetminmaxhtlcvalueinflightmsat(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetmaxchannelreservesatoshis(long this_ptr);
-       /// void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetmaxchannelreservesatoshis(long this_ptr, long val);
-       /// uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetminmaxacceptedhtlcs(long this_ptr);
-       /// void ChannelHandshakeLimits_set_min_max_accepted_htlcs(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeLimitssetminmaxacceptedhtlcs(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetmindustlimitsatoshis(long this_ptr);
-       /// void ChannelHandshakeLimits_set_min_dust_limit_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetmindustlimitsatoshis(long this_ptr, long val);
-       /// uint64_t ChannelHandshakeLimits_get_max_dust_limit_satoshis(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgetmaxdustlimitsatoshis(long this_ptr);
-       /// void ChannelHandshakeLimits_set_max_dust_limit_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
-       public static native void ChannelHandshakeLimitssetmaxdustlimitsatoshis(long this_ptr, long val);
-       /// uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const LDKChannelHandshakeLimits *this_ptr);
-       public static native int ChannelHandshakeLimitsgetmaxminimumdepth(long this_ptr);
-       /// void ChannelHandshakeLimits_set_max_minimum_depth(LDKChannelHandshakeLimits *this_ptr, uint32_t val);
-       public static native void ChannelHandshakeLimitssetmaxminimumdepth(long this_ptr, int val);
-       /// bool ChannelHandshakeLimits_get_force_announced_channel_preference(const LDKChannelHandshakeLimits *this_ptr);
-       public static native boolean ChannelHandshakeLimitsgetforceannouncedchannelpreference(long this_ptr);
-       /// void ChannelHandshakeLimits_set_force_announced_channel_preference(LDKChannelHandshakeLimits *this_ptr, bool val);
-       public static native void ChannelHandshakeLimitssetforceannouncedchannelpreference(long this_ptr, boolean va);
-       /// uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimitsgettheirtoselfdelay(long this_ptr);
-       /// void ChannelHandshakeLimits_set_their_to_self_delay(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeLimitssettheirtoselfdelay(long this_ptr, long val);
-       /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint64_t min_dust_limit_satoshis_arg, uint64_t max_dust_limit_satoshis_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
-       public static native long ChannelHandshakeLimitsnew(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, long min_max_accepted_htlcs_arg, long min_dust_limit_satoshis_arg, long max_dust_limit_satoshis_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, long their_to_self_delay_arg);
-       /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
-       public static native long ChannelHandshakeLimitsdefault();
-       /// void ChannelConfig_free(LDKChannelConfig this_ptr);
-       public static native void ChannelConfigfree(long this_ptr);
-       /// uint32_t ChannelConfig_get_fee_proportional_millionths(const LDKChannelConfig *this_ptr);
-       public static native int ChannelConfiggetfeeproportionalmillionths(long this_ptr);
-       /// void ChannelConfig_set_fee_proportional_millionths(LDKChannelConfig *this_ptr, uint32_t val);
-       public static native void ChannelConfigsetfeeproportionalmillionths(long this_ptr, int val);
-       /// bool ChannelConfig_get_announced_channel(const LDKChannelConfig *this_ptr);
-       public static native boolean ChannelConfiggetannouncedchannel(long this_ptr);
-       /// void ChannelConfig_set_announced_channel(LDKChannelConfig *this_ptr, bool val);
-       public static native void ChannelConfigsetannouncedchannel(long this_ptr, boolean va);
-       /// bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const LDKChannelConfig *this_ptr);
-       public static native boolean ChannelConfiggetcommitupfrontshutdownpubkey(long this_ptr);
-       /// void ChannelConfig_set_commit_upfront_shutdown_pubkey(LDKChannelConfig *this_ptr, bool val);
-       public static native void ChannelConfigsetcommitupfrontshutdownpubkey(long this_ptr, boolean va);
-       /// MUST_USE_RES LDKChannelConfig ChannelConfig_new(uint32_t fee_proportional_millionths_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg);
-       public static native long ChannelConfignew(int fee_proportional_millionths_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg);
-       /// MUST_USE_RES LDKChannelConfig ChannelConfig_default(void);
-       public static native long ChannelConfigdefault();
-       /// LDKCVec_u8Z ChannelConfig_write(const LDKChannelConfig *obj);
-       public static native long ChannelConfigwrite(long obj);
-       /// LDKChannelConfig ChannelConfig_read(LDKu8slice ser);
-       public static native long ChannelConfigread(long ser);
-       /// void UserConfig_free(LDKUserConfig this_ptr);
-       public static native void UserConfigfree(long this_ptr);
-       /// LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const LDKUserConfig *this_ptr);
-       public static native long UserConfiggetownchannelconfig(long this_ptr);
-       /// void UserConfig_set_own_channel_config(LDKUserConfig *this_ptr, LDKChannelHandshakeConfig val);
-       public static native void UserConfigsetownchannelconfig(long this_ptr, long val);
-       /// LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const LDKUserConfig *this_ptr);
-       public static native long UserConfiggetpeerchannelconfiglimits(long this_ptr);
-       /// void UserConfig_set_peer_channel_config_limits(LDKUserConfig *this_ptr, LDKChannelHandshakeLimits val);
-       public static native void UserConfigsetpeerchannelconfiglimits(long this_ptr, long val);
-       /// LDKChannelConfig UserConfig_get_channel_options(const LDKUserConfig *this_ptr);
-       public static native long UserConfiggetchanneloptions(long this_ptr);
-       /// void UserConfig_set_channel_options(LDKUserConfig *this_ptr, LDKChannelConfig val);
-       public static native void UserConfigsetchanneloptions(long this_ptr, long val);
-       /// MUST_USE_RES LDKUserConfig UserConfig_new(LDKChannelHandshakeConfig own_channel_config_arg, LDKChannelHandshakeLimits peer_channel_config_limits_arg, LDKChannelConfig channel_options_arg);
-       public static native long UserConfignew(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg);
-       /// MUST_USE_RES LDKUserConfig UserConfig_default(void);
-       public static native long UserConfigdefault();
-       /// void ChainWatchInterface_free(LDKChainWatchInterface this_ptr);
-       public static native void ChainWatchInterfacefree(long this_ptr);
-       /// void BroadcasterInterface_free(LDKBroadcasterInterface this_ptr);
-       public static native void BroadcasterInterfacefree(long this_ptr);
-       /// void ChainListener_free(LDKChainListener this_ptr);
-       public static native void ChainListenerfree(long this_ptr);
-       /// void FeeEstimator_free(LDKFeeEstimator this_ptr);
-       public static native void FeeEstimatorfree(long this_ptr);
-       /// void ChainWatchedUtil_free(LDKChainWatchedUtil this_ptr);
-       public static native void ChainWatchedUtilfree(long this_ptr);
-       /// MUST_USE_RES LDKChainWatchedUtil ChainWatchedUtil_new(void);
-       public static native long ChainWatchedUtilnew();
-       /// MUST_USE_RES bool ChainWatchedUtil_register_tx(LDKChainWatchedUtil *this_arg, const uint8_t (*txid)[32], LDKu8slice script_pub_key);
-       public static native boolean ChainWatchedUtilregistertx(long this_arg, byte[] txid, long script_pub_key);
-       /// MUST_USE_RES bool ChainWatchedUtil_register_outpoint(LDKChainWatchedUtil *this_arg, LDKC2Tuple_Txidu32Z outpoint, LDKu8slice _script_pub_key);
-       public static native boolean ChainWatchedUtilregisteroutpoint(long this_arg, long outpoint, long _script_pub_key);
-       /// MUST_USE_RES bool ChainWatchedUtil_watch_all(LDKChainWatchedUtil *this_arg);
-       public static native boolean ChainWatchedUtilwatchall(long this_arg);
-       /// MUST_USE_RES bool ChainWatchedUtil_does_match_tx(const LDKChainWatchedUtil *this_arg, LDKTransaction tx);
-       public static native boolean ChainWatchedUtildoesmatchtx(long this_arg, long tx);
-       /// void BlockNotifier_free(LDKBlockNotifier this_ptr);
-       public static native void BlockNotifierfree(long this_ptr);
-       /// MUST_USE_RES LDKBlockNotifier BlockNotifier_new(LDKChainWatchInterface chain_monitor);
-       public static native long BlockNotifiernew(long chain_monitor);
-       /// void BlockNotifier_register_listener(const LDKBlockNotifier *this_arg, LDKChainListener listener);
-       public static native void BlockNotifierregisterlistener(long this_arg, long listener);
-       /// void BlockNotifier_block_connected(const LDKBlockNotifier *this_arg, LDKu8slice block, uint32_t height);
-       public static native void BlockNotifierblockconnected(long this_arg, long block, int heigh);
-       /// MUST_USE_RES bool BlockNotifier_block_connected_checked(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t height, LDKCTransactionSlice txn_matched, LDKusizeslice indexes_of_txn_matched);
-       public static native boolean BlockNotifierblockconnectedchecked(long this_arg, byte[] header, int heigh, long txn_matched, long indexes_of_txn_matched);
-       /// void BlockNotifier_block_disconnected(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
-       public static native void BlockNotifierblockdisconnected(long this_arg, byte[] header, int disconnected_heigh);
-       /// void ChainWatchInterfaceUtil_free(LDKChainWatchInterfaceUtil this_ptr);
-       public static native void ChainWatchInterfaceUtilfree(long this_ptr);
-       /// LDKChainWatchInterface ChainWatchInterfaceUtil_as_ChainWatchInterface(const LDKChainWatchInterfaceUtil *this_arg);
-       public static native long ChainWatchInterfaceUtilasChainWatchInterface(long this_arg);
-       /// MUST_USE_RES LDKChainWatchInterfaceUtil ChainWatchInterfaceUtil_new(LDKNetwork network);
-       public static native long ChainWatchInterfaceUtilnew(long network);
-       /// MUST_USE_RES bool ChainWatchInterfaceUtil_does_match_tx(const LDKChainWatchInterfaceUtil *this_arg, LDKTransaction tx);
-       public static native boolean ChainWatchInterfaceUtildoesmatchtx(long this_arg, long tx);
-       /// void OutPoint_free(LDKOutPoint this_ptr);
-       public static native void OutPointfree(long this_ptr);
-       /// const uint8_t (*OutPoint_get_txid(const LDKOutPoint *this_ptr))[32];
-       public static native byte[]  OutPointgettxid(long this_ptr);
-       /// void OutPoint_set_txid(LDKOutPoint *this_ptr, LDKThirtyTwoBytes val);
-       public static native void OutPointsettxid(long this_ptr, long val);
-       /// uint16_t OutPoint_get_index(const LDKOutPoint *this_ptr);
-       public static native long OutPointgetindex(long this_ptr);
-       /// void OutPoint_set_index(LDKOutPoint *this_ptr, uint16_t val);
-       public static native void OutPointsetindex(long this_ptr, long val);
-       /// MUST_USE_RES LDKOutPoint OutPoint_new(LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
-       public static native long OutPointnew(long txid_arg, long index_arg);
-       /// MUST_USE_RES LDKThirtyTwoBytes OutPoint_to_channel_id(const LDKOutPoint *this_arg);
-       public static native long OutPointtochannelid(long this_arg);
-       /// LDKCVec_u8Z OutPoint_write(const LDKOutPoint *obj);
-       public static native long OutPointwrite(long obj);
-       /// LDKOutPoint OutPoint_read(LDKu8slice ser);
-       public static native long OutPointread(long ser);
-       /// void SpendableOutputDescriptor_free(LDKSpendableOutputDescriptor this_ptr);
-       public static native void SpendableOutputDescriptorfree(long this_ptr);
-       /// LDKCVec_u8Z SpendableOutputDescriptor_write(const LDKSpendableOutputDescriptor *obj);
-       public static native long SpendableOutputDescriptorwrite(long obj);
-       /// LDKSpendableOutputDescriptor SpendableOutputDescriptor_read(LDKu8slice ser);
-       public static native long SpendableOutputDescriptorread(long ser);
-       /// void ChannelKeys_free(LDKChannelKeys this_ptr);
-       public static native void ChannelKeysfree(long this_ptr);
-       /// void KeysInterface_free(LDKKeysInterface this_ptr);
-       public static native void KeysInterfacefree(long this_ptr);
-       /// void InMemoryChannelKeys_free(LDKInMemoryChannelKeys this_ptr);
-       public static native void InMemoryChannelKeysfree(long this_ptr);
-       /// const uint8_t (*InMemoryChannelKeys_get_funding_key(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgetfundingkey(long this_ptr);
-       /// void InMemoryChannelKeys_set_funding_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
-       public static native void InMemoryChannelKeyssetfundingkey(long this_ptr, long val);
-       /// const uint8_t (*InMemoryChannelKeys_get_revocation_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgetrevocationbasekey(long this_ptr);
-       /// void InMemoryChannelKeys_set_revocation_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
-       public static native void InMemoryChannelKeyssetrevocationbasekey(long this_ptr, long val);
-       /// const uint8_t (*InMemoryChannelKeys_get_payment_key(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgetpaymentkey(long this_ptr);
-       /// void InMemoryChannelKeys_set_payment_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
-       public static native void InMemoryChannelKeyssetpaymentkey(long this_ptr, long val);
-       /// const uint8_t (*InMemoryChannelKeys_get_delayed_payment_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgetdelayedpaymentbasekey(long this_ptr);
-       /// void InMemoryChannelKeys_set_delayed_payment_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
-       public static native void InMemoryChannelKeyssetdelayedpaymentbasekey(long this_ptr, long val);
-       /// const uint8_t (*InMemoryChannelKeys_get_htlc_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgethtlcbasekey(long this_ptr);
-       /// void InMemoryChannelKeys_set_htlc_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
-       public static native void InMemoryChannelKeyssethtlcbasekey(long this_ptr, long val);
-       /// const uint8_t (*InMemoryChannelKeys_get_commitment_seed(const LDKInMemoryChannelKeys *this_ptr))[32];
-       public static native byte[]  InMemoryChannelKeysgetcommitmentseed(long this_ptr);
-       /// void InMemoryChannelKeys_set_commitment_seed(LDKInMemoryChannelKeys *this_ptr, LDKThirtyTwoBytes val);
-       public static native void InMemoryChannelKeyssetcommitmentseed(long this_ptr, long val);
-       /// MUST_USE_RES LDKInMemoryChannelKeys InMemoryChannelKeys_new(LDKSecretKey funding_key, LDKSecretKey revocation_base_key, LDKSecretKey payment_key, LDKSecretKey delayed_payment_base_key, LDKSecretKey htlc_base_key, LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, LDKC2Tuple_u64u64Z key_derivation_params);
-       public static native long InMemoryChannelKeysnew(long funding_key, long revocation_base_key, long payment_key, long delayed_payment_base_key, long htlc_base_key, long commitment_seed, long channel_value_satoshis, long key_derivation_params);
-       /// LDKChannelKeys InMemoryChannelKeys_as_ChannelKeys(const LDKInMemoryChannelKeys *this_arg);
-       public static native long InMemoryChannelKeysasChannelKeys(long this_arg);
-       /// LDKCVec_u8Z InMemoryChannelKeys_write(const LDKInMemoryChannelKeys *obj);
-       public static native long InMemoryChannelKeyswrite(long obj);
-       /// LDKInMemoryChannelKeys InMemoryChannelKeys_read(LDKu8slice ser);
-       public static native long InMemoryChannelKeysread(long ser);
-       /// void KeysManager_free(LDKKeysManager this_ptr);
-       public static native void KeysManagerfree(long this_ptr);
-       /// MUST_USE_RES LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], LDKNetwork network, uint64_t starting_time_secs, uint32_t starting_time_nanos);
-       public static native long KeysManagernew(byte[] seed, long network, long starting_time_secs, int starting_time_nanos);
-       /// MUST_USE_RES LDKInMemoryChannelKeys KeysManager_derive_channel_keys(const LDKKeysManager *this_arg, uint64_t channel_value_satoshis, uint64_t params_1, uint64_t params_2);
-       public static native long KeysManagerderivechannelkeys(long this_arg, long channel_value_satoshis, long params_1, long params_2);
-       /// LDKKeysInterface KeysManager_as_KeysInterface(const LDKKeysManager *this_arg);
-       public static native long KeysManagerasKeysInterface(long this_arg);
-       /// void ChannelManager_free(LDKChannelManager this_ptr);
-       public static native void ChannelManagerfree(long this_ptr);
-       /// void ChannelDetails_free(LDKChannelDetails this_ptr);
-       public static native void ChannelDetailsfree(long this_ptr);
-       /// const uint8_t (*ChannelDetails_get_channel_id(const LDKChannelDetails *this_ptr))[32];
-       public static native byte[]  ChannelDetailsgetchannelid(long this_ptr);
-       /// void ChannelDetails_set_channel_id(LDKChannelDetails *this_ptr, LDKThirtyTwoBytes val);
-       public static native void ChannelDetailssetchannelid(long this_ptr, long val);
-       /// LDKPublicKey ChannelDetails_get_remote_network_id(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetremotenetworkid(long this_ptr);
-       /// void ChannelDetails_set_remote_network_id(LDKChannelDetails *this_ptr, LDKPublicKey val);
-       public static native void ChannelDetailssetremotenetworkid(long this_ptr, long val);
-       /// LDKInitFeatures ChannelDetails_get_counterparty_features(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetcounterpartyfeatures(long this_ptr);
-       /// void ChannelDetails_set_counterparty_features(LDKChannelDetails *this_ptr, LDKInitFeatures val);
-       public static native void ChannelDetailssetcounterpartyfeatures(long this_ptr, long val);
-       /// uint64_t ChannelDetails_get_channel_value_satoshis(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetchannelvaluesatoshis(long this_ptr);
-       /// void ChannelDetails_set_channel_value_satoshis(LDKChannelDetails *this_ptr, uint64_t val);
-       public static native void ChannelDetailssetchannelvaluesatoshis(long this_ptr, long val);
-       /// uint64_t ChannelDetails_get_user_id(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetuserid(long this_ptr);
-       /// void ChannelDetails_set_user_id(LDKChannelDetails *this_ptr, uint64_t val);
-       public static native void ChannelDetailssetuserid(long this_ptr, long val);
-       /// uint64_t ChannelDetails_get_outbound_capacity_msat(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetoutboundcapacitymsat(long this_ptr);
-       /// void ChannelDetails_set_outbound_capacity_msat(LDKChannelDetails *this_ptr, uint64_t val);
-       public static native void ChannelDetailssetoutboundcapacitymsat(long this_ptr, long val);
-       /// uint64_t ChannelDetails_get_inbound_capacity_msat(const LDKChannelDetails *this_ptr);
-       public static native long ChannelDetailsgetinboundcapacitymsat(long this_ptr);
-       /// void ChannelDetails_set_inbound_capacity_msat(LDKChannelDetails *this_ptr, uint64_t val);
-       public static native void ChannelDetailssetinboundcapacitymsat(long this_ptr, long val);
-       /// bool ChannelDetails_get_is_live(const LDKChannelDetails *this_ptr);
-       public static native boolean ChannelDetailsgetislive(long this_ptr);
-       /// void ChannelDetails_set_is_live(LDKChannelDetails *this_ptr, bool val);
-       public static native void ChannelDetailssetislive(long this_ptr, boolean va);
-       /// void PaymentSendFailure_free(LDKPaymentSendFailure this_ptr);
-       public static native void PaymentSendFailurefree(long this_ptr);
-       /// MUST_USE_RES LDKChannelManager ChannelManager_new(LDKNetwork network, LDKFeeEstimator fee_est, LDKManyChannelMonitor monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKKeysInterface keys_manager, LDKUserConfig config, uintptr_t current_blockchain_height);
-       public static native long ChannelManagernew(long network, long fee_est, long monitor, long tx_broadcaster, long logger, long keys_manager, long config, long current_blockchain_height);
-       /// MUST_USE_RES LDKCResult_NoneAPIErrorZ ChannelManager_create_channel(const LDKChannelManager *this_arg, LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_id, LDKUserConfig override_config);
-       public static native long ChannelManagercreatechannel(long this_arg, long their_network_key, long channel_value_satoshis, long push_msa, long ser_id, long override_config);
-       /// MUST_USE_RES LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerlistchannels(long this_arg);
-       /// MUST_USE_RES LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerlistusablechannels(long this_arg);
-       /// MUST_USE_RES LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const LDKChannelManager *this_arg, const uint8_t (*channel_id)[32]);
-       public static native long ChannelManagerclosechannel(long this_arg, byte[] channel_id);
-       /// void ChannelManager_force_close_channel(const LDKChannelManager *this_arg, const uint8_t (*channel_id)[32]);
-       public static native void ChannelManagerforceclosechannel(long this_arg, byte[] channel_id);
-       /// void ChannelManager_force_close_all_channels(const LDKChannelManager *this_arg);
-       public static native void ChannelManagerforcecloseallchannels(long this_arg);
-       /// MUST_USE_RES LDKCResult_NonePaymentSendFailureZ ChannelManager_send_payment(const LDKChannelManager *this_arg, const LDKRoute *route, LDKThirtyTwoBytes payment_hash, LDKThirtyTwoBytes payment_secret);
-       public static native long ChannelManagersendpayment(long this_arg, long route, long payment_hash, long payment_secret);
-       /// void ChannelManager_funding_transaction_generated(const LDKChannelManager *this_arg, const uint8_t (*temporary_channel_id)[32], LDKOutPoint funding_txo);
-       public static native void ChannelManagerfundingtransactiongenerated(long this_arg, byte[] temporary_channel_id, long funding_txo);
-       /// void ChannelManager_broadcast_node_announcement(const LDKChannelManager *this_arg, LDKThreeBytes rgb, LDKThirtyTwoBytes alias, LDKCVec_NetAddressZ addresses);
-       public static native void ChannelManagerbroadcastnodeannouncement(long this_arg, long rgb, long alias, long addresses);
-       /// void ChannelManager_process_pending_htlc_forwards(const LDKChannelManager *this_arg);
-       public static native void ChannelManagerprocesspendinghtlcforwards(long this_arg);
-       /// void ChannelManager_timer_chan_freshness_every_min(const LDKChannelManager *this_arg);
-       public static native void ChannelManagertimerchanfreshnesseverymin(long this_arg);
-       /// MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const LDKChannelManager *this_arg, const uint8_t (*payment_hash)[32], LDKThirtyTwoBytes payment_secret);
-       public static native boolean ChannelManagerfailhtlcbackwards(long this_arg, byte[] payment_hash, long payment_secret);
-       /// MUST_USE_RES bool ChannelManager_claim_funds(const LDKChannelManager *this_arg, LDKThirtyTwoBytes payment_preimage, LDKThirtyTwoBytes payment_secret, uint64_t expected_amount);
-       public static native boolean ChannelManagerclaimfunds(long this_arg, long payment_preimage, long payment_secret, long expected_amo);
-       /// MUST_USE_RES LDKPublicKey ChannelManager_get_our_node_id(const LDKChannelManager *this_arg);
-       public static native long ChannelManagergetournodeid(long this_arg);
-       /// void ChannelManager_channel_monitor_updated(const LDKChannelManager *this_arg, const LDKOutPoint *funding_txo, uint64_t highest_applied_update_id);
-       public static native void ChannelManagerchannelmonitorupdated(long this_arg, long funding_txo, long highest_applied_update_id);
-       /// LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerasMessageSendEventsProvider(long this_arg);
-       /// LDKEventsProvider ChannelManager_as_EventsProvider(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerasEventsProvider(long this_arg);
-       /// LDKChainListener ChannelManager_as_ChainListener(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerasChainListener(long this_arg);
-       /// LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const LDKChannelManager *this_arg);
-       public static native long ChannelManagerasChannelMessageHandler(long this_arg);
-       /// void ChannelMonitorUpdate_free(LDKChannelMonitorUpdate this_ptr);
-       public static native void ChannelMonitorUpdatefree(long this_ptr);
-       /// uint64_t ChannelMonitorUpdate_get_update_id(const LDKChannelMonitorUpdate *this_ptr);
-       public static native long ChannelMonitorUpdategetupdateid(long this_ptr);
-       /// void ChannelMonitorUpdate_set_update_id(LDKChannelMonitorUpdate *this_ptr, uint64_t val);
-       public static native void ChannelMonitorUpdatesetupdateid(long this_ptr, long val);
-       /// LDKCVec_u8Z ChannelMonitorUpdate_write(const LDKChannelMonitorUpdate *obj);
-       public static native long ChannelMonitorUpdatewrite(long obj);
-       /// LDKChannelMonitorUpdate ChannelMonitorUpdate_read(LDKu8slice ser);
-       public static native long ChannelMonitorUpdateread(long ser);
-       /// void MonitorUpdateError_free(LDKMonitorUpdateError this_ptr);
-       public static native void MonitorUpdateErrorfree(long this_ptr);
-       /// void HTLCUpdate_free(LDKHTLCUpdate this_ptr);
-       public static native void HTLCUpdatefree(long this_ptr);
-       /// LDKCVec_u8Z HTLCUpdate_write(const LDKHTLCUpdate *obj);
-       public static native long HTLCUpdatewrite(long obj);
-       /// LDKHTLCUpdate HTLCUpdate_read(LDKu8slice ser);
-       public static native long HTLCUpdateread(long ser);
-       /// void ChannelMonitor_free(LDKChannelMonitor this_ptr);
-       public static native void ChannelMonitorfree(long this_ptr);
-       /// void ManyChannelMonitor_free(LDKManyChannelMonitor this_ptr);
-       public static native void ManyChannelMonitorfree(long this_ptr);
-       /// MUST_USE_RES LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(LDKChannelMonitor *this_arg, LDKChannelMonitorUpdate updates, const LDKBroadcasterInterface *broadcaster, const LDKLogger *logger);
-       public static native long ChannelMonitorupdatemonitor(long this_arg, long updates, long broadcaster, long logger);
-       /// MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitorgetlatestupdateid(long this_arg);
-       /// MUST_USE_RES LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitorgetfundingtxo(long this_arg);
-       /// MUST_USE_RES LDKCVec_HTLCUpdateZ ChannelMonitor_get_and_clear_pending_htlcs_updated(LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitorgetandclearpendinghtlcsupdated(long this_arg);
-       /// MUST_USE_RES LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitorgetandclearpendingevents(long this_arg);
-       /// MUST_USE_RES LDKCVec_TransactionZ ChannelMonitor_get_latest_local_commitment_txn(LDKChannelMonitor *this_arg, const LDKLogger *logger);
-       public static native long ChannelMonitorgetlatestlocalcommitmenttxn(long this_arg, long logger);
-       /// void DecodeError_free(LDKDecodeError this_ptr);
-       public static native void DecodeErrorfree(long this_ptr);
-       /// void Init_free(LDKInit this_ptr);
-       public static native void Initfree(long this_ptr);
-       /// void ErrorMessage_free(LDKErrorMessage this_ptr);
-       public static native void ErrorMessagefree(long this_ptr);
-       /// void Ping_free(LDKPing this_ptr);
-       public static native void Pingfree(long this_ptr);
-       /// void Pong_free(LDKPong this_ptr);
-       public static native void Pongfree(long this_ptr);
-       /// void OpenChannel_free(LDKOpenChannel this_ptr);
-       public static native void OpenChannelfree(long this_ptr);
-       /// void AcceptChannel_free(LDKAcceptChannel this_ptr);
-       public static native void AcceptChannelfree(long this_ptr);
-       /// void FundingCreated_free(LDKFundingCreated this_ptr);
-       public static native void FundingCreatedfree(long this_ptr);
-       /// void FundingSigned_free(LDKFundingSigned this_ptr);
-       public static native void FundingSignedfree(long this_ptr);
-       /// void FundingLocked_free(LDKFundingLocked this_ptr);
-       public static native void FundingLockedfree(long this_ptr);
-       /// const uint8_t (*FundingLocked_get_channel_id(const LDKFundingLocked *this_ptr))[32];
-       public static native byte[]  FundingLockedgetchannelid(long this_ptr);
-       /// void FundingLocked_set_channel_id(LDKFundingLocked *this_ptr, LDKThirtyTwoBytes val);
-       public static native void FundingLockedsetchannelid(long this_ptr, long val);
-       /// LDKPublicKey FundingLocked_get_next_per_commitment_point(const LDKFundingLocked *this_ptr);
-       public static native long FundingLockedgetnextpercommitmentpoint(long this_ptr);
-       /// void FundingLocked_set_next_per_commitment_point(LDKFundingLocked *this_ptr, LDKPublicKey val);
-       public static native void FundingLockedsetnextpercommitmentpoint(long this_ptr, long val);
-       /// MUST_USE_RES LDKFundingLocked FundingLocked_new(LDKThirtyTwoBytes channel_id_arg, LDKPublicKey next_per_commitment_point_arg);
-       public static native long FundingLockednew(long channel_id_arg, long next_per_commitment_point_arg);
-       /// void Shutdown_free(LDKShutdown this_ptr);
-       public static native void Shutdownfree(long this_ptr);
-       /// void ClosingSigned_free(LDKClosingSigned this_ptr);
-       public static native void ClosingSignedfree(long this_ptr);
-       /// void UpdateAddHTLC_free(LDKUpdateAddHTLC this_ptr);
-       public static native void UpdateAddHTLCfree(long this_ptr);
-       /// void UpdateFulfillHTLC_free(LDKUpdateFulfillHTLC this_ptr);
-       public static native void UpdateFulfillHTLCfree(long this_ptr);
-       /// void UpdateFailHTLC_free(LDKUpdateFailHTLC this_ptr);
-       public static native void UpdateFailHTLCfree(long this_ptr);
-       /// void UpdateFailMalformedHTLC_free(LDKUpdateFailMalformedHTLC this_ptr);
-       public static native void UpdateFailMalformedHTLCfree(long this_ptr);
-       /// void CommitmentSigned_free(LDKCommitmentSigned this_ptr);
-       public static native void CommitmentSignedfree(long this_ptr);
-       /// void RevokeAndACK_free(LDKRevokeAndACK this_ptr);
-       public static native void RevokeAndACKfree(long this_ptr);
-       /// void UpdateFee_free(LDKUpdateFee this_ptr);
-       public static native void UpdateFeefree(long this_ptr);
-       /// void ChannelReestablish_free(LDKChannelReestablish this_ptr);
-       public static native void ChannelReestablishfree(long this_ptr);
-       /// void AnnouncementSignatures_free(LDKAnnouncementSignatures this_ptr);
-       public static native void AnnouncementSignaturesfree(long this_ptr);
-       /// void NetAddress_free(LDKNetAddress this_ptr);
-       public static native void NetAddressfree(long this_ptr);
-       /// void UnsignedNodeAnnouncement_free(LDKUnsignedNodeAnnouncement this_ptr);
-       public static native void UnsignedNodeAnnouncementfree(long this_ptr);
-       /// LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const LDKUnsignedNodeAnnouncement *this_ptr);
-       public static native long UnsignedNodeAnnouncementgetnodeid(long this_ptr);
-       /// void UnsignedNodeAnnouncement_set_node_id(LDKUnsignedNodeAnnouncement *this_ptr, LDKPublicKey val);
-       public static native void UnsignedNodeAnnouncementsetnodeid(long this_ptr, long val);
-       /// void NodeAnnouncement_free(LDKNodeAnnouncement this_ptr);
-       public static native void NodeAnnouncementfree(long this_ptr);
-       /// void UnsignedChannelAnnouncement_free(LDKUnsignedChannelAnnouncement this_ptr);
-       public static native void UnsignedChannelAnnouncementfree(long this_ptr);
-       /// LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const LDKUnsignedChannelAnnouncement *this_ptr);
-       public static native long UnsignedChannelAnnouncementgetnodeid1(long this_ptr);
-       /// void UnsignedChannelAnnouncement_set_node_id_1(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
-       public static native void UnsignedChannelAnnouncementsetnodeid1(long this_ptr, long val);
-       /// LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const LDKUnsignedChannelAnnouncement *this_ptr);
-       public static native long UnsignedChannelAnnouncementgetnodeid2(long this_ptr);
-       /// void UnsignedChannelAnnouncement_set_node_id_2(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
-       public static native void UnsignedChannelAnnouncementsetnodeid2(long this_ptr, long val);
-       /// void ChannelAnnouncement_free(LDKChannelAnnouncement this_ptr);
-       public static native void ChannelAnnouncementfree(long this_ptr);
-       /// void ChannelUpdate_free(LDKChannelUpdate this_ptr);
-       public static native void ChannelUpdatefree(long this_ptr);
-       /// void ErrorAction_free(LDKErrorAction this_ptr);
-       public static native void ErrorActionfree(long this_ptr);
-       /// void LightningError_free(LDKLightningError this_ptr);
-       public static native void LightningErrorfree(long this_ptr);
-       /// LDKStr LightningError_get_err(const LDKLightningError *this_ptr);
-       public static native long LightningErrorgeterr(long this_ptr);
-       /// void LightningError_set_err(LDKLightningError *this_ptr, LDKCVec_u8Z val);
-       public static native void LightningErrorseterr(long this_ptr, long val);
-       /// LDKErrorAction LightningError_get_action(const LDKLightningError *this_ptr);
-       public static native long LightningErrorgetaction(long this_ptr);
-       /// void LightningError_set_action(LDKLightningError *this_ptr, LDKErrorAction val);
-       public static native void LightningErrorsetaction(long this_ptr, long val);
-       /// MUST_USE_RES LDKLightningError LightningError_new(LDKCVec_u8Z err_arg, LDKErrorAction action_arg);
-       public static native long LightningErrornew(long err_arg, long action_arg);
-       /// void CommitmentUpdate_free(LDKCommitmentUpdate this_ptr);
-       public static native void CommitmentUpdatefree(long this_ptr);
-       /// void CommitmentUpdate_set_update_add_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateAddHTLCZ val);
-       public static native void CommitmentUpdatesetupdateaddhtlcs(long this_ptr, long val);
-       /// void CommitmentUpdate_set_update_fulfill_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFulfillHTLCZ val);
-       public static native void CommitmentUpdatesetupdatefulfillhtlcs(long this_ptr, long val);
-       /// void CommitmentUpdate_set_update_fail_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFailHTLCZ val);
-       public static native void CommitmentUpdatesetupdatefailhtlcs(long this_ptr, long val);
-       /// void CommitmentUpdate_set_update_fail_malformed_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFailMalformedHTLCZ val);
-       public static native void CommitmentUpdatesetupdatefailmalformedhtlcs(long this_ptr, long val);
-       /// LDKUpdateFee CommitmentUpdate_get_update_fee(const LDKCommitmentUpdate *this_ptr);
-       public static native long CommitmentUpdategetupdatefee(long this_ptr);
-       /// void CommitmentUpdate_set_update_fee(LDKCommitmentUpdate *this_ptr, LDKUpdateFee val);
-       public static native void CommitmentUpdatesetupdatefee(long this_ptr, long val);
-       /// LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const LDKCommitmentUpdate *this_ptr);
-       public static native long CommitmentUpdategetcommitmentsigned(long this_ptr);
-       /// void CommitmentUpdate_set_commitment_signed(LDKCommitmentUpdate *this_ptr, LDKCommitmentSigned val);
-       public static native void CommitmentUpdatesetcommitmentsigned(long this_ptr, long val);
-       /// MUST_USE_RES LDKCommitmentUpdate CommitmentUpdate_new(LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, LDKUpdateFee update_fee_arg, LDKCommitmentSigned commitment_signed_arg);
-       public static native long CommitmentUpdatenew(long update_add_htlcs_arg, long update_fulfill_htlcs_arg, long update_fail_htlcs_arg, long update_fail_malformed_htlcs_arg, long update_fee_arg, long commitment_signed_arg);
-       /// void HTLCFailChannelUpdate_free(LDKHTLCFailChannelUpdate this_ptr);
-       public static native void HTLCFailChannelUpdatefree(long this_ptr);
-       /// void ChannelMessageHandler_free(LDKChannelMessageHandler this_ptr);
-       public static native void ChannelMessageHandlerfree(long this_ptr);
-       /// void RoutingMessageHandler_free(LDKRoutingMessageHandler this_ptr);
-       public static native void RoutingMessageHandlerfree(long this_ptr);
-       /// LDKCVec_u8Z AcceptChannel_write(const LDKAcceptChannel *obj);
-       public static native long AcceptChannelwrite(long obj);
-       /// LDKAcceptChannel AcceptChannel_read(LDKu8slice ser);
-       public static native long AcceptChannelread(long ser);
-       /// LDKCVec_u8Z AnnouncementSignatures_write(const LDKAnnouncementSignatures *obj);
-       public static native long AnnouncementSignatureswrite(long obj);
-       /// LDKAnnouncementSignatures AnnouncementSignatures_read(LDKu8slice ser);
-       public static native long AnnouncementSignaturesread(long ser);
-       /// LDKCVec_u8Z ChannelReestablish_write(const LDKChannelReestablish *obj);
-       public static native long ChannelReestablishwrite(long obj);
-       /// LDKChannelReestablish ChannelReestablish_read(LDKu8slice ser);
-       public static native long ChannelReestablishread(long ser);
-       /// LDKCVec_u8Z ClosingSigned_write(const LDKClosingSigned *obj);
-       public static native long ClosingSignedwrite(long obj);
-       /// LDKClosingSigned ClosingSigned_read(LDKu8slice ser);
-       public static native long ClosingSignedread(long ser);
-       /// LDKCVec_u8Z CommitmentSigned_write(const LDKCommitmentSigned *obj);
-       public static native long CommitmentSignedwrite(long obj);
-       /// LDKCommitmentSigned CommitmentSigned_read(LDKu8slice ser);
-       public static native long CommitmentSignedread(long ser);
-       /// LDKCVec_u8Z FundingCreated_write(const LDKFundingCreated *obj);
-       public static native long FundingCreatedwrite(long obj);
-       /// LDKFundingCreated FundingCreated_read(LDKu8slice ser);
-       public static native long FundingCreatedread(long ser);
-       /// LDKCVec_u8Z FundingSigned_write(const LDKFundingSigned *obj);
-       public static native long FundingSignedwrite(long obj);
-       /// LDKFundingSigned FundingSigned_read(LDKu8slice ser);
-       public static native long FundingSignedread(long ser);
-       /// LDKCVec_u8Z FundingLocked_write(const LDKFundingLocked *obj);
-       public static native long FundingLockedwrite(long obj);
-       /// LDKFundingLocked FundingLocked_read(LDKu8slice ser);
-       public static native long FundingLockedread(long ser);
-       /// LDKCVec_u8Z Init_write(const LDKInit *obj);
-       public static native long Initwrite(long obj);
-       /// LDKInit Init_read(LDKu8slice ser);
-       public static native long Initread(long ser);
-       /// LDKCVec_u8Z OpenChannel_write(const LDKOpenChannel *obj);
-       public static native long OpenChannelwrite(long obj);
-       /// LDKOpenChannel OpenChannel_read(LDKu8slice ser);
-       public static native long OpenChannelread(long ser);
-       /// LDKCVec_u8Z RevokeAndACK_write(const LDKRevokeAndACK *obj);
-       public static native long RevokeAndACKwrite(long obj);
-       /// LDKRevokeAndACK RevokeAndACK_read(LDKu8slice ser);
-       public static native long RevokeAndACKread(long ser);
-       /// LDKCVec_u8Z Shutdown_write(const LDKShutdown *obj);
-       public static native long Shutdownwrite(long obj);
-       /// LDKShutdown Shutdown_read(LDKu8slice ser);
-       public static native long Shutdownread(long ser);
-       /// LDKCVec_u8Z UpdateFailHTLC_write(const LDKUpdateFailHTLC *obj);
-       public static native long UpdateFailHTLCwrite(long obj);
-       /// LDKUpdateFailHTLC UpdateFailHTLC_read(LDKu8slice ser);
-       public static native long UpdateFailHTLCread(long ser);
-       /// LDKCVec_u8Z UpdateFailMalformedHTLC_write(const LDKUpdateFailMalformedHTLC *obj);
-       public static native long UpdateFailMalformedHTLCwrite(long obj);
-       /// LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_read(LDKu8slice ser);
-       public static native long UpdateFailMalformedHTLCread(long ser);
-       /// LDKCVec_u8Z UpdateFee_write(const LDKUpdateFee *obj);
-       public static native long UpdateFeewrite(long obj);
-       /// LDKUpdateFee UpdateFee_read(LDKu8slice ser);
-       public static native long UpdateFeeread(long ser);
-       /// LDKCVec_u8Z UpdateFulfillHTLC_write(const LDKUpdateFulfillHTLC *obj);
-       public static native long UpdateFulfillHTLCwrite(long obj);
-       /// LDKUpdateFulfillHTLC UpdateFulfillHTLC_read(LDKu8slice ser);
-       public static native long UpdateFulfillHTLCread(long ser);
-       /// LDKCVec_u8Z UpdateAddHTLC_write(const LDKUpdateAddHTLC *obj);
-       public static native long UpdateAddHTLCwrite(long obj);
-       /// LDKUpdateAddHTLC UpdateAddHTLC_read(LDKu8slice ser);
-       public static native long UpdateAddHTLCread(long ser);
-       /// LDKCVec_u8Z Ping_write(const LDKPing *obj);
-       public static native long Pingwrite(long obj);
-       /// LDKPing Ping_read(LDKu8slice ser);
-       public static native long Pingread(long ser);
-       /// LDKCVec_u8Z Pong_write(const LDKPong *obj);
-       public static native long Pongwrite(long obj);
-       /// LDKPong Pong_read(LDKu8slice ser);
-       public static native long Pongread(long ser);
-       /// LDKCVec_u8Z UnsignedChannelAnnouncement_write(const LDKUnsignedChannelAnnouncement *obj);
-       public static native long UnsignedChannelAnnouncementwrite(long obj);
-       /// LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_read(LDKu8slice ser);
-       public static native long UnsignedChannelAnnouncementread(long ser);
-       /// LDKCVec_u8Z ChannelAnnouncement_write(const LDKChannelAnnouncement *obj);
-       public static native long ChannelAnnouncementwrite(long obj);
-       /// LDKChannelAnnouncement ChannelAnnouncement_read(LDKu8slice ser);
-       public static native long ChannelAnnouncementread(long ser);
-       /// LDKCVec_u8Z ChannelUpdate_write(const LDKChannelUpdate *obj);
-       public static native long ChannelUpdatewrite(long obj);
-       /// LDKChannelUpdate ChannelUpdate_read(LDKu8slice ser);
-       public static native long ChannelUpdateread(long ser);
-       /// LDKCVec_u8Z ErrorMessage_write(const LDKErrorMessage *obj);
-       public static native long ErrorMessagewrite(long obj);
-       /// LDKErrorMessage ErrorMessage_read(LDKu8slice ser);
-       public static native long ErrorMessageread(long ser);
-       /// LDKCVec_u8Z UnsignedNodeAnnouncement_write(const LDKUnsignedNodeAnnouncement *obj);
-       public static native long UnsignedNodeAnnouncementwrite(long obj);
-       /// LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_read(LDKu8slice ser);
-       public static native long UnsignedNodeAnnouncementread(long ser);
-       /// LDKCVec_u8Z NodeAnnouncement_write(const LDKNodeAnnouncement *obj);
-       public static native long NodeAnnouncementwrite(long obj);
-       /// LDKNodeAnnouncement NodeAnnouncement_read(LDKu8slice ser);
-       public static native long NodeAnnouncementread(long ser);
-       /// void MessageHandler_free(LDKMessageHandler this_ptr);
-       public static native void MessageHandlerfree(long this_ptr);
-       /// const LDKChannelMessageHandler *MessageHandler_get_chan_handler(const LDKMessageHandler *this_ptr);
-       public static native long MessageHandlergetchanhandler(long this_ptr);
-       /// void MessageHandler_set_chan_handler(LDKMessageHandler *this_ptr, LDKChannelMessageHandler val);
-       public static native void MessageHandlersetchanhandler(long this_ptr, long val);
-       /// const LDKRoutingMessageHandler *MessageHandler_get_route_handler(const LDKMessageHandler *this_ptr);
-       public static native long MessageHandlergetroutehandler(long this_ptr);
-       /// void MessageHandler_set_route_handler(LDKMessageHandler *this_ptr, LDKRoutingMessageHandler val);
-       public static native void MessageHandlersetroutehandler(long this_ptr, long val);
-       /// MUST_USE_RES LDKMessageHandler MessageHandler_new(LDKChannelMessageHandler chan_handler_arg, LDKRoutingMessageHandler route_handler_arg);
-       public static native long MessageHandlernew(long chan_handler_arg, long route_handler_arg);
-       /// void SocketDescriptor_free(LDKSocketDescriptor this_ptr);
-       public static native void SocketDescriptorfree(long this_ptr);
-       /// void PeerHandleError_free(LDKPeerHandleError this_ptr);
-       public static native void PeerHandleErrorfree(long this_ptr);
-       /// bool PeerHandleError_get_no_connection_possible(const LDKPeerHandleError *this_ptr);
-       public static native boolean PeerHandleErrorgetnoconnectionpossible(long this_ptr);
-       /// void PeerHandleError_set_no_connection_possible(LDKPeerHandleError *this_ptr, bool val);
-       public static native void PeerHandleErrorsetnoconnectionpossible(long this_ptr, boolean va);
-       /// MUST_USE_RES LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
-       public static native long PeerHandleErrornew(boolean no_connection_possible_arg);
-       /// void PeerManager_free(LDKPeerManager this_ptr);
-       public static native void PeerManagerfree(long this_ptr);
-       /// MUST_USE_RES LDKPeerManager PeerManager_new(LDKMessageHandler message_handler, LDKSecretKey our_node_secret, const uint8_t (*ephemeral_random_data)[32], LDKLogger logger);
-       public static native long PeerManagernew(long message_handler, long our_node_secret, byte[] ephemeral_random_data, long logger);
-       /// MUST_USE_RES LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const LDKPeerManager *this_arg);
-       public static native long PeerManagergetpeernodeids(long this_arg);
-       /// MUST_USE_RES LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const LDKPeerManager *this_arg, LDKPublicKey their_node_id, LDKSocketDescriptor descriptor);
-       public static native long PeerManagernewoutboundconnection(long this_arg, long their_node_id, long descriptor);
-       /// MUST_USE_RES LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const LDKPeerManager *this_arg, LDKSocketDescriptor descriptor);
-       public static native long PeerManagernewinboundconnection(long this_arg, long descriptor);
-       /// MUST_USE_RES LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const LDKPeerManager *this_arg, LDKSocketDescriptor *descriptor);
-       public static native long PeerManagerwritebufferspaceavail(long this_arg, long descriptor);
-       /// MUST_USE_RES LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const LDKPeerManager *this_arg, LDKSocketDescriptor *peer_descriptor, LDKu8slice data);
-       public static native long PeerManagerreadevent(long this_arg, long peer_descriptor, long data);
-       /// void PeerManager_process_events(const LDKPeerManager *this_arg);
-       public static native void PeerManagerprocessevents(long this_arg);
-       /// void PeerManager_socket_disconnected(const LDKPeerManager *this_arg, const LDKSocketDescriptor *descriptor);
-       public static native void PeerManagersocketdisconnected(long this_arg, long descriptor);
-       /// void PeerManager_timer_tick_occured(const LDKPeerManager *this_arg);
-       public static native void PeerManagertimertickoccured(long this_arg);
-       /// LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
-       public static native long buildcommitmentsecret(byte[] commitment_seed, long dx);
-       /// void TxCreationKeys_free(LDKTxCreationKeys this_ptr);
-       public static native void TxCreationKeysfree(long this_ptr);
-       /// LDKPublicKey TxCreationKeys_get_per_commitment_point(const LDKTxCreationKeys *this_ptr);
-       public static native long TxCreationKeysgetpercommitmentpoint(long this_ptr);
-       /// void TxCreationKeys_set_per_commitment_point(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
-       public static native void TxCreationKeyssetpercommitmentpoint(long this_ptr, long val);
-       /// LDKCVec_u8Z TxCreationKeys_write(const LDKTxCreationKeys *obj);
-       public static native long TxCreationKeyswrite(long obj);
-       /// LDKTxCreationKeys TxCreationKeys_read(LDKu8slice ser);
-       public static native long TxCreationKeysread(long ser);
-       /// void ChannelPublicKeys_free(LDKChannelPublicKeys this_ptr);
-       public static native void ChannelPublicKeysfree(long this_ptr);
-       /// LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const LDKChannelPublicKeys *this_ptr);
-       public static native long ChannelPublicKeysgetfundingpubkey(long this_ptr);
-       /// void ChannelPublicKeys_set_funding_pubkey(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
-       public static native void ChannelPublicKeyssetfundingpubkey(long this_ptr, long val);
-       /// LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const LDKChannelPublicKeys *this_ptr);
-       public static native long ChannelPublicKeysgetrevocationbasepoint(long this_ptr);
-       /// void ChannelPublicKeys_set_revocation_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
-       public static native void ChannelPublicKeyssetrevocationbasepoint(long this_ptr, long val);
-       /// LDKPublicKey ChannelPublicKeys_get_payment_point(const LDKChannelPublicKeys *this_ptr);
-       public static native long ChannelPublicKeysgetpaymentpoint(long this_ptr);
-       /// void ChannelPublicKeys_set_payment_point(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
-       public static native void ChannelPublicKeyssetpaymentpoint(long this_ptr, long val);
-       /// LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const LDKChannelPublicKeys *this_ptr);
-       public static native long ChannelPublicKeysgetdelayedpaymentbasepoint(long this_ptr);
-       /// void ChannelPublicKeys_set_delayed_payment_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
-       public static native void ChannelPublicKeyssetdelayedpaymentbasepoint(long this_ptr, long val);
-       /// LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const LDKChannelPublicKeys *this_ptr);
-       public static native long ChannelPublicKeysgethtlcbasepoint(long this_ptr);
-       /// void ChannelPublicKeys_set_htlc_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
-       public static native void ChannelPublicKeyssethtlcbasepoint(long this_ptr, long val);
-       /// MUST_USE_RES LDKChannelPublicKeys ChannelPublicKeys_new(LDKPublicKey funding_pubkey_arg, LDKPublicKey revocation_basepoint_arg, LDKPublicKey payment_point_arg, LDKPublicKey delayed_payment_basepoint_arg, LDKPublicKey htlc_basepoint_arg);
-       public static native long ChannelPublicKeysnew(long funding_pubkey_arg, long revocation_basepoint_arg, long payment_point_arg, long delayed_payment_basepoint_arg, long htlc_basepoint_arg);
-       /// LDKCVec_u8Z ChannelPublicKeys_write(const LDKChannelPublicKeys *obj);
-       public static native long ChannelPublicKeyswrite(long obj);
-       /// LDKChannelPublicKeys ChannelPublicKeys_read(LDKu8slice ser);
-       public static native long ChannelPublicKeysread(long ser);
-       /// LDKCVec_u8Z get_revokeable_redeemscript(LDKPublicKey revocation_key, uint16_t to_self_delay, LDKPublicKey delayed_payment_key);
-       public static native long getrevokeableredeemscript(long revocation_key, long to_self_delay, long delayed_payment_key);
-       /// void HTLCOutputInCommitment_free(LDKHTLCOutputInCommitment this_ptr);
-       public static native void HTLCOutputInCommitmentfree(long this_ptr);
-       /// bool HTLCOutputInCommitment_get_offered(const LDKHTLCOutputInCommitment *this_ptr);
-       public static native boolean HTLCOutputInCommitmentgetoffered(long this_ptr);
-       /// void HTLCOutputInCommitment_set_offered(LDKHTLCOutputInCommitment *this_ptr, bool val);
-       public static native void HTLCOutputInCommitmentsetoffered(long this_ptr, boolean va);
-       /// uint64_t HTLCOutputInCommitment_get_amount_msat(const LDKHTLCOutputInCommitment *this_ptr);
-       public static native long HTLCOutputInCommitmentgetamountmsat(long this_ptr);
-       /// void HTLCOutputInCommitment_set_amount_msat(LDKHTLCOutputInCommitment *this_ptr, uint64_t val);
-       public static native void HTLCOutputInCommitmentsetamountmsat(long this_ptr, long val);
-       /// uint32_t HTLCOutputInCommitment_get_cltv_expiry(const LDKHTLCOutputInCommitment *this_ptr);
-       public static native int HTLCOutputInCommitmentgetcltvexpiry(long this_ptr);
-       /// void HTLCOutputInCommitment_set_cltv_expiry(LDKHTLCOutputInCommitment *this_ptr, uint32_t val);
-       public static native void HTLCOutputInCommitmentsetcltvexpiry(long this_ptr, int val);
-       /// const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const LDKHTLCOutputInCommitment *this_ptr))[32];
-       public static native byte[]  HTLCOutputInCommitmentgetpaymenthash(long this_ptr);
-       /// void HTLCOutputInCommitment_set_payment_hash(LDKHTLCOutputInCommitment *this_ptr, LDKThirtyTwoBytes val);
-       public static native void HTLCOutputInCommitmentsetpaymenthash(long this_ptr, long val);
-       /// LDKCVec_u8Z HTLCOutputInCommitment_write(const LDKHTLCOutputInCommitment *obj);
-       public static native long HTLCOutputInCommitmentwrite(long obj);
-       /// LDKHTLCOutputInCommitment HTLCOutputInCommitment_read(LDKu8slice ser);
-       public static native long HTLCOutputInCommitmentread(long ser);
-       /// LDKCVec_u8Z get_htlc_redeemscript(const LDKHTLCOutputInCommitment *htlc, const LDKTxCreationKeys *keys);
-       public static native long gethtlcredeemscript(long htlc, long keys);
-       /// LDKCVec_u8Z make_funding_redeemscript(LDKPublicKey a, LDKPublicKey b);
-       public static native long makefundingredeemscript(long a, long b);
-       /// LDKCVec_u8Z build_htlc_transaction(const uint8_t (*prev_hash)[32], uint32_t feerate_per_kw, uint16_t to_self_delay, const LDKHTLCOutputInCommitment *htlc, LDKPublicKey a_delayed_payment_key, LDKPublicKey revocation_key);
-       public static native long buildhtlctransaction(byte[] prev_hash, int feerate_per_kw, long to_self_delay, long htlc, long a_delayed_payment_key, long revocation_key);
-       /// void LocalCommitmentTransaction_free(LDKLocalCommitmentTransaction this_ptr);
-       public static native void LocalCommitmentTransactionfree(long this_ptr);
-       /// LDKCVec_u8Z LocalCommitmentTransaction_get_unsigned_tx(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native long LocalCommitmentTransactiongetunsignedtx(long this_ptr);
-       /// void LocalCommitmentTransaction_set_unsigned_tx(LDKLocalCommitmentTransaction *this_ptr, LDKCVec_u8Z val);
-       public static native void LocalCommitmentTransactionsetunsignedtx(long this_ptr, long val);
-       /// LDKSignature LocalCommitmentTransaction_get_their_sig(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native long LocalCommitmentTransactiongettheirsig(long this_ptr);
-       /// void LocalCommitmentTransaction_set_their_sig(LDKLocalCommitmentTransaction *this_ptr, LDKSignature val);
-       public static native void LocalCommitmentTransactionsettheirsig(long this_ptr, long val);
-       /// LDKTxCreationKeys LocalCommitmentTransaction_get_local_keys(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native long LocalCommitmentTransactiongetlocalkeys(long this_ptr);
-       /// void LocalCommitmentTransaction_set_local_keys(LDKLocalCommitmentTransaction *this_ptr, LDKTxCreationKeys val);
-       public static native void LocalCommitmentTransactionsetlocalkeys(long this_ptr, long val);
-       /// uint32_t LocalCommitmentTransaction_get_feerate_per_kw(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native int LocalCommitmentTransactiongetfeerateperkw(long this_ptr);
-       /// void LocalCommitmentTransaction_set_feerate_per_kw(LDKLocalCommitmentTransaction *this_ptr, uint32_t val);
-       public static native void LocalCommitmentTransactionsetfeerateperkw(long this_ptr, int val);
-       /// MUST_USE_RES LDKThirtyTwoBytes LocalCommitmentTransaction_txid(const LDKLocalCommitmentTransaction *this_arg);
-       public static native long LocalCommitmentTransactiontxid(long this_arg);
-       /// MUST_USE_RES LDKSignature LocalCommitmentTransaction_get_local_sig(const LDKLocalCommitmentTransaction *this_arg, const uint8_t (*funding_key)[32], LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       public static native long LocalCommitmentTransactiongetlocalsig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
-       /// LDKCVec_u8Z LocalCommitmentTransaction_write(const LDKLocalCommitmentTransaction *obj);
-       public static native long LocalCommitmentTransactionwrite(long obj);
-       /// LDKLocalCommitmentTransaction LocalCommitmentTransaction_read(LDKu8slice ser);
-       public static native long LocalCommitmentTransactionread(long ser);
-       /// void InitFeatures_free(LDKInitFeatures this_ptr);
-       public static native void InitFeaturesfree(long this_ptr);
-       /// void NodeFeatures_free(LDKNodeFeatures this_ptr);
-       public static native void NodeFeaturesfree(long this_ptr);
-       /// void ChannelFeatures_free(LDKChannelFeatures this_ptr);
-       public static native void ChannelFeaturesfree(long this_ptr);
-       /// void RouteHop_free(LDKRouteHop this_ptr);
-       public static native void RouteHopfree(long this_ptr);
-       /// LDKPublicKey RouteHop_get_pubkey(const LDKRouteHop *this_ptr);
-       public static native long RouteHopgetpubkey(long this_ptr);
-       /// void RouteHop_set_pubkey(LDKRouteHop *this_ptr, LDKPublicKey val);
-       public static native void RouteHopsetpubkey(long this_ptr, long val);
-       /// uint64_t RouteHop_get_short_channel_id(const LDKRouteHop *this_ptr);
-       public static native long RouteHopgetshortchannelid(long this_ptr);
-       /// void RouteHop_set_short_channel_id(LDKRouteHop *this_ptr, uint64_t val);
-       public static native void RouteHopsetshortchannelid(long this_ptr, long val);
-       /// uint64_t RouteHop_get_fee_msat(const LDKRouteHop *this_ptr);
-       public static native long RouteHopgetfeemsat(long this_ptr);
-       /// void RouteHop_set_fee_msat(LDKRouteHop *this_ptr, uint64_t val);
-       public static native void RouteHopsetfeemsat(long this_ptr, long val);
-       /// uint32_t RouteHop_get_cltv_expiry_delta(const LDKRouteHop *this_ptr);
-       public static native int RouteHopgetcltvexpirydelta(long this_ptr);
-       /// void RouteHop_set_cltv_expiry_delta(LDKRouteHop *this_ptr, uint32_t val);
-       public static native void RouteHopsetcltvexpirydelta(long this_ptr, int val);
-       /// void Route_free(LDKRoute this_ptr);
-       public static native void Routefree(long this_ptr);
-       /// void Route_set_paths(LDKRoute *this_ptr, LDKCVec_CVec_RouteHopZZ val);
-       public static native void Routesetpaths(long this_ptr, long val);
-       /// MUST_USE_RES LDKRoute Route_new(LDKCVec_CVec_RouteHopZZ paths_arg);
-       public static native long Routenew(long paths_arg);
-       /// LDKCVec_u8Z Route_write(const LDKRoute *obj);
-       public static native long Routewrite(long obj);
-       /// LDKRoute Route_read(LDKu8slice ser);
-       public static native long Routeread(long ser);
-       /// void RouteHint_free(LDKRouteHint this_ptr);
-       public static native void RouteHintfree(long this_ptr);
-       /// LDKPublicKey RouteHint_get_src_node_id(const LDKRouteHint *this_ptr);
-       public static native long RouteHintgetsrcnodeid(long this_ptr);
-       /// void RouteHint_set_src_node_id(LDKRouteHint *this_ptr, LDKPublicKey val);
-       public static native void RouteHintsetsrcnodeid(long this_ptr, long val);
-       /// uint64_t RouteHint_get_short_channel_id(const LDKRouteHint *this_ptr);
-       public static native long RouteHintgetshortchannelid(long this_ptr);
-       /// void RouteHint_set_short_channel_id(LDKRouteHint *this_ptr, uint64_t val);
-       public static native void RouteHintsetshortchannelid(long this_ptr, long val);
-       /// LDKRoutingFees RouteHint_get_fees(const LDKRouteHint *this_ptr);
-       public static native long RouteHintgetfees(long this_ptr);
-       /// void RouteHint_set_fees(LDKRouteHint *this_ptr, LDKRoutingFees val);
-       public static native void RouteHintsetfees(long this_ptr, long val);
-       /// uint16_t RouteHint_get_cltv_expiry_delta(const LDKRouteHint *this_ptr);
-       public static native long RouteHintgetcltvexpirydelta(long this_ptr);
-       /// void RouteHint_set_cltv_expiry_delta(LDKRouteHint *this_ptr, uint16_t val);
-       public static native void RouteHintsetcltvexpirydelta(long this_ptr, long val);
-       /// uint64_t RouteHint_get_htlc_minimum_msat(const LDKRouteHint *this_ptr);
-       public static native long RouteHintgethtlcminimummsat(long this_ptr);
-       /// void RouteHint_set_htlc_minimum_msat(LDKRouteHint *this_ptr, uint64_t val);
-       public static native void RouteHintsethtlcminimummsat(long this_ptr, long val);
-       /// MUST_USE_RES LDKRouteHint RouteHint_new(LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg);
-       public static native long RouteHintnew(long src_node_id_arg, long short_channel_id_arg, long fees_arg, long cltv_expiry_delta_arg, long htlc_minimum_msat_arg);
-       /// LDKCResult_RouteLightningErrorZ get_route(LDKPublicKey our_node_id, const LDKNetworkGraph *network, LDKPublicKey target, const LDKCChannelDetailsSlice *first_hops, LDKCRouteHintSlice last_hops, uint64_t final_value_msat, uint32_t final_cltv, LDKLogger logger);
-       public static native long getroute(long our_node_id, long network, long target, long first_hops, long last_hops, long final_value_msa, int final_cltv, long logger);
-       /// void NetworkGraph_free(LDKNetworkGraph this_ptr);
-       public static native void NetworkGraphfree(long this_ptr);
-       /// void NetGraphMsgHandler_free(LDKNetGraphMsgHandler this_ptr);
-       public static native void NetGraphMsgHandlerfree(long this_ptr);
-       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_new(LDKChainWatchInterface chain_monitor, LDKLogger logger);
-       public static native long NetGraphMsgHandlernew(long chain_monitor, long logger);
-       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(LDKChainWatchInterface chain_monitor, LDKLogger logger, LDKNetworkGraph network_graph);
-       public static native long NetGraphMsgHandlerfromnetgraph(long chain_monitor, long logger, long network_graph);
-       /// LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const LDKNetGraphMsgHandler *this_arg);
-       public static native long NetGraphMsgHandlerasRoutingMessageHandler(long this_arg);
-       /// void DirectionalChannelInfo_free(LDKDirectionalChannelInfo this_ptr);
-       public static native void DirectionalChannelInfofree(long this_ptr);
-       /// uint32_t DirectionalChannelInfo_get_last_update(const LDKDirectionalChannelInfo *this_ptr);
-       public static native int DirectionalChannelInfogetlastupdate(long this_ptr);
-       /// void DirectionalChannelInfo_set_last_update(LDKDirectionalChannelInfo *this_ptr, uint32_t val);
-       public static native void DirectionalChannelInfosetlastupdate(long this_ptr, int val);
-       /// bool DirectionalChannelInfo_get_enabled(const LDKDirectionalChannelInfo *this_ptr);
-       public static native boolean DirectionalChannelInfogetenabled(long this_ptr);
-       /// void DirectionalChannelInfo_set_enabled(LDKDirectionalChannelInfo *this_ptr, bool val);
-       public static native void DirectionalChannelInfosetenabled(long this_ptr, boolean va);
-       /// uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const LDKDirectionalChannelInfo *this_ptr);
-       public static native long DirectionalChannelInfogetcltvexpirydelta(long this_ptr);
-       /// void DirectionalChannelInfo_set_cltv_expiry_delta(LDKDirectionalChannelInfo *this_ptr, uint16_t val);
-       public static native void DirectionalChannelInfosetcltvexpirydelta(long this_ptr, long val);
-       /// uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const LDKDirectionalChannelInfo *this_ptr);
-       public static native long DirectionalChannelInfogethtlcminimummsat(long this_ptr);
-       /// void DirectionalChannelInfo_set_htlc_minimum_msat(LDKDirectionalChannelInfo *this_ptr, uint64_t val);
-       public static native void DirectionalChannelInfosethtlcminimummsat(long this_ptr, long val);
-       /// LDKCVec_u8Z DirectionalChannelInfo_write(const LDKDirectionalChannelInfo *obj);
-       public static native long DirectionalChannelInfowrite(long obj);
-       /// LDKDirectionalChannelInfo DirectionalChannelInfo_read(LDKu8slice ser);
-       public static native long DirectionalChannelInforead(long ser);
-       /// void ChannelInfo_free(LDKChannelInfo this_ptr);
-       public static native void ChannelInfofree(long this_ptr);
-       /// LDKPublicKey ChannelInfo_get_node_one(const LDKChannelInfo *this_ptr);
-       public static native long ChannelInfogetnodeone(long this_ptr);
-       /// void ChannelInfo_set_node_one(LDKChannelInfo *this_ptr, LDKPublicKey val);
-       public static native void ChannelInfosetnodeone(long this_ptr, long val);
-       /// LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const LDKChannelInfo *this_ptr);
-       public static native long ChannelInfogetonetotwo(long this_ptr);
-       /// void ChannelInfo_set_one_to_two(LDKChannelInfo *this_ptr, LDKDirectionalChannelInfo val);
-       public static native void ChannelInfosetonetotwo(long this_ptr, long val);
-       /// LDKPublicKey ChannelInfo_get_node_two(const LDKChannelInfo *this_ptr);
-       public static native long ChannelInfogetnodetwo(long this_ptr);
-       /// void ChannelInfo_set_node_two(LDKChannelInfo *this_ptr, LDKPublicKey val);
-       public static native void ChannelInfosetnodetwo(long this_ptr, long val);
-       /// LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const LDKChannelInfo *this_ptr);
-       public static native long ChannelInfogettwotoone(long this_ptr);
-       /// void ChannelInfo_set_two_to_one(LDKChannelInfo *this_ptr, LDKDirectionalChannelInfo val);
-       public static native void ChannelInfosettwotoone(long this_ptr, long val);
-       /// LDKCVec_u8Z ChannelInfo_write(const LDKChannelInfo *obj);
-       public static native long ChannelInfowrite(long obj);
-       /// LDKChannelInfo ChannelInfo_read(LDKu8slice ser);
-       public static native long ChannelInforead(long ser);
-       /// void RoutingFees_free(LDKRoutingFees this_ptr);
-       public static native void RoutingFeesfree(long this_ptr);
-       /// uint32_t RoutingFees_get_base_msat(const LDKRoutingFees *this_ptr);
-       public static native int RoutingFeesgetbasemsat(long this_ptr);
-       /// void RoutingFees_set_base_msat(LDKRoutingFees *this_ptr, uint32_t val);
-       public static native void RoutingFeessetbasemsat(long this_ptr, int val);
-       /// uint32_t RoutingFees_get_proportional_millionths(const LDKRoutingFees *this_ptr);
-       public static native int RoutingFeesgetproportionalmillionths(long this_ptr);
-       /// void RoutingFees_set_proportional_millionths(LDKRoutingFees *this_ptr, uint32_t val);
-       public static native void RoutingFeessetproportionalmillionths(long this_ptr, int val);
-       /// MUST_USE_RES LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
-       public static native long RoutingFeesnew(int base_msat_arg, int proportional_millionths_arg);
-       /// LDKRoutingFees RoutingFees_read(LDKu8slice ser);
-       public static native long RoutingFeesread(long ser);
-       /// LDKCVec_u8Z RoutingFees_write(const LDKRoutingFees *obj);
-       public static native long RoutingFeeswrite(long obj);
-       /// void NodeAnnouncementInfo_free(LDKNodeAnnouncementInfo this_ptr);
-       public static native void NodeAnnouncementInfofree(long this_ptr);
-       /// uint32_t NodeAnnouncementInfo_get_last_update(const LDKNodeAnnouncementInfo *this_ptr);
-       public static native int NodeAnnouncementInfogetlastupdate(long this_ptr);
-       /// void NodeAnnouncementInfo_set_last_update(LDKNodeAnnouncementInfo *this_ptr, uint32_t val);
-       public static native void NodeAnnouncementInfosetlastupdate(long this_ptr, int val);
-       /// const uint8_t (*NodeAnnouncementInfo_get_rgb(const LDKNodeAnnouncementInfo *this_ptr))[3];
-       public static native byte[]  NodeAnnouncementInfogetrgb(long this_ptr);
-       /// void NodeAnnouncementInfo_set_rgb(LDKNodeAnnouncementInfo *this_ptr, LDKThreeBytes val);
-       public static native void NodeAnnouncementInfosetrgb(long this_ptr, long val);
-       /// const uint8_t (*NodeAnnouncementInfo_get_alias(const LDKNodeAnnouncementInfo *this_ptr))[32];
-       public static native byte[]  NodeAnnouncementInfogetalias(long this_ptr);
-       /// void NodeAnnouncementInfo_set_alias(LDKNodeAnnouncementInfo *this_ptr, LDKThirtyTwoBytes val);
-       public static native void NodeAnnouncementInfosetalias(long this_ptr, long val);
-       /// void NodeAnnouncementInfo_set_addresses(LDKNodeAnnouncementInfo *this_ptr, LDKCVec_NetAddressZ val);
-       public static native void NodeAnnouncementInfosetaddresses(long this_ptr, long val);
-       /// LDKCVec_u8Z NodeAnnouncementInfo_write(const LDKNodeAnnouncementInfo *obj);
-       public static native long NodeAnnouncementInfowrite(long obj);
-       /// LDKNodeAnnouncementInfo NodeAnnouncementInfo_read(LDKu8slice ser);
-       public static native long NodeAnnouncementInforead(long ser);
-       /// void NodeInfo_free(LDKNodeInfo this_ptr);
-       public static native void NodeInfofree(long this_ptr);
-       /// void NodeInfo_set_channels(LDKNodeInfo *this_ptr, LDKCVec_u64Z val);
-       public static native void NodeInfosetchannels(long this_ptr, long val);
-       /// LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const LDKNodeInfo *this_ptr);
-       public static native long NodeInfogetlowestinboundchannelfees(long this_ptr);
-       /// void NodeInfo_set_lowest_inbound_channel_fees(LDKNodeInfo *this_ptr, LDKRoutingFees val);
-       public static native void NodeInfosetlowestinboundchannelfees(long this_ptr, long val);
-       /// LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const LDKNodeInfo *this_ptr);
-       public static native long NodeInfogetannouncementinfo(long this_ptr);
-       /// void NodeInfo_set_announcement_info(LDKNodeInfo *this_ptr, LDKNodeAnnouncementInfo val);
-       public static native void NodeInfosetannouncementinfo(long this_ptr, long val);
-       /// MUST_USE_RES LDKNodeInfo NodeInfo_new(LDKCVec_u64Z channels_arg, LDKRoutingFees lowest_inbound_channel_fees_arg, LDKNodeAnnouncementInfo announcement_info_arg);
-       public static native long NodeInfonew(long channels_arg, long lowest_inbound_channel_fees_arg, long announcement_info_arg);
-       /// LDKCVec_u8Z NodeInfo_write(const LDKNodeInfo *obj);
-       public static native long NodeInfowrite(long obj);
-       /// LDKNodeInfo NodeInfo_read(LDKu8slice ser);
-       public static native long NodeInforead(long ser);
-       /// LDKCVec_u8Z NetworkGraph_write(const LDKNetworkGraph *obj);
-       public static native long NetworkGraphwrite(long obj);
-       /// LDKNetworkGraph NetworkGraph_read(LDKu8slice ser);
-       public static native long NetworkGraphread(long ser);
-       /// MUST_USE_RES LDKNetworkGraph NetworkGraph_new(void);
-       public static native long NetworkGraphnew();
-       /// void NetworkGraph_close_channel_from_update(LDKNetworkGraph *this_arg, uint64_t short_channel_id, bool is_permanent);
-       public static native void NetworkGraphclosechannelfromupdate(long this_arg, long short_channel_id, boolean is_permanent);
-}
diff --git a/src/main/java/org/ldk/impl/bindings.java b/src/main/java/org/ldk/impl/bindings.java
new file mode 100644 (file)
index 0000000..7e43682
--- /dev/null
@@ -0,0 +1,1659 @@
+package org.ldk.impl;
+
+public class bindings {
+       static {
+               System.loadLibrary("lightningjni");
+       }
+
+       public interface LDKMessageSendEventsProvider {
+                void get_and_clear_pending_msg_events(/* TODO + rtype */);
+       }
+       public static native long LDKMessageSendEventsProvider_new(LDKMessageSendEventsProvider impl);
+       public interface LDKEventsProvider {
+                void get_and_clear_pending_events(/* TODO + rtype */);
+       }
+       public static native long LDKEventsProvider_new(LDKEventsProvider impl);
+       public interface LDKLogger {
+                void log(/* TODO + rtype */);
+       }
+       public static native long LDKLogger_new(LDKLogger impl);
+       public interface LDKChainWatchInterface {
+                void install_watch_tx(/* TODO + rtype */);
+                void install_watch_outpoint(/* TODO + rtype */);
+                void watch_all_txn(/* TODO + rtype */);
+                void get_chain_utxo(/* TODO + rtype */);
+                void filter_block(/* TODO + rtype */);
+                void reentered(/* TODO + rtype */);
+       }
+       public static native long LDKChainWatchInterface_new(LDKChainWatchInterface impl);
+       public interface LDKBroadcasterInterface {
+                void broadcast_transaction(/* TODO + rtype */);
+       }
+       public static native long LDKBroadcasterInterface_new(LDKBroadcasterInterface impl);
+       public interface LDKChainListener {
+                void block_connected(/* TODO + rtype */);
+                void block_disconnected(/* TODO + rtype */);
+       }
+       public static native long LDKChainListener_new(LDKChainListener impl);
+       public interface LDKFeeEstimator {
+                void get_est_sat_per_1000_weight(/* TODO + rtype */);
+       }
+       public static native long LDKFeeEstimator_new(LDKFeeEstimator impl);
+       public interface LDKChannelKeys {
+                void get_per_commitment_point(/* TODO + rtype */);
+                void release_commitment_secret(/* TODO + rtype */);
+                void key_derivation_params(/* TODO + rtype */);
+                void sign_remote_commitment(/* TODO + rtype */);
+                void sign_local_commitment(/* TODO + rtype */);
+                void sign_local_commitment_htlc_transactions(/* TODO + rtype */);
+                void sign_justice_transaction(/* TODO + rtype */);
+                void sign_remote_htlc_transaction(/* TODO + rtype */);
+                void sign_closing_transaction(/* TODO + rtype */);
+                void sign_channel_announcement(/* TODO + rtype */);
+                void on_accept(/* TODO + rtype */);
+       }
+       public static native long LDKChannelKeys_new(LDKChannelKeys impl);
+       public interface LDKKeysInterface {
+                void get_node_secret(/* TODO + rtype */);
+                void get_destination_script(/* TODO + rtype */);
+                void get_shutdown_pubkey(/* TODO + rtype */);
+                void get_channel_keys(/* TODO + rtype */);
+                void get_secure_random_bytes(/* TODO + rtype */);
+       }
+       public static native long LDKKeysInterface_new(LDKKeysInterface impl);
+       public interface LDKManyChannelMonitor {
+                void add_monitor(/* TODO + rtype */);
+                void update_monitor(/* TODO + rtype */);
+                void get_and_clear_pending_monitor_events(/* TODO + rtype */);
+       }
+       public static native long LDKManyChannelMonitor_new(LDKManyChannelMonitor impl);
+       public interface LDKChannelMessageHandler {
+                void handle_open_channel(/* TODO + rtype */);
+                void handle_accept_channel(/* TODO + rtype */);
+                void handle_funding_created(/* TODO + rtype */);
+                void handle_funding_signed(/* TODO + rtype */);
+                void handle_funding_locked(/* TODO + rtype */);
+                void handle_shutdown(/* TODO + rtype */);
+                void handle_closing_signed(/* TODO + rtype */);
+                void handle_update_add_htlc(/* TODO + rtype */);
+                void handle_update_fulfill_htlc(/* TODO + rtype */);
+                void handle_update_fail_htlc(/* TODO + rtype */);
+                void handle_update_fail_malformed_htlc(/* TODO + rtype */);
+                void handle_commitment_signed(/* TODO + rtype */);
+                void handle_revoke_and_ack(/* TODO + rtype */);
+                void handle_update_fee(/* TODO + rtype */);
+                void handle_announcement_signatures(/* TODO + rtype */);
+                void peer_disconnected(/* TODO + rtype */);
+                void peer_connected(/* TODO + rtype */);
+                void handle_channel_reestablish(/* TODO + rtype */);
+                void handle_error(/* TODO + rtype */);
+       }
+       public static native long LDKChannelMessageHandler_new(LDKChannelMessageHandler impl);
+       public interface LDKRoutingMessageHandler {
+                void handle_node_announcement(/* TODO + rtype */);
+                void handle_channel_announcement(/* TODO + rtype */);
+                void handle_channel_update(/* TODO + rtype */);
+                void handle_htlc_fail_channel_update(/* TODO + rtype */);
+                void get_next_channel_announcements(/* TODO + rtype */);
+                void get_next_node_announcements(/* TODO + rtype */);
+                void should_request_full_sync(/* TODO + rtype */);
+       }
+       public static native long LDKRoutingMessageHandler_new(LDKRoutingMessageHandler impl);
+       public interface LDKSocketDescriptor {
+                void send_data(/* TODO + rtype */);
+                void disconnect_socket(/* TODO + rtype */);
+                void eq(/* TODO + rtype */);
+                void hash(/* TODO + rtype */);
+       }
+       public static native long LDKSocketDescriptor_new(LDKSocketDescriptor impl);
+       /// extern const void (*C2Tuple_HTLCOutputInCommitmentSignatureZ_free)(LDKC2Tuple_HTLCOutputInCommitmentSignatureZ);
+       public static native void C2Tuple_HTLCOutputInCommitmentSignatureZ_free(long arg);
+       /// extern const void (*C2Tuple_OutPointScriptZ_free)(LDKC2Tuple_OutPointScriptZ);
+       public static native void C2Tuple_OutPointScriptZ_free(long arg);
+       /// extern const void (*C2Tuple_Scriptu64Z_free)(LDKC2Tuple_Scriptu64Z);
+       public static native void C2Tuple_Scriptu64Z_free(long arg);
+       /// extern const void (*C2Tuple_SignatureCVec_SignatureZZ_free)(LDKC2Tuple_SignatureCVec_SignatureZZ);
+       public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long arg);
+       /// extern const void (*C2Tuple_Txidu32Z_free)(LDKC2Tuple_Txidu32Z);
+       public static native void C2Tuple_Txidu32Z_free(long arg);
+       /// extern const void (*C2Tuple_u64u64Z_free)(LDKC2Tuple_u64u64Z);
+       public static native void C2Tuple_u64u64Z_free(long arg);
+       /// extern const void (*C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free)(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ);
+       public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long arg);
+       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_err)(LDKChainError);
+       public static native long CResult_C2Tuple_Scriptu64ZChainErrorZ_err(long arg);
+       /// extern const void (*CResult_C2Tuple_Scriptu64ZChainErrorZ_free)(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ);
+       public static native void CResult_C2Tuple_Scriptu64ZChainErrorZ_free(long arg);
+       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_ok)(LDKC2Tuple_Scriptu64Z);
+       public static native long CResult_C2Tuple_Scriptu64ZChainErrorZ_ok(long arg);
+       /// extern const void (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free)(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ);
+       public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long arg);
+       /// extern const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok)(LDKC2Tuple_SignatureCVec_SignatureZZ);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(long arg);
+       /// extern const void (*CResult_CVec_SignatureZNoneZ_free)(LDKCResult_CVec_SignatureZNoneZ);
+       public static native void CResult_CVec_SignatureZNoneZ_free(long arg);
+       /// extern const LDKCResult_CVec_SignatureZNoneZ (*CResult_CVec_SignatureZNoneZ_ok)(LDKCVec_SignatureZ);
+       public static native long CResult_CVec_SignatureZNoneZ_ok(long arg);
+       /// extern const LDKCResult_CVec_u8ZPeerHandleErrorZ (*CResult_CVec_u8ZPeerHandleErrorZ_err)(LDKPeerHandleError);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long arg);
+       /// extern const void (*CResult_CVec_u8ZPeerHandleErrorZ_free)(LDKCResult_CVec_u8ZPeerHandleErrorZ);
+       public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long arg);
+       /// extern const LDKCResult_CVec_u8ZPeerHandleErrorZ (*CResult_CVec_u8ZPeerHandleErrorZ_ok)(LDKCVec_u8Z);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(long arg);
+       /// extern const LDKCResult_NoneAPIErrorZ (*CResult_NoneAPIErrorZ_err)(LDKAPIError);
+       public static native long CResult_NoneAPIErrorZ_err(long arg);
+       /// extern const void (*CResult_NoneAPIErrorZ_free)(LDKCResult_NoneAPIErrorZ);
+       public static native void CResult_NoneAPIErrorZ_free(long arg);
+       /// extern const LDKCResult_NoneChannelMonitorUpdateErrZ (*CResult_NoneChannelMonitorUpdateErrZ_err)(LDKChannelMonitorUpdateErr);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_err(long arg);
+       /// extern const void (*CResult_NoneChannelMonitorUpdateErrZ_free)(LDKCResult_NoneChannelMonitorUpdateErrZ);
+       public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long arg);
+       /// extern const LDKCResult_NoneMonitorUpdateErrorZ (*CResult_NoneMonitorUpdateErrorZ_err)(LDKMonitorUpdateError);
+       public static native long CResult_NoneMonitorUpdateErrorZ_err(long arg);
+       /// extern const void (*CResult_NoneMonitorUpdateErrorZ_free)(LDKCResult_NoneMonitorUpdateErrorZ);
+       public static native void CResult_NoneMonitorUpdateErrorZ_free(long arg);
+       /// extern const LDKCResult_NonePaymentSendFailureZ (*CResult_NonePaymentSendFailureZ_err)(LDKPaymentSendFailure);
+       public static native long CResult_NonePaymentSendFailureZ_err(long arg);
+       /// extern const void (*CResult_NonePaymentSendFailureZ_free)(LDKCResult_NonePaymentSendFailureZ);
+       public static native void CResult_NonePaymentSendFailureZ_free(long arg);
+       /// extern const LDKCResult_NonePeerHandleErrorZ (*CResult_NonePeerHandleErrorZ_err)(LDKPeerHandleError);
+       public static native long CResult_NonePeerHandleErrorZ_err(long arg);
+       /// extern const void (*CResult_NonePeerHandleErrorZ_free)(LDKCResult_NonePeerHandleErrorZ);
+       public static native void CResult_NonePeerHandleErrorZ_free(long arg);
+       /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_err)(LDKLightningError);
+       public static native long CResult_RouteLightningErrorZ_err(long arg);
+       /// extern const void (*CResult_RouteLightningErrorZ_free)(LDKCResult_RouteLightningErrorZ);
+       public static native void CResult_RouteLightningErrorZ_free(long arg);
+       /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_ok)(LDKRoute);
+       public static native long CResult_RouteLightningErrorZ_ok(long arg);
+       /// extern const void (*CResult_SignatureNoneZ_free)(LDKCResult_SignatureNoneZ);
+       public static native void CResult_SignatureNoneZ_free(long arg);
+       /// extern const LDKCResult_SignatureNoneZ (*CResult_SignatureNoneZ_ok)(LDKSignature);
+       public static native long CResult_SignatureNoneZ_ok(long arg);
+       /// extern const LDKCResult_TxCreationKeysSecpErrorZ (*CResult_TxCreationKeysSecpErrorZ_err)(LDKSecp256k1Error);
+       public static native long CResult_TxCreationKeysSecpErrorZ_err(long arg);
+       /// extern const void (*CResult_TxCreationKeysSecpErrorZ_free)(LDKCResult_TxCreationKeysSecpErrorZ);
+       public static native void CResult_TxCreationKeysSecpErrorZ_free(long arg);
+       /// extern const LDKCResult_TxCreationKeysSecpErrorZ (*CResult_TxCreationKeysSecpErrorZ_ok)(LDKTxCreationKeys);
+       public static native long CResult_TxCreationKeysSecpErrorZ_ok(long arg);
+       /// extern const LDKCResult_boolLightningErrorZ (*CResult_boolLightningErrorZ_err)(LDKLightningError);
+       public static native long CResult_boolLightningErrorZ_err(long arg);
+       /// extern const void (*CResult_boolLightningErrorZ_free)(LDKCResult_boolLightningErrorZ);
+       public static native void CResult_boolLightningErrorZ_free(long arg);
+       /// extern const LDKCResult_boolLightningErrorZ (*CResult_boolLightningErrorZ_ok)(bool);
+       public static native long CResult_boolLightningErrorZ_ok(boolean arg);
+       /// extern const LDKCResult_boolPeerHandleErrorZ (*CResult_boolPeerHandleErrorZ_err)(LDKPeerHandleError);
+       public static native long CResult_boolPeerHandleErrorZ_err(long arg);
+       /// extern const void (*CResult_boolPeerHandleErrorZ_free)(LDKCResult_boolPeerHandleErrorZ);
+       public static native void CResult_boolPeerHandleErrorZ_free(long arg);
+       /// extern const LDKCResult_boolPeerHandleErrorZ (*CResult_boolPeerHandleErrorZ_ok)(bool);
+       public static native long CResult_boolPeerHandleErrorZ_ok(boolean arg);
+       /// extern const void (*CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free)(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ);
+       public static native void CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free(long arg);
+       /// extern const void (*CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free)(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ);
+       public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long arg);
+       /// extern const void (*CVec_CVec_RouteHopZZ_free)(LDKCVec_CVec_RouteHopZZ);
+       public static native void CVec_CVec_RouteHopZZ_free(long arg);
+       /// extern const void (*CVec_ChannelDetailsZ_free)(LDKCVec_ChannelDetailsZ);
+       public static native void CVec_ChannelDetailsZ_free(long arg);
+       /// extern const void (*CVec_ChannelMonitorZ_free)(LDKCVec_ChannelMonitorZ);
+       public static native void CVec_ChannelMonitorZ_free(long arg);
+       /// extern const void (*CVec_EventZ_free)(LDKCVec_EventZ);
+       public static native void CVec_EventZ_free(long arg);
+       /// extern const void (*CVec_HTLCOutputInCommitmentZ_free)(LDKCVec_HTLCOutputInCommitmentZ);
+       public static native void CVec_HTLCOutputInCommitmentZ_free(long arg);
+       /// extern const void (*CVec_MessageSendEventZ_free)(LDKCVec_MessageSendEventZ);
+       public static native void CVec_MessageSendEventZ_free(long arg);
+       /// extern const void (*CVec_MonitorEventZ_free)(LDKCVec_MonitorEventZ);
+       public static native void CVec_MonitorEventZ_free(long arg);
+       /// extern const void (*CVec_NetAddressZ_free)(LDKCVec_NetAddressZ);
+       public static native void CVec_NetAddressZ_free(long arg);
+       /// extern const void (*CVec_NodeAnnouncementZ_free)(LDKCVec_NodeAnnouncementZ);
+       public static native void CVec_NodeAnnouncementZ_free(long arg);
+       /// extern const void (*CVec_PublicKeyZ_free)(LDKCVec_PublicKeyZ);
+       public static native void CVec_PublicKeyZ_free(long arg);
+       /// extern const void (*CVec_RouteHintZ_free)(LDKCVec_RouteHintZ);
+       public static native void CVec_RouteHintZ_free(long arg);
+       /// extern const void (*CVec_RouteHopZ_free)(LDKCVec_RouteHopZ);
+       public static native void CVec_RouteHopZ_free(long arg);
+       /// extern const void (*CVec_SignatureZ_free)(LDKCVec_SignatureZ);
+       public static native void CVec_SignatureZ_free(long arg);
+       /// extern const void (*CVec_SpendableOutputDescriptorZ_free)(LDKCVec_SpendableOutputDescriptorZ);
+       public static native void CVec_SpendableOutputDescriptorZ_free(long arg);
+       /// extern const void (*CVec_TransactionZ_free)(LDKCVec_TransactionZ);
+       public static native void CVec_TransactionZ_free(long arg);
+       /// extern const void (*CVec_UpdateAddHTLCZ_free)(LDKCVec_UpdateAddHTLCZ);
+       public static native void CVec_UpdateAddHTLCZ_free(long arg);
+       /// extern const void (*CVec_UpdateFailHTLCZ_free)(LDKCVec_UpdateFailHTLCZ);
+       public static native void CVec_UpdateFailHTLCZ_free(long arg);
+       /// extern const void (*CVec_UpdateFailMalformedHTLCZ_free)(LDKCVec_UpdateFailMalformedHTLCZ);
+       public static native void CVec_UpdateFailMalformedHTLCZ_free(long arg);
+       /// extern const void (*CVec_UpdateFulfillHTLCZ_free)(LDKCVec_UpdateFulfillHTLCZ);
+       public static native void CVec_UpdateFulfillHTLCZ_free(long arg);
+       /// extern const void (*CVec_u64Z_free)(LDKCVec_u64Z);
+       public static native void CVec_u64Z_free(long arg);
+       /// extern const void (*CVec_u8Z_free)(LDKCVec_u8Z);
+       public static native void CVec_u8Z_free(long arg);
+       /// extern const void (*CVec_usizeZ_free)(LDKCVec_usizeZ);
+       public static native void CVec_usizeZ_free(long arg);
+       /// void TxOut_free(LDKTxOut _res);
+       public static native void TxOut_free(long _res);
+       /// LDKC2Tuple_Txidu32Z C2Tuple_Txidu32Z_new(LDKThirtyTwoBytes a, uint32_t b);
+       public static native long C2Tuple_Txidu32Z_new(long a, int b);
+       /// LDKC2Tuple_Scriptu64Z C2Tuple_Scriptu64Z_new(LDKCVec_u8Z a, uint64_t b);
+       public static native long C2Tuple_Scriptu64Z_new(long a, long b);
+       /// LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b);
+       public static native long C2Tuple_u64u64Z_new(long a, long b);
+       /// LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(LDKSignature a, LDKCVec_SignatureZ b);
+       public static native long C2Tuple_SignatureCVec_SignatureZZ_new(long a, long b);
+       /// LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+       /// LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
+       public static native long CResult_SignatureNoneZ_err();
+       /// LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
+       public static native long CResult_CVec_SignatureZNoneZ_err();
+       /// LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
+       public static native long CResult_NoneAPIErrorZ_ok();
+       /// LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
+       public static native long CResult_NonePaymentSendFailureZ_ok();
+       /// LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
+       /// LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
+       public static native long CResult_NoneMonitorUpdateErrorZ_ok();
+       /// LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(LDKOutPoint a, LDKCVec_u8Z b);
+       public static native long C2Tuple_OutPointScriptZ_new(long a, long b);
+       /// LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(LDKChannelAnnouncement a, LDKChannelUpdate b, LDKChannelUpdate c);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c);
+       /// LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
+       public static native long CResult_NonePeerHandleErrorZ_ok();
+       /// LDKC2Tuple_HTLCOutputInCommitmentSignatureZ C2Tuple_HTLCOutputInCommitmentSignatureZ_new(LDKHTLCOutputInCommitment a, LDKSignature b);
+       public static native long C2Tuple_HTLCOutputInCommitmentSignatureZ_new(long a, long b);
+       /// void Event_free(LDKEvent this_ptr);
+       public static native void Event_free(long this_ptr);
+       /// void MessageSendEvent_free(LDKMessageSendEvent this_ptr);
+       public static native void MessageSendEvent_free(long this_ptr);
+       /// void MessageSendEventsProvider_free(LDKMessageSendEventsProvider this_ptr);
+       public static native void MessageSendEventsProvider_free(long this_ptr);
+       /// void EventsProvider_free(LDKEventsProvider this_ptr);
+       public static native void EventsProvider_free(long this_ptr);
+       /// void APIError_free(LDKAPIError this_ptr);
+       public static native void APIError_free(long this_ptr);
+       /// MUST_USE_RES LDKLevel Level_max(void);
+       public static native long Level_max();
+       /// void Logger_free(LDKLogger this_ptr);
+       public static native void Logger_free(long this_ptr);
+       /// void ChannelHandshakeConfig_free(LDKChannelHandshakeConfig this_ptr);
+       public static native void ChannelHandshakeConfig_free(long this_ptr);
+       /// uint32_t ChannelHandshakeConfig_get_minimum_depth(const LDKChannelHandshakeConfig *this_ptr);
+       public static native int ChannelHandshakeConfig_get_minimum_depth(long this_ptr);
+       /// void ChannelHandshakeConfig_set_minimum_depth(LDKChannelHandshakeConfig *this_ptr, uint32_t val);
+       public static native void ChannelHandshakeConfig_set_minimum_depth(long this_ptr, int val);
+       /// uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const LDKChannelHandshakeConfig *this_ptr);
+       public static native long ChannelHandshakeConfig_get_our_to_self_delay(long this_ptr);
+       /// void ChannelHandshakeConfig_set_our_to_self_delay(LDKChannelHandshakeConfig *this_ptr, uint16_t val);
+       public static native void ChannelHandshakeConfig_set_our_to_self_delay(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const LDKChannelHandshakeConfig *this_ptr);
+       public static native long ChannelHandshakeConfig_get_our_htlc_minimum_msat(long this_ptr);
+       /// void ChannelHandshakeConfig_set_our_htlc_minimum_msat(LDKChannelHandshakeConfig *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeConfig_set_our_htlc_minimum_msat(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
+       public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, long our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
+       /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
+       public static native long ChannelHandshakeConfig_default();
+       /// void ChannelHandshakeLimits_free(LDKChannelHandshakeLimits this_ptr);
+       public static native void ChannelHandshakeLimits_free(long this_ptr);
+       /// uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_min_funding_satoshis(long this_ptr);
+       /// void ChannelHandshakeLimits_set_min_funding_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_min_funding_satoshis(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_max_htlc_minimum_msat(long this_ptr);
+       /// void ChannelHandshakeLimits_set_max_htlc_minimum_msat(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_max_htlc_minimum_msat(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(long this_ptr);
+       /// void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_max_channel_reserve_satoshis(long this_ptr);
+       /// void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(long this_ptr, long val);
+       /// uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_min_max_accepted_htlcs(long this_ptr);
+       /// void ChannelHandshakeLimits_set_min_max_accepted_htlcs(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
+       public static native void ChannelHandshakeLimits_set_min_max_accepted_htlcs(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_min_dust_limit_satoshis(long this_ptr);
+       /// void ChannelHandshakeLimits_set_min_dust_limit_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_min_dust_limit_satoshis(long this_ptr, long val);
+       /// uint64_t ChannelHandshakeLimits_get_max_dust_limit_satoshis(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_max_dust_limit_satoshis(long this_ptr);
+       /// void ChannelHandshakeLimits_set_max_dust_limit_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
+       public static native void ChannelHandshakeLimits_set_max_dust_limit_satoshis(long this_ptr, long val);
+       /// uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const LDKChannelHandshakeLimits *this_ptr);
+       public static native int ChannelHandshakeLimits_get_max_minimum_depth(long this_ptr);
+       /// void ChannelHandshakeLimits_set_max_minimum_depth(LDKChannelHandshakeLimits *this_ptr, uint32_t val);
+       public static native void ChannelHandshakeLimits_set_max_minimum_depth(long this_ptr, int val);
+       /// bool ChannelHandshakeLimits_get_force_announced_channel_preference(const LDKChannelHandshakeLimits *this_ptr);
+       public static native boolean ChannelHandshakeLimits_get_force_announced_channel_preference(long this_ptr);
+       /// void ChannelHandshakeLimits_set_force_announced_channel_preference(LDKChannelHandshakeLimits *this_ptr, bool val);
+       public static native void ChannelHandshakeLimits_set_force_announced_channel_preference(long this_ptr, boolean va);
+       /// uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const LDKChannelHandshakeLimits *this_ptr);
+       public static native long ChannelHandshakeLimits_get_their_to_self_delay(long this_ptr);
+       /// void ChannelHandshakeLimits_set_their_to_self_delay(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
+       public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint64_t min_dust_limit_satoshis_arg, uint64_t max_dust_limit_satoshis_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
+       public static native long ChannelHandshakeLimits_new(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, long min_max_accepted_htlcs_arg, long min_dust_limit_satoshis_arg, long max_dust_limit_satoshis_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, long their_to_self_delay_arg);
+       /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
+       public static native long ChannelHandshakeLimits_default();
+       /// void ChannelConfig_free(LDKChannelConfig this_ptr);
+       public static native void ChannelConfig_free(long this_ptr);
+       /// uint32_t ChannelConfig_get_fee_proportional_millionths(const LDKChannelConfig *this_ptr);
+       public static native int ChannelConfig_get_fee_proportional_millionths(long this_ptr);
+       /// void ChannelConfig_set_fee_proportional_millionths(LDKChannelConfig *this_ptr, uint32_t val);
+       public static native void ChannelConfig_set_fee_proportional_millionths(long this_ptr, int val);
+       /// bool ChannelConfig_get_announced_channel(const LDKChannelConfig *this_ptr);
+       public static native boolean ChannelConfig_get_announced_channel(long this_ptr);
+       /// void ChannelConfig_set_announced_channel(LDKChannelConfig *this_ptr, bool val);
+       public static native void ChannelConfig_set_announced_channel(long this_ptr, boolean va);
+       /// bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const LDKChannelConfig *this_ptr);
+       public static native boolean ChannelConfig_get_commit_upfront_shutdown_pubkey(long this_ptr);
+       /// void ChannelConfig_set_commit_upfront_shutdown_pubkey(LDKChannelConfig *this_ptr, bool val);
+       public static native void ChannelConfig_set_commit_upfront_shutdown_pubkey(long this_ptr, boolean va);
+       /// MUST_USE_RES LDKChannelConfig ChannelConfig_new(uint32_t fee_proportional_millionths_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg);
+       public static native long ChannelConfig_new(int fee_proportional_millionths_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg);
+       /// MUST_USE_RES LDKChannelConfig ChannelConfig_default(void);
+       public static native long ChannelConfig_default();
+       /// LDKCVec_u8Z ChannelConfig_write(const LDKChannelConfig *obj);
+       public static native long ChannelConfig_write(long obj);
+       /// LDKChannelConfig ChannelConfig_read(LDKu8slice ser);
+       public static native long ChannelConfig_read(long ser);
+       /// void UserConfig_free(LDKUserConfig this_ptr);
+       public static native void UserConfig_free(long this_ptr);
+       /// LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const LDKUserConfig *this_ptr);
+       public static native long UserConfig_get_own_channel_config(long this_ptr);
+       /// void UserConfig_set_own_channel_config(LDKUserConfig *this_ptr, LDKChannelHandshakeConfig val);
+       public static native void UserConfig_set_own_channel_config(long this_ptr, long val);
+       /// LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const LDKUserConfig *this_ptr);
+       public static native long UserConfig_get_peer_channel_config_limits(long this_ptr);
+       /// void UserConfig_set_peer_channel_config_limits(LDKUserConfig *this_ptr, LDKChannelHandshakeLimits val);
+       public static native void UserConfig_set_peer_channel_config_limits(long this_ptr, long val);
+       /// LDKChannelConfig UserConfig_get_channel_options(const LDKUserConfig *this_ptr);
+       public static native long UserConfig_get_channel_options(long this_ptr);
+       /// void UserConfig_set_channel_options(LDKUserConfig *this_ptr, LDKChannelConfig val);
+       public static native void UserConfig_set_channel_options(long this_ptr, long val);
+       /// MUST_USE_RES LDKUserConfig UserConfig_new(LDKChannelHandshakeConfig own_channel_config_arg, LDKChannelHandshakeLimits peer_channel_config_limits_arg, LDKChannelConfig channel_options_arg);
+       public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg);
+       /// MUST_USE_RES LDKUserConfig UserConfig_default(void);
+       public static native long UserConfig_default();
+       /// void ChainWatchInterface_free(LDKChainWatchInterface this_ptr);
+       public static native void ChainWatchInterface_free(long this_ptr);
+       /// void BroadcasterInterface_free(LDKBroadcasterInterface this_ptr);
+       public static native void BroadcasterInterface_free(long this_ptr);
+       /// void ChainListener_free(LDKChainListener this_ptr);
+       public static native void ChainListener_free(long this_ptr);
+       /// void FeeEstimator_free(LDKFeeEstimator this_ptr);
+       public static native void FeeEstimator_free(long this_ptr);
+       /// void ChainWatchedUtil_free(LDKChainWatchedUtil this_ptr);
+       public static native void ChainWatchedUtil_free(long this_ptr);
+       /// MUST_USE_RES LDKChainWatchedUtil ChainWatchedUtil_new(void);
+       public static native long ChainWatchedUtil_new();
+       /// MUST_USE_RES bool ChainWatchedUtil_register_tx(LDKChainWatchedUtil *this_arg, const uint8_t (*txid)[32], LDKu8slice script_pub_key);
+       public static native boolean ChainWatchedUtil_register_tx(long this_arg, byte[] txid, long script_pub_key);
+       /// MUST_USE_RES bool ChainWatchedUtil_register_outpoint(LDKChainWatchedUtil *this_arg, LDKC2Tuple_Txidu32Z outpoint, LDKu8slice _script_pub_key);
+       public static native boolean ChainWatchedUtil_register_outpoint(long this_arg, long outpoint, long _script_pub_key);
+       /// MUST_USE_RES bool ChainWatchedUtil_watch_all(LDKChainWatchedUtil *this_arg);
+       public static native boolean ChainWatchedUtil_watch_all(long this_arg);
+       /// MUST_USE_RES bool ChainWatchedUtil_does_match_tx(const LDKChainWatchedUtil *this_arg, LDKTransaction tx);
+       public static native boolean ChainWatchedUtil_does_match_tx(long this_arg, long tx);
+       /// void BlockNotifier_free(LDKBlockNotifier this_ptr);
+       public static native void BlockNotifier_free(long this_ptr);
+       /// MUST_USE_RES LDKBlockNotifier BlockNotifier_new(LDKChainWatchInterface chain_monitor);
+       public static native long BlockNotifier_new(long chain_monitor);
+       /// void BlockNotifier_register_listener(const LDKBlockNotifier *this_arg, LDKChainListener listener);
+       public static native void BlockNotifier_register_listener(long this_arg, long listener);
+       /// void BlockNotifier_block_connected(const LDKBlockNotifier *this_arg, LDKu8slice block, uint32_t height);
+       public static native void BlockNotifier_block_connected(long this_arg, long block, int heigh);
+       /// MUST_USE_RES bool BlockNotifier_block_connected_checked(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t height, LDKCVec_TransactionZ txn_matched, LDKusizeslice indexes_of_txn_matched);
+       public static native boolean BlockNotifier_block_connected_checked(long this_arg, byte[] header, int heigh, long txn_matched, long indexes_of_txn_matched);
+       /// void BlockNotifier_block_disconnected(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
+       public static native void BlockNotifier_block_disconnected(long this_arg, byte[] header, int disconnected_heigh);
+       /// void ChainWatchInterfaceUtil_free(LDKChainWatchInterfaceUtil this_ptr);
+       public static native void ChainWatchInterfaceUtil_free(long this_ptr);
+       /// LDKChainWatchInterface ChainWatchInterfaceUtil_as_ChainWatchInterface(const LDKChainWatchInterfaceUtil *this_arg);
+       public static native long ChainWatchInterfaceUtil_as_ChainWatchInterface(long this_arg);
+       /// MUST_USE_RES LDKChainWatchInterfaceUtil ChainWatchInterfaceUtil_new(LDKNetwork network);
+       public static native long ChainWatchInterfaceUtil_new(long network);
+       /// MUST_USE_RES bool ChainWatchInterfaceUtil_does_match_tx(const LDKChainWatchInterfaceUtil *this_arg, LDKTransaction tx);
+       public static native boolean ChainWatchInterfaceUtil_does_match_tx(long this_arg, long tx);
+       /// void OutPoint_free(LDKOutPoint this_ptr);
+       public static native void OutPoint_free(long this_ptr);
+       /// const uint8_t (*OutPoint_get_txid(const LDKOutPoint *this_ptr))[32];
+       public static native byte[]  OutPoint_get_txid(long this_ptr);
+       /// void OutPoint_set_txid(LDKOutPoint *this_ptr, LDKThirtyTwoBytes val);
+       public static native void OutPoint_set_txid(long this_ptr, long val);
+       /// uint16_t OutPoint_get_index(const LDKOutPoint *this_ptr);
+       public static native long OutPoint_get_index(long this_ptr);
+       /// void OutPoint_set_index(LDKOutPoint *this_ptr, uint16_t val);
+       public static native void OutPoint_set_index(long this_ptr, long val);
+       /// MUST_USE_RES LDKOutPoint OutPoint_new(LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
+       public static native long OutPoint_new(long txid_arg, long index_arg);
+       /// MUST_USE_RES LDKThirtyTwoBytes OutPoint_to_channel_id(const LDKOutPoint *this_arg);
+       public static native long OutPoint_to_channel_id(long this_arg);
+       /// LDKCVec_u8Z OutPoint_write(const LDKOutPoint *obj);
+       public static native long OutPoint_write(long obj);
+       /// LDKOutPoint OutPoint_read(LDKu8slice ser);
+       public static native long OutPoint_read(long ser);
+       /// void SpendableOutputDescriptor_free(LDKSpendableOutputDescriptor this_ptr);
+       public static native void SpendableOutputDescriptor_free(long this_ptr);
+       /// void ChannelKeys_free(LDKChannelKeys this_ptr);
+       public static native void ChannelKeys_free(long this_ptr);
+       /// void KeysInterface_free(LDKKeysInterface this_ptr);
+       public static native void KeysInterface_free(long this_ptr);
+       /// void InMemoryChannelKeys_free(LDKInMemoryChannelKeys this_ptr);
+       public static native void InMemoryChannelKeys_free(long this_ptr);
+       /// const uint8_t (*InMemoryChannelKeys_get_funding_key(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_funding_key(long this_ptr);
+       /// void InMemoryChannelKeys_set_funding_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
+       public static native void InMemoryChannelKeys_set_funding_key(long this_ptr, long val);
+       /// const uint8_t (*InMemoryChannelKeys_get_revocation_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_revocation_base_key(long this_ptr);
+       /// void InMemoryChannelKeys_set_revocation_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
+       public static native void InMemoryChannelKeys_set_revocation_base_key(long this_ptr, long val);
+       /// const uint8_t (*InMemoryChannelKeys_get_payment_key(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_payment_key(long this_ptr);
+       /// void InMemoryChannelKeys_set_payment_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
+       public static native void InMemoryChannelKeys_set_payment_key(long this_ptr, long val);
+       /// const uint8_t (*InMemoryChannelKeys_get_delayed_payment_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_delayed_payment_base_key(long this_ptr);
+       /// void InMemoryChannelKeys_set_delayed_payment_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
+       public static native void InMemoryChannelKeys_set_delayed_payment_base_key(long this_ptr, long val);
+       /// const uint8_t (*InMemoryChannelKeys_get_htlc_base_key(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_htlc_base_key(long this_ptr);
+       /// void InMemoryChannelKeys_set_htlc_base_key(LDKInMemoryChannelKeys *this_ptr, LDKSecretKey val);
+       public static native void InMemoryChannelKeys_set_htlc_base_key(long this_ptr, long val);
+       /// const uint8_t (*InMemoryChannelKeys_get_commitment_seed(const LDKInMemoryChannelKeys *this_ptr))[32];
+       public static native byte[]  InMemoryChannelKeys_get_commitment_seed(long this_ptr);
+       /// void InMemoryChannelKeys_set_commitment_seed(LDKInMemoryChannelKeys *this_ptr, LDKThirtyTwoBytes val);
+       public static native void InMemoryChannelKeys_set_commitment_seed(long this_ptr, long val);
+       /// MUST_USE_RES LDKInMemoryChannelKeys InMemoryChannelKeys_new(LDKSecretKey funding_key, LDKSecretKey revocation_base_key, LDKSecretKey payment_key, LDKSecretKey delayed_payment_base_key, LDKSecretKey htlc_base_key, LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, LDKC2Tuple_u64u64Z key_derivation_params);
+       public static native long InMemoryChannelKeys_new(long funding_key, long revocation_base_key, long payment_key, long delayed_payment_base_key, long htlc_base_key, long commitment_seed, long channel_value_satoshis, long key_derivation_params);
+       /// MUST_USE_RES LDKChannelPublicKeys InMemoryChannelKeys_remote_pubkeys(const LDKInMemoryChannelKeys *this_arg);
+       public static native long InMemoryChannelKeys_remote_pubkeys(long this_arg);
+       /// MUST_USE_RES uint16_t InMemoryChannelKeys_remote_to_self_delay(const LDKInMemoryChannelKeys *this_arg);
+       public static native long InMemoryChannelKeys_remote_to_self_delay(long this_arg);
+       /// MUST_USE_RES uint16_t InMemoryChannelKeys_local_to_self_delay(const LDKInMemoryChannelKeys *this_arg);
+       public static native long InMemoryChannelKeys_local_to_self_delay(long this_arg);
+       /// LDKChannelKeys InMemoryChannelKeys_as_ChannelKeys(const LDKInMemoryChannelKeys *this_arg);
+       public static native long InMemoryChannelKeys_as_ChannelKeys(long this_arg);
+       /// LDKCVec_u8Z InMemoryChannelKeys_write(const LDKInMemoryChannelKeys *obj);
+       public static native long InMemoryChannelKeys_write(long obj);
+       /// LDKInMemoryChannelKeys InMemoryChannelKeys_read(LDKu8slice ser);
+       public static native long InMemoryChannelKeys_read(long ser);
+       /// void KeysManager_free(LDKKeysManager this_ptr);
+       public static native void KeysManager_free(long this_ptr);
+       /// MUST_USE_RES LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], LDKNetwork network, uint64_t starting_time_secs, uint32_t starting_time_nanos);
+       public static native long KeysManager_new(byte[] seed, long network, long starting_time_secs, int starting_time_nanos);
+       /// MUST_USE_RES LDKInMemoryChannelKeys KeysManager_derive_channel_keys(const LDKKeysManager *this_arg, uint64_t channel_value_satoshis, uint64_t params_1, uint64_t params_2);
+       public static native long KeysManager_derive_channel_keys(long this_arg, long channel_value_satoshis, long params_1, long params_2);
+       /// LDKKeysInterface KeysManager_as_KeysInterface(const LDKKeysManager *this_arg);
+       public static native long KeysManager_as_KeysInterface(long this_arg);
+       /// void ChannelManager_free(LDKChannelManager this_ptr);
+       public static native void ChannelManager_free(long this_ptr);
+       /// void ChannelDetails_free(LDKChannelDetails this_ptr);
+       public static native void ChannelDetails_free(long this_ptr);
+       /// const uint8_t (*ChannelDetails_get_channel_id(const LDKChannelDetails *this_ptr))[32];
+       public static native byte[]  ChannelDetails_get_channel_id(long this_ptr);
+       /// void ChannelDetails_set_channel_id(LDKChannelDetails *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ChannelDetails_set_channel_id(long this_ptr, long val);
+       /// LDKPublicKey ChannelDetails_get_remote_network_id(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_remote_network_id(long this_ptr);
+       /// void ChannelDetails_set_remote_network_id(LDKChannelDetails *this_ptr, LDKPublicKey val);
+       public static native void ChannelDetails_set_remote_network_id(long this_ptr, long val);
+       /// LDKInitFeatures ChannelDetails_get_counterparty_features(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_counterparty_features(long this_ptr);
+       /// void ChannelDetails_set_counterparty_features(LDKChannelDetails *this_ptr, LDKInitFeatures val);
+       public static native void ChannelDetails_set_counterparty_features(long this_ptr, long val);
+       /// uint64_t ChannelDetails_get_channel_value_satoshis(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_channel_value_satoshis(long this_ptr);
+       /// void ChannelDetails_set_channel_value_satoshis(LDKChannelDetails *this_ptr, uint64_t val);
+       public static native void ChannelDetails_set_channel_value_satoshis(long this_ptr, long val);
+       /// uint64_t ChannelDetails_get_user_id(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_user_id(long this_ptr);
+       /// void ChannelDetails_set_user_id(LDKChannelDetails *this_ptr, uint64_t val);
+       public static native void ChannelDetails_set_user_id(long this_ptr, long val);
+       /// uint64_t ChannelDetails_get_outbound_capacity_msat(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_outbound_capacity_msat(long this_ptr);
+       /// void ChannelDetails_set_outbound_capacity_msat(LDKChannelDetails *this_ptr, uint64_t val);
+       public static native void ChannelDetails_set_outbound_capacity_msat(long this_ptr, long val);
+       /// uint64_t ChannelDetails_get_inbound_capacity_msat(const LDKChannelDetails *this_ptr);
+       public static native long ChannelDetails_get_inbound_capacity_msat(long this_ptr);
+       /// void ChannelDetails_set_inbound_capacity_msat(LDKChannelDetails *this_ptr, uint64_t val);
+       public static native void ChannelDetails_set_inbound_capacity_msat(long this_ptr, long val);
+       /// bool ChannelDetails_get_is_live(const LDKChannelDetails *this_ptr);
+       public static native boolean ChannelDetails_get_is_live(long this_ptr);
+       /// void ChannelDetails_set_is_live(LDKChannelDetails *this_ptr, bool val);
+       public static native void ChannelDetails_set_is_live(long this_ptr, boolean va);
+       /// void PaymentSendFailure_free(LDKPaymentSendFailure this_ptr);
+       public static native void PaymentSendFailure_free(long this_ptr);
+       /// MUST_USE_RES LDKChannelManager ChannelManager_new(LDKNetwork network, LDKFeeEstimator fee_est, LDKManyChannelMonitor monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKKeysInterface keys_manager, LDKUserConfig config, uintptr_t current_blockchain_height);
+       public static native long ChannelManager_new(long network, long fee_est, long monitor, long tx_broadcaster, long logger, long keys_manager, long config, long current_blockchain_height);
+       /// MUST_USE_RES LDKCResult_NoneAPIErrorZ ChannelManager_create_channel(const LDKChannelManager *this_arg, LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_id, LDKUserConfig override_config);
+       public static native long ChannelManager_create_channel(long this_arg, long their_network_key, long channel_value_satoshis, long push_msa, long ser_id, long override_config);
+       /// MUST_USE_RES LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_list_channels(long this_arg);
+       /// MUST_USE_RES LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_list_usable_channels(long this_arg);
+       /// MUST_USE_RES LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const LDKChannelManager *this_arg, const uint8_t (*channel_id)[32]);
+       public static native long ChannelManager_close_channel(long this_arg, byte[] channel_id);
+       /// void ChannelManager_force_close_channel(const LDKChannelManager *this_arg, const uint8_t (*channel_id)[32]);
+       public static native void ChannelManager_force_close_channel(long this_arg, byte[] channel_id);
+       /// void ChannelManager_force_close_all_channels(const LDKChannelManager *this_arg);
+       public static native void ChannelManager_force_close_all_channels(long this_arg);
+       /// MUST_USE_RES LDKCResult_NonePaymentSendFailureZ ChannelManager_send_payment(const LDKChannelManager *this_arg, const LDKRoute *route, LDKThirtyTwoBytes payment_hash, LDKThirtyTwoBytes payment_secret);
+       public static native long ChannelManager_send_payment(long this_arg, long route, long payment_hash, long payment_secret);
+       /// void ChannelManager_funding_transaction_generated(const LDKChannelManager *this_arg, const uint8_t (*temporary_channel_id)[32], LDKOutPoint funding_txo);
+       public static native void ChannelManager_funding_transaction_generated(long this_arg, byte[] temporary_channel_id, long funding_txo);
+       /// void ChannelManager_broadcast_node_announcement(const LDKChannelManager *this_arg, LDKThreeBytes rgb, LDKThirtyTwoBytes alias, LDKCVec_NetAddressZ addresses);
+       public static native void ChannelManager_broadcast_node_announcement(long this_arg, long rgb, long alias, long addresses);
+       /// void ChannelManager_process_pending_htlc_forwards(const LDKChannelManager *this_arg);
+       public static native void ChannelManager_process_pending_htlc_forwards(long this_arg);
+       /// void ChannelManager_timer_chan_freshness_every_min(const LDKChannelManager *this_arg);
+       public static native void ChannelManager_timer_chan_freshness_every_min(long this_arg);
+       /// MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const LDKChannelManager *this_arg, const uint8_t (*payment_hash)[32], LDKThirtyTwoBytes payment_secret);
+       public static native boolean ChannelManager_fail_htlc_backwards(long this_arg, byte[] payment_hash, long payment_secret);
+       /// MUST_USE_RES bool ChannelManager_claim_funds(const LDKChannelManager *this_arg, LDKThirtyTwoBytes payment_preimage, LDKThirtyTwoBytes payment_secret, uint64_t expected_amount);
+       public static native boolean ChannelManager_claim_funds(long this_arg, long payment_preimage, long payment_secret, long expected_amo);
+       /// MUST_USE_RES LDKPublicKey ChannelManager_get_our_node_id(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_get_our_node_id(long this_arg);
+       /// void ChannelManager_channel_monitor_updated(const LDKChannelManager *this_arg, const LDKOutPoint *funding_txo, uint64_t highest_applied_update_id);
+       public static native void ChannelManager_channel_monitor_updated(long this_arg, long funding_txo, long highest_applied_update_id);
+       /// LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_as_MessageSendEventsProvider(long this_arg);
+       /// LDKEventsProvider ChannelManager_as_EventsProvider(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_as_EventsProvider(long this_arg);
+       /// LDKChainListener ChannelManager_as_ChainListener(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_as_ChainListener(long this_arg);
+       /// LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const LDKChannelManager *this_arg);
+       public static native long ChannelManager_as_ChannelMessageHandler(long this_arg);
+       /// void ChannelManagerReadArgs_free(LDKChannelManagerReadArgs this_ptr);
+       public static native void ChannelManagerReadArgs_free(long this_ptr);
+       /// const LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_keys_manager(long this_ptr);
+       /// void ChannelManagerReadArgs_set_keys_manager(LDKChannelManagerReadArgs *this_ptr, LDKKeysInterface val);
+       public static native void ChannelManagerReadArgs_set_keys_manager(long this_ptr, long val);
+       /// const LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_fee_estimator(long this_ptr);
+       /// void ChannelManagerReadArgs_set_fee_estimator(LDKChannelManagerReadArgs *this_ptr, LDKFeeEstimator val);
+       public static native void ChannelManagerReadArgs_set_fee_estimator(long this_ptr, long val);
+       /// const LDKManyChannelMonitor *ChannelManagerReadArgs_get_monitor(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_monitor(long this_ptr);
+       /// void ChannelManagerReadArgs_set_monitor(LDKChannelManagerReadArgs *this_ptr, LDKManyChannelMonitor val);
+       public static native void ChannelManagerReadArgs_set_monitor(long this_ptr, long val);
+       /// const LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_tx_broadcaster(long this_ptr);
+       /// void ChannelManagerReadArgs_set_tx_broadcaster(LDKChannelManagerReadArgs *this_ptr, LDKBroadcasterInterface val);
+       public static native void ChannelManagerReadArgs_set_tx_broadcaster(long this_ptr, long val);
+       /// const LDKLogger *ChannelManagerReadArgs_get_logger(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_logger(long this_ptr);
+       /// void ChannelManagerReadArgs_set_logger(LDKChannelManagerReadArgs *this_ptr, LDKLogger val);
+       public static native void ChannelManagerReadArgs_set_logger(long this_ptr, long val);
+       /// LDKUserConfig ChannelManagerReadArgs_get_default_config(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_default_config(long this_ptr);
+       /// void ChannelManagerReadArgs_set_default_config(LDKChannelManagerReadArgs *this_ptr, LDKUserConfig val);
+       public static native void ChannelManagerReadArgs_set_default_config(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelManagerReadArgs ChannelManagerReadArgs_new(LDKKeysInterface keys_manager, LDKFeeEstimator fee_estimator, LDKManyChannelMonitor monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKUserConfig default_config, LDKCVec_ChannelMonitorZ channel_monitors);
+       public static native long ChannelManagerReadArgs_new(long keys_manager, long fee_estimator, long monitor, long tx_broadcaster, long logger, long default_config, long channel_monitors);
+       /// void ChannelMonitorUpdate_free(LDKChannelMonitorUpdate this_ptr);
+       public static native void ChannelMonitorUpdate_free(long this_ptr);
+       /// uint64_t ChannelMonitorUpdate_get_update_id(const LDKChannelMonitorUpdate *this_ptr);
+       public static native long ChannelMonitorUpdate_get_update_id(long this_ptr);
+       /// void ChannelMonitorUpdate_set_update_id(LDKChannelMonitorUpdate *this_ptr, uint64_t val);
+       public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val);
+       /// LDKCVec_u8Z ChannelMonitorUpdate_write(const LDKChannelMonitorUpdate *obj);
+       public static native long ChannelMonitorUpdate_write(long obj);
+       /// LDKChannelMonitorUpdate ChannelMonitorUpdate_read(LDKu8slice ser);
+       public static native long ChannelMonitorUpdate_read(long ser);
+       /// void MonitorUpdateError_free(LDKMonitorUpdateError this_ptr);
+       public static native void MonitorUpdateError_free(long this_ptr);
+       /// void MonitorEvent_free(LDKMonitorEvent this_ptr);
+       public static native void MonitorEvent_free(long this_ptr);
+       /// void HTLCUpdate_free(LDKHTLCUpdate this_ptr);
+       public static native void HTLCUpdate_free(long this_ptr);
+       /// LDKCVec_u8Z HTLCUpdate_write(const LDKHTLCUpdate *obj);
+       public static native long HTLCUpdate_write(long obj);
+       /// LDKHTLCUpdate HTLCUpdate_read(LDKu8slice ser);
+       public static native long HTLCUpdate_read(long ser);
+       /// void ChannelMonitor_free(LDKChannelMonitor this_ptr);
+       public static native void ChannelMonitor_free(long this_ptr);
+       /// void ManyChannelMonitor_free(LDKManyChannelMonitor this_ptr);
+       public static native void ManyChannelMonitor_free(long this_ptr);
+       /// MUST_USE_RES LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(LDKChannelMonitor *this_arg, LDKChannelMonitorUpdate updates, const LDKBroadcasterInterface *broadcaster, const LDKLogger *logger);
+       public static native long ChannelMonitor_update_monitor(long this_arg, long updates, long broadcaster, long logger);
+       /// MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_latest_update_id(long this_arg);
+       /// MUST_USE_RES LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_funding_txo(long this_arg);
+       /// MUST_USE_RES LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_and_clear_pending_monitor_events(long this_arg);
+       /// MUST_USE_RES LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_and_clear_pending_events(long this_arg);
+       /// MUST_USE_RES LDKCVec_TransactionZ ChannelMonitor_get_latest_local_commitment_txn(LDKChannelMonitor *this_arg, const LDKLogger *logger);
+       public static native long ChannelMonitor_get_latest_local_commitment_txn(long this_arg, long logger);
+       /// void DecodeError_free(LDKDecodeError this_ptr);
+       public static native void DecodeError_free(long this_ptr);
+       /// void Init_free(LDKInit this_ptr);
+       public static native void Init_free(long this_ptr);
+       /// void ErrorMessage_free(LDKErrorMessage this_ptr);
+       public static native void ErrorMessage_free(long this_ptr);
+       /// const uint8_t (*ErrorMessage_get_channel_id(const LDKErrorMessage *this_ptr))[32];
+       public static native byte[]  ErrorMessage_get_channel_id(long this_ptr);
+       /// void ErrorMessage_set_channel_id(LDKErrorMessage *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ErrorMessage_set_channel_id(long this_ptr, long val);
+       /// LDKStr ErrorMessage_get_data(const LDKErrorMessage *this_ptr);
+       public static native long ErrorMessage_get_data(long this_ptr);
+       /// void ErrorMessage_set_data(LDKErrorMessage *this_ptr, LDKCVec_u8Z val);
+       public static native void ErrorMessage_set_data(long this_ptr, long val);
+       /// MUST_USE_RES LDKErrorMessage ErrorMessage_new(LDKThirtyTwoBytes channel_id_arg, LDKCVec_u8Z data_arg);
+       public static native long ErrorMessage_new(long channel_id_arg, long data_arg);
+       /// void Ping_free(LDKPing this_ptr);
+       public static native void Ping_free(long this_ptr);
+       /// uint16_t Ping_get_ponglen(const LDKPing *this_ptr);
+       public static native long Ping_get_ponglen(long this_ptr);
+       /// void Ping_set_ponglen(LDKPing *this_ptr, uint16_t val);
+       public static native void Ping_set_ponglen(long this_ptr, long val);
+       /// uint16_t Ping_get_byteslen(const LDKPing *this_ptr);
+       public static native long Ping_get_byteslen(long this_ptr);
+       /// void Ping_set_byteslen(LDKPing *this_ptr, uint16_t val);
+       public static native void Ping_set_byteslen(long this_ptr, long val);
+       /// MUST_USE_RES LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
+       public static native long Ping_new(long ponglen_arg, long byteslen_arg);
+       /// void Pong_free(LDKPong this_ptr);
+       public static native void Pong_free(long this_ptr);
+       /// uint16_t Pong_get_byteslen(const LDKPong *this_ptr);
+       public static native long Pong_get_byteslen(long this_ptr);
+       /// void Pong_set_byteslen(LDKPong *this_ptr, uint16_t val);
+       public static native void Pong_set_byteslen(long this_ptr, long val);
+       /// MUST_USE_RES LDKPong Pong_new(uint16_t byteslen_arg);
+       public static native long Pong_new(long byteslen_arg);
+       /// void OpenChannel_free(LDKOpenChannel this_ptr);
+       public static native void OpenChannel_free(long this_ptr);
+       /// const uint8_t (*OpenChannel_get_chain_hash(const LDKOpenChannel *this_ptr))[32];
+       public static native byte[]  OpenChannel_get_chain_hash(long this_ptr);
+       /// void OpenChannel_set_chain_hash(LDKOpenChannel *this_ptr, LDKThirtyTwoBytes val);
+       public static native void OpenChannel_set_chain_hash(long this_ptr, long val);
+       /// const uint8_t (*OpenChannel_get_temporary_channel_id(const LDKOpenChannel *this_ptr))[32];
+       public static native byte[]  OpenChannel_get_temporary_channel_id(long this_ptr);
+       /// void OpenChannel_set_temporary_channel_id(LDKOpenChannel *this_ptr, LDKThirtyTwoBytes val);
+       public static native void OpenChannel_set_temporary_channel_id(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_funding_satoshis(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_funding_satoshis(long this_ptr);
+       /// void OpenChannel_set_funding_satoshis(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_funding_satoshis(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_push_msat(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_push_msat(long this_ptr);
+       /// void OpenChannel_set_push_msat(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_push_msat(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_dust_limit_satoshis(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_dust_limit_satoshis(long this_ptr);
+       /// void OpenChannel_set_dust_limit_satoshis(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_dust_limit_satoshis(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_max_htlc_value_in_flight_msat(long this_ptr);
+       /// void OpenChannel_set_max_htlc_value_in_flight_msat(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_max_htlc_value_in_flight_msat(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_channel_reserve_satoshis(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_channel_reserve_satoshis(long this_ptr);
+       /// void OpenChannel_set_channel_reserve_satoshis(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_channel_reserve_satoshis(long this_ptr, long val);
+       /// uint64_t OpenChannel_get_htlc_minimum_msat(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_htlc_minimum_msat(long this_ptr);
+       /// void OpenChannel_set_htlc_minimum_msat(LDKOpenChannel *this_ptr, uint64_t val);
+       public static native void OpenChannel_set_htlc_minimum_msat(long this_ptr, long val);
+       /// uint32_t OpenChannel_get_feerate_per_kw(const LDKOpenChannel *this_ptr);
+       public static native int OpenChannel_get_feerate_per_kw(long this_ptr);
+       /// void OpenChannel_set_feerate_per_kw(LDKOpenChannel *this_ptr, uint32_t val);
+       public static native void OpenChannel_set_feerate_per_kw(long this_ptr, int val);
+       /// uint16_t OpenChannel_get_to_self_delay(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_to_self_delay(long this_ptr);
+       /// void OpenChannel_set_to_self_delay(LDKOpenChannel *this_ptr, uint16_t val);
+       public static native void OpenChannel_set_to_self_delay(long this_ptr, long val);
+       /// uint16_t OpenChannel_get_max_accepted_htlcs(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_max_accepted_htlcs(long this_ptr);
+       /// void OpenChannel_set_max_accepted_htlcs(LDKOpenChannel *this_ptr, uint16_t val);
+       public static native void OpenChannel_set_max_accepted_htlcs(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_funding_pubkey(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_funding_pubkey(long this_ptr);
+       /// void OpenChannel_set_funding_pubkey(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_funding_pubkey(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_revocation_basepoint(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_revocation_basepoint(long this_ptr);
+       /// void OpenChannel_set_revocation_basepoint(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_revocation_basepoint(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_payment_point(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_payment_point(long this_ptr);
+       /// void OpenChannel_set_payment_point(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_payment_point(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_delayed_payment_basepoint(long this_ptr);
+       /// void OpenChannel_set_delayed_payment_basepoint(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_delayed_payment_basepoint(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_htlc_basepoint(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_htlc_basepoint(long this_ptr);
+       /// void OpenChannel_set_htlc_basepoint(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_htlc_basepoint(long this_ptr, long val);
+       /// LDKPublicKey OpenChannel_get_first_per_commitment_point(const LDKOpenChannel *this_ptr);
+       public static native long OpenChannel_get_first_per_commitment_point(long this_ptr);
+       /// void OpenChannel_set_first_per_commitment_point(LDKOpenChannel *this_ptr, LDKPublicKey val);
+       public static native void OpenChannel_set_first_per_commitment_point(long this_ptr, long val);
+       /// uint8_t OpenChannel_get_channel_flags(const LDKOpenChannel *this_ptr);
+       public static native byte OpenChannel_get_channel_flags(long this_ptr);
+       /// void OpenChannel_set_channel_flags(LDKOpenChannel *this_ptr, uint8_t val);
+       public static native void OpenChannel_set_channel_flags(long this_ptr, byte val);
+       /// void AcceptChannel_free(LDKAcceptChannel this_ptr);
+       public static native void AcceptChannel_free(long this_ptr);
+       /// const uint8_t (*AcceptChannel_get_temporary_channel_id(const LDKAcceptChannel *this_ptr))[32];
+       public static native byte[]  AcceptChannel_get_temporary_channel_id(long this_ptr);
+       /// void AcceptChannel_set_temporary_channel_id(LDKAcceptChannel *this_ptr, LDKThirtyTwoBytes val);
+       public static native void AcceptChannel_set_temporary_channel_id(long this_ptr, long val);
+       /// uint64_t AcceptChannel_get_dust_limit_satoshis(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_dust_limit_satoshis(long this_ptr);
+       /// void AcceptChannel_set_dust_limit_satoshis(LDKAcceptChannel *this_ptr, uint64_t val);
+       public static native void AcceptChannel_set_dust_limit_satoshis(long this_ptr, long val);
+       /// uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_max_htlc_value_in_flight_msat(long this_ptr);
+       /// void AcceptChannel_set_max_htlc_value_in_flight_msat(LDKAcceptChannel *this_ptr, uint64_t val);
+       public static native void AcceptChannel_set_max_htlc_value_in_flight_msat(long this_ptr, long val);
+       /// uint64_t AcceptChannel_get_channel_reserve_satoshis(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_channel_reserve_satoshis(long this_ptr);
+       /// void AcceptChannel_set_channel_reserve_satoshis(LDKAcceptChannel *this_ptr, uint64_t val);
+       public static native void AcceptChannel_set_channel_reserve_satoshis(long this_ptr, long val);
+       /// uint64_t AcceptChannel_get_htlc_minimum_msat(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_htlc_minimum_msat(long this_ptr);
+       /// void AcceptChannel_set_htlc_minimum_msat(LDKAcceptChannel *this_ptr, uint64_t val);
+       public static native void AcceptChannel_set_htlc_minimum_msat(long this_ptr, long val);
+       /// uint32_t AcceptChannel_get_minimum_depth(const LDKAcceptChannel *this_ptr);
+       public static native int AcceptChannel_get_minimum_depth(long this_ptr);
+       /// void AcceptChannel_set_minimum_depth(LDKAcceptChannel *this_ptr, uint32_t val);
+       public static native void AcceptChannel_set_minimum_depth(long this_ptr, int val);
+       /// uint16_t AcceptChannel_get_to_self_delay(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_to_self_delay(long this_ptr);
+       /// void AcceptChannel_set_to_self_delay(LDKAcceptChannel *this_ptr, uint16_t val);
+       public static native void AcceptChannel_set_to_self_delay(long this_ptr, long val);
+       /// uint16_t AcceptChannel_get_max_accepted_htlcs(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_max_accepted_htlcs(long this_ptr);
+       /// void AcceptChannel_set_max_accepted_htlcs(LDKAcceptChannel *this_ptr, uint16_t val);
+       public static native void AcceptChannel_set_max_accepted_htlcs(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_funding_pubkey(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_funding_pubkey(long this_ptr);
+       /// void AcceptChannel_set_funding_pubkey(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_funding_pubkey(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_revocation_basepoint(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_revocation_basepoint(long this_ptr);
+       /// void AcceptChannel_set_revocation_basepoint(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_revocation_basepoint(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_payment_point(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_payment_point(long this_ptr);
+       /// void AcceptChannel_set_payment_point(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_payment_point(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_delayed_payment_basepoint(long this_ptr);
+       /// void AcceptChannel_set_delayed_payment_basepoint(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_delayed_payment_basepoint(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_htlc_basepoint(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_htlc_basepoint(long this_ptr);
+       /// void AcceptChannel_set_htlc_basepoint(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_htlc_basepoint(long this_ptr, long val);
+       /// LDKPublicKey AcceptChannel_get_first_per_commitment_point(const LDKAcceptChannel *this_ptr);
+       public static native long AcceptChannel_get_first_per_commitment_point(long this_ptr);
+       /// void AcceptChannel_set_first_per_commitment_point(LDKAcceptChannel *this_ptr, LDKPublicKey val);
+       public static native void AcceptChannel_set_first_per_commitment_point(long this_ptr, long val);
+       /// void FundingCreated_free(LDKFundingCreated this_ptr);
+       public static native void FundingCreated_free(long this_ptr);
+       /// const uint8_t (*FundingCreated_get_temporary_channel_id(const LDKFundingCreated *this_ptr))[32];
+       public static native byte[]  FundingCreated_get_temporary_channel_id(long this_ptr);
+       /// void FundingCreated_set_temporary_channel_id(LDKFundingCreated *this_ptr, LDKThirtyTwoBytes val);
+       public static native void FundingCreated_set_temporary_channel_id(long this_ptr, long val);
+       /// const uint8_t (*FundingCreated_get_funding_txid(const LDKFundingCreated *this_ptr))[32];
+       public static native byte[]  FundingCreated_get_funding_txid(long this_ptr);
+       /// void FundingCreated_set_funding_txid(LDKFundingCreated *this_ptr, LDKThirtyTwoBytes val);
+       public static native void FundingCreated_set_funding_txid(long this_ptr, long val);
+       /// uint16_t FundingCreated_get_funding_output_index(const LDKFundingCreated *this_ptr);
+       public static native long FundingCreated_get_funding_output_index(long this_ptr);
+       /// void FundingCreated_set_funding_output_index(LDKFundingCreated *this_ptr, uint16_t val);
+       public static native void FundingCreated_set_funding_output_index(long this_ptr, long val);
+       /// LDKSignature FundingCreated_get_signature(const LDKFundingCreated *this_ptr);
+       public static native long FundingCreated_get_signature(long this_ptr);
+       /// void FundingCreated_set_signature(LDKFundingCreated *this_ptr, LDKSignature val);
+       public static native void FundingCreated_set_signature(long this_ptr, long val);
+       /// MUST_USE_RES LDKFundingCreated FundingCreated_new(LDKThirtyTwoBytes temporary_channel_id_arg, LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, LDKSignature signature_arg);
+       public static native long FundingCreated_new(long temporary_channel_id_arg, long funding_txid_arg, long funding_output_index_arg, long signature_arg);
+       /// void FundingSigned_free(LDKFundingSigned this_ptr);
+       public static native void FundingSigned_free(long this_ptr);
+       /// const uint8_t (*FundingSigned_get_channel_id(const LDKFundingSigned *this_ptr))[32];
+       public static native byte[]  FundingSigned_get_channel_id(long this_ptr);
+       /// void FundingSigned_set_channel_id(LDKFundingSigned *this_ptr, LDKThirtyTwoBytes val);
+       public static native void FundingSigned_set_channel_id(long this_ptr, long val);
+       /// LDKSignature FundingSigned_get_signature(const LDKFundingSigned *this_ptr);
+       public static native long FundingSigned_get_signature(long this_ptr);
+       /// void FundingSigned_set_signature(LDKFundingSigned *this_ptr, LDKSignature val);
+       public static native void FundingSigned_set_signature(long this_ptr, long val);
+       /// MUST_USE_RES LDKFundingSigned FundingSigned_new(LDKThirtyTwoBytes channel_id_arg, LDKSignature signature_arg);
+       public static native long FundingSigned_new(long channel_id_arg, long signature_arg);
+       /// void FundingLocked_free(LDKFundingLocked this_ptr);
+       public static native void FundingLocked_free(long this_ptr);
+       /// const uint8_t (*FundingLocked_get_channel_id(const LDKFundingLocked *this_ptr))[32];
+       public static native byte[]  FundingLocked_get_channel_id(long this_ptr);
+       /// void FundingLocked_set_channel_id(LDKFundingLocked *this_ptr, LDKThirtyTwoBytes val);
+       public static native void FundingLocked_set_channel_id(long this_ptr, long val);
+       /// LDKPublicKey FundingLocked_get_next_per_commitment_point(const LDKFundingLocked *this_ptr);
+       public static native long FundingLocked_get_next_per_commitment_point(long this_ptr);
+       /// void FundingLocked_set_next_per_commitment_point(LDKFundingLocked *this_ptr, LDKPublicKey val);
+       public static native void FundingLocked_set_next_per_commitment_point(long this_ptr, long val);
+       /// MUST_USE_RES LDKFundingLocked FundingLocked_new(LDKThirtyTwoBytes channel_id_arg, LDKPublicKey next_per_commitment_point_arg);
+       public static native long FundingLocked_new(long channel_id_arg, long next_per_commitment_point_arg);
+       /// void Shutdown_free(LDKShutdown this_ptr);
+       public static native void Shutdown_free(long this_ptr);
+       /// const uint8_t (*Shutdown_get_channel_id(const LDKShutdown *this_ptr))[32];
+       public static native byte[]  Shutdown_get_channel_id(long this_ptr);
+       /// void Shutdown_set_channel_id(LDKShutdown *this_ptr, LDKThirtyTwoBytes val);
+       public static native void Shutdown_set_channel_id(long this_ptr, long val);
+       /// LDKu8slice Shutdown_get_scriptpubkey(const LDKShutdown *this_ptr);
+       public static native long Shutdown_get_scriptpubkey(long this_ptr);
+       /// void Shutdown_set_scriptpubkey(LDKShutdown *this_ptr, LDKCVec_u8Z val);
+       public static native void Shutdown_set_scriptpubkey(long this_ptr, long val);
+       /// MUST_USE_RES LDKShutdown Shutdown_new(LDKThirtyTwoBytes channel_id_arg, LDKCVec_u8Z scriptpubkey_arg);
+       public static native long Shutdown_new(long channel_id_arg, long scriptpubkey_arg);
+       /// void ClosingSigned_free(LDKClosingSigned this_ptr);
+       public static native void ClosingSigned_free(long this_ptr);
+       /// const uint8_t (*ClosingSigned_get_channel_id(const LDKClosingSigned *this_ptr))[32];
+       public static native byte[]  ClosingSigned_get_channel_id(long this_ptr);
+       /// void ClosingSigned_set_channel_id(LDKClosingSigned *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ClosingSigned_set_channel_id(long this_ptr, long val);
+       /// uint64_t ClosingSigned_get_fee_satoshis(const LDKClosingSigned *this_ptr);
+       public static native long ClosingSigned_get_fee_satoshis(long this_ptr);
+       /// void ClosingSigned_set_fee_satoshis(LDKClosingSigned *this_ptr, uint64_t val);
+       public static native void ClosingSigned_set_fee_satoshis(long this_ptr, long val);
+       /// LDKSignature ClosingSigned_get_signature(const LDKClosingSigned *this_ptr);
+       public static native long ClosingSigned_get_signature(long this_ptr);
+       /// void ClosingSigned_set_signature(LDKClosingSigned *this_ptr, LDKSignature val);
+       public static native void ClosingSigned_set_signature(long this_ptr, long val);
+       /// MUST_USE_RES LDKClosingSigned ClosingSigned_new(LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, LDKSignature signature_arg);
+       public static native long ClosingSigned_new(long channel_id_arg, long fee_satoshis_arg, long signature_arg);
+       /// void UpdateAddHTLC_free(LDKUpdateAddHTLC this_ptr);
+       public static native void UpdateAddHTLC_free(long this_ptr);
+       /// const uint8_t (*UpdateAddHTLC_get_channel_id(const LDKUpdateAddHTLC *this_ptr))[32];
+       public static native byte[]  UpdateAddHTLC_get_channel_id(long this_ptr);
+       /// void UpdateAddHTLC_set_channel_id(LDKUpdateAddHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateAddHTLC_set_channel_id(long this_ptr, long val);
+       /// uint64_t UpdateAddHTLC_get_htlc_id(const LDKUpdateAddHTLC *this_ptr);
+       public static native long UpdateAddHTLC_get_htlc_id(long this_ptr);
+       /// void UpdateAddHTLC_set_htlc_id(LDKUpdateAddHTLC *this_ptr, uint64_t val);
+       public static native void UpdateAddHTLC_set_htlc_id(long this_ptr, long val);
+       /// uint64_t UpdateAddHTLC_get_amount_msat(const LDKUpdateAddHTLC *this_ptr);
+       public static native long UpdateAddHTLC_get_amount_msat(long this_ptr);
+       /// void UpdateAddHTLC_set_amount_msat(LDKUpdateAddHTLC *this_ptr, uint64_t val);
+       public static native void UpdateAddHTLC_set_amount_msat(long this_ptr, long val);
+       /// const uint8_t (*UpdateAddHTLC_get_payment_hash(const LDKUpdateAddHTLC *this_ptr))[32];
+       public static native byte[]  UpdateAddHTLC_get_payment_hash(long this_ptr);
+       /// void UpdateAddHTLC_set_payment_hash(LDKUpdateAddHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateAddHTLC_set_payment_hash(long this_ptr, long val);
+       /// uint32_t UpdateAddHTLC_get_cltv_expiry(const LDKUpdateAddHTLC *this_ptr);
+       public static native int UpdateAddHTLC_get_cltv_expiry(long this_ptr);
+       /// void UpdateAddHTLC_set_cltv_expiry(LDKUpdateAddHTLC *this_ptr, uint32_t val);
+       public static native void UpdateAddHTLC_set_cltv_expiry(long this_ptr, int val);
+       /// void UpdateFulfillHTLC_free(LDKUpdateFulfillHTLC this_ptr);
+       public static native void UpdateFulfillHTLC_free(long this_ptr);
+       /// const uint8_t (*UpdateFulfillHTLC_get_channel_id(const LDKUpdateFulfillHTLC *this_ptr))[32];
+       public static native byte[]  UpdateFulfillHTLC_get_channel_id(long this_ptr);
+       /// void UpdateFulfillHTLC_set_channel_id(LDKUpdateFulfillHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateFulfillHTLC_set_channel_id(long this_ptr, long val);
+       /// uint64_t UpdateFulfillHTLC_get_htlc_id(const LDKUpdateFulfillHTLC *this_ptr);
+       public static native long UpdateFulfillHTLC_get_htlc_id(long this_ptr);
+       /// void UpdateFulfillHTLC_set_htlc_id(LDKUpdateFulfillHTLC *this_ptr, uint64_t val);
+       public static native void UpdateFulfillHTLC_set_htlc_id(long this_ptr, long val);
+       /// const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const LDKUpdateFulfillHTLC *this_ptr))[32];
+       public static native byte[]  UpdateFulfillHTLC_get_payment_preimage(long this_ptr);
+       /// void UpdateFulfillHTLC_set_payment_preimage(LDKUpdateFulfillHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateFulfillHTLC_set_payment_preimage(long this_ptr, long val);
+       /// MUST_USE_RES LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, LDKThirtyTwoBytes payment_preimage_arg);
+       public static native long UpdateFulfillHTLC_new(long channel_id_arg, long htlc_id_arg, long payment_preimage_arg);
+       /// void UpdateFailHTLC_free(LDKUpdateFailHTLC this_ptr);
+       public static native void UpdateFailHTLC_free(long this_ptr);
+       /// const uint8_t (*UpdateFailHTLC_get_channel_id(const LDKUpdateFailHTLC *this_ptr))[32];
+       public static native byte[]  UpdateFailHTLC_get_channel_id(long this_ptr);
+       /// void UpdateFailHTLC_set_channel_id(LDKUpdateFailHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateFailHTLC_set_channel_id(long this_ptr, long val);
+       /// uint64_t UpdateFailHTLC_get_htlc_id(const LDKUpdateFailHTLC *this_ptr);
+       public static native long UpdateFailHTLC_get_htlc_id(long this_ptr);
+       /// void UpdateFailHTLC_set_htlc_id(LDKUpdateFailHTLC *this_ptr, uint64_t val);
+       public static native void UpdateFailHTLC_set_htlc_id(long this_ptr, long val);
+       /// void UpdateFailMalformedHTLC_free(LDKUpdateFailMalformedHTLC this_ptr);
+       public static native void UpdateFailMalformedHTLC_free(long this_ptr);
+       /// const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const LDKUpdateFailMalformedHTLC *this_ptr))[32];
+       public static native byte[]  UpdateFailMalformedHTLC_get_channel_id(long this_ptr);
+       /// void UpdateFailMalformedHTLC_set_channel_id(LDKUpdateFailMalformedHTLC *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateFailMalformedHTLC_set_channel_id(long this_ptr, long val);
+       /// uint64_t UpdateFailMalformedHTLC_get_htlc_id(const LDKUpdateFailMalformedHTLC *this_ptr);
+       public static native long UpdateFailMalformedHTLC_get_htlc_id(long this_ptr);
+       /// void UpdateFailMalformedHTLC_set_htlc_id(LDKUpdateFailMalformedHTLC *this_ptr, uint64_t val);
+       public static native void UpdateFailMalformedHTLC_set_htlc_id(long this_ptr, long val);
+       /// uint16_t UpdateFailMalformedHTLC_get_failure_code(const LDKUpdateFailMalformedHTLC *this_ptr);
+       public static native long UpdateFailMalformedHTLC_get_failure_code(long this_ptr);
+       /// void UpdateFailMalformedHTLC_set_failure_code(LDKUpdateFailMalformedHTLC *this_ptr, uint16_t val);
+       public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, long val);
+       /// void CommitmentSigned_free(LDKCommitmentSigned this_ptr);
+       public static native void CommitmentSigned_free(long this_ptr);
+       /// const uint8_t (*CommitmentSigned_get_channel_id(const LDKCommitmentSigned *this_ptr))[32];
+       public static native byte[]  CommitmentSigned_get_channel_id(long this_ptr);
+       /// void CommitmentSigned_set_channel_id(LDKCommitmentSigned *this_ptr, LDKThirtyTwoBytes val);
+       public static native void CommitmentSigned_set_channel_id(long this_ptr, long val);
+       /// LDKSignature CommitmentSigned_get_signature(const LDKCommitmentSigned *this_ptr);
+       public static native long CommitmentSigned_get_signature(long this_ptr);
+       /// void CommitmentSigned_set_signature(LDKCommitmentSigned *this_ptr, LDKSignature val);
+       public static native void CommitmentSigned_set_signature(long this_ptr, long val);
+       /// void CommitmentSigned_set_htlc_signatures(LDKCommitmentSigned *this_ptr, LDKCVec_SignatureZ val);
+       public static native void CommitmentSigned_set_htlc_signatures(long this_ptr, long val);
+       /// MUST_USE_RES LDKCommitmentSigned CommitmentSigned_new(LDKThirtyTwoBytes channel_id_arg, LDKSignature signature_arg, LDKCVec_SignatureZ htlc_signatures_arg);
+       public static native long CommitmentSigned_new(long channel_id_arg, long signature_arg, long htlc_signatures_arg);
+       /// void RevokeAndACK_free(LDKRevokeAndACK this_ptr);
+       public static native void RevokeAndACK_free(long this_ptr);
+       /// const uint8_t (*RevokeAndACK_get_channel_id(const LDKRevokeAndACK *this_ptr))[32];
+       public static native byte[]  RevokeAndACK_get_channel_id(long this_ptr);
+       /// void RevokeAndACK_set_channel_id(LDKRevokeAndACK *this_ptr, LDKThirtyTwoBytes val);
+       public static native void RevokeAndACK_set_channel_id(long this_ptr, long val);
+       /// const uint8_t (*RevokeAndACK_get_per_commitment_secret(const LDKRevokeAndACK *this_ptr))[32];
+       public static native byte[]  RevokeAndACK_get_per_commitment_secret(long this_ptr);
+       /// void RevokeAndACK_set_per_commitment_secret(LDKRevokeAndACK *this_ptr, LDKThirtyTwoBytes val);
+       public static native void RevokeAndACK_set_per_commitment_secret(long this_ptr, long val);
+       /// LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const LDKRevokeAndACK *this_ptr);
+       public static native long RevokeAndACK_get_next_per_commitment_point(long this_ptr);
+       /// void RevokeAndACK_set_next_per_commitment_point(LDKRevokeAndACK *this_ptr, LDKPublicKey val);
+       public static native void RevokeAndACK_set_next_per_commitment_point(long this_ptr, long val);
+       /// MUST_USE_RES LDKRevokeAndACK RevokeAndACK_new(LDKThirtyTwoBytes channel_id_arg, LDKThirtyTwoBytes per_commitment_secret_arg, LDKPublicKey next_per_commitment_point_arg);
+       public static native long RevokeAndACK_new(long channel_id_arg, long per_commitment_secret_arg, long next_per_commitment_point_arg);
+       /// void UpdateFee_free(LDKUpdateFee this_ptr);
+       public static native void UpdateFee_free(long this_ptr);
+       /// const uint8_t (*UpdateFee_get_channel_id(const LDKUpdateFee *this_ptr))[32];
+       public static native byte[]  UpdateFee_get_channel_id(long this_ptr);
+       /// void UpdateFee_set_channel_id(LDKUpdateFee *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UpdateFee_set_channel_id(long this_ptr, long val);
+       /// uint32_t UpdateFee_get_feerate_per_kw(const LDKUpdateFee *this_ptr);
+       public static native int UpdateFee_get_feerate_per_kw(long this_ptr);
+       /// void UpdateFee_set_feerate_per_kw(LDKUpdateFee *this_ptr, uint32_t val);
+       public static native void UpdateFee_set_feerate_per_kw(long this_ptr, int val);
+       /// MUST_USE_RES LDKUpdateFee UpdateFee_new(LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
+       public static native long UpdateFee_new(long channel_id_arg, int feerate_per_kw_arg);
+       /// void DataLossProtect_free(LDKDataLossProtect this_ptr);
+       public static native void DataLossProtect_free(long this_ptr);
+       /// const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const LDKDataLossProtect *this_ptr))[32];
+       public static native byte[]  DataLossProtect_get_your_last_per_commitment_secret(long this_ptr);
+       /// void DataLossProtect_set_your_last_per_commitment_secret(LDKDataLossProtect *this_ptr, LDKThirtyTwoBytes val);
+       public static native void DataLossProtect_set_your_last_per_commitment_secret(long this_ptr, long val);
+       /// LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const LDKDataLossProtect *this_ptr);
+       public static native long DataLossProtect_get_my_current_per_commitment_point(long this_ptr);
+       /// void DataLossProtect_set_my_current_per_commitment_point(LDKDataLossProtect *this_ptr, LDKPublicKey val);
+       public static native void DataLossProtect_set_my_current_per_commitment_point(long this_ptr, long val);
+       /// MUST_USE_RES LDKDataLossProtect DataLossProtect_new(LDKThirtyTwoBytes your_last_per_commitment_secret_arg, LDKPublicKey my_current_per_commitment_point_arg);
+       public static native long DataLossProtect_new(long your_last_per_commitment_secret_arg, long my_current_per_commitment_point_arg);
+       /// void ChannelReestablish_free(LDKChannelReestablish this_ptr);
+       public static native void ChannelReestablish_free(long this_ptr);
+       /// const uint8_t (*ChannelReestablish_get_channel_id(const LDKChannelReestablish *this_ptr))[32];
+       public static native byte[]  ChannelReestablish_get_channel_id(long this_ptr);
+       /// void ChannelReestablish_set_channel_id(LDKChannelReestablish *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ChannelReestablish_set_channel_id(long this_ptr, long val);
+       /// uint64_t ChannelReestablish_get_next_local_commitment_number(const LDKChannelReestablish *this_ptr);
+       public static native long ChannelReestablish_get_next_local_commitment_number(long this_ptr);
+       /// void ChannelReestablish_set_next_local_commitment_number(LDKChannelReestablish *this_ptr, uint64_t val);
+       public static native void ChannelReestablish_set_next_local_commitment_number(long this_ptr, long val);
+       /// uint64_t ChannelReestablish_get_next_remote_commitment_number(const LDKChannelReestablish *this_ptr);
+       public static native long ChannelReestablish_get_next_remote_commitment_number(long this_ptr);
+       /// void ChannelReestablish_set_next_remote_commitment_number(LDKChannelReestablish *this_ptr, uint64_t val);
+       public static native void ChannelReestablish_set_next_remote_commitment_number(long this_ptr, long val);
+       /// void AnnouncementSignatures_free(LDKAnnouncementSignatures this_ptr);
+       public static native void AnnouncementSignatures_free(long this_ptr);
+       /// const uint8_t (*AnnouncementSignatures_get_channel_id(const LDKAnnouncementSignatures *this_ptr))[32];
+       public static native byte[]  AnnouncementSignatures_get_channel_id(long this_ptr);
+       /// void AnnouncementSignatures_set_channel_id(LDKAnnouncementSignatures *this_ptr, LDKThirtyTwoBytes val);
+       public static native void AnnouncementSignatures_set_channel_id(long this_ptr, long val);
+       /// uint64_t AnnouncementSignatures_get_short_channel_id(const LDKAnnouncementSignatures *this_ptr);
+       public static native long AnnouncementSignatures_get_short_channel_id(long this_ptr);
+       /// void AnnouncementSignatures_set_short_channel_id(LDKAnnouncementSignatures *this_ptr, uint64_t val);
+       public static native void AnnouncementSignatures_set_short_channel_id(long this_ptr, long val);
+       /// LDKSignature AnnouncementSignatures_get_node_signature(const LDKAnnouncementSignatures *this_ptr);
+       public static native long AnnouncementSignatures_get_node_signature(long this_ptr);
+       /// void AnnouncementSignatures_set_node_signature(LDKAnnouncementSignatures *this_ptr, LDKSignature val);
+       public static native void AnnouncementSignatures_set_node_signature(long this_ptr, long val);
+       /// LDKSignature AnnouncementSignatures_get_bitcoin_signature(const LDKAnnouncementSignatures *this_ptr);
+       public static native long AnnouncementSignatures_get_bitcoin_signature(long this_ptr);
+       /// void AnnouncementSignatures_set_bitcoin_signature(LDKAnnouncementSignatures *this_ptr, LDKSignature val);
+       public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, long val);
+       /// MUST_USE_RES LDKAnnouncementSignatures AnnouncementSignatures_new(LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, LDKSignature node_signature_arg, LDKSignature bitcoin_signature_arg);
+       public static native long AnnouncementSignatures_new(long channel_id_arg, long short_channel_id_arg, long node_signature_arg, long bitcoin_signature_arg);
+       /// void NetAddress_free(LDKNetAddress this_ptr);
+       public static native void NetAddress_free(long this_ptr);
+       /// void UnsignedNodeAnnouncement_free(LDKUnsignedNodeAnnouncement this_ptr);
+       public static native void UnsignedNodeAnnouncement_free(long this_ptr);
+       /// uint32_t UnsignedNodeAnnouncement_get_timestamp(const LDKUnsignedNodeAnnouncement *this_ptr);
+       public static native int UnsignedNodeAnnouncement_get_timestamp(long this_ptr);
+       /// void UnsignedNodeAnnouncement_set_timestamp(LDKUnsignedNodeAnnouncement *this_ptr, uint32_t val);
+       public static native void UnsignedNodeAnnouncement_set_timestamp(long this_ptr, int val);
+       /// LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const LDKUnsignedNodeAnnouncement *this_ptr);
+       public static native long UnsignedNodeAnnouncement_get_node_id(long this_ptr);
+       /// void UnsignedNodeAnnouncement_set_node_id(LDKUnsignedNodeAnnouncement *this_ptr, LDKPublicKey val);
+       public static native void UnsignedNodeAnnouncement_set_node_id(long this_ptr, long val);
+       /// const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const LDKUnsignedNodeAnnouncement *this_ptr))[3];
+       public static native byte[]  UnsignedNodeAnnouncement_get_rgb(long this_ptr);
+       /// void UnsignedNodeAnnouncement_set_rgb(LDKUnsignedNodeAnnouncement *this_ptr, LDKThreeBytes val);
+       public static native void UnsignedNodeAnnouncement_set_rgb(long this_ptr, long val);
+       /// const uint8_t (*UnsignedNodeAnnouncement_get_alias(const LDKUnsignedNodeAnnouncement *this_ptr))[32];
+       public static native byte[]  UnsignedNodeAnnouncement_get_alias(long this_ptr);
+       /// void UnsignedNodeAnnouncement_set_alias(LDKUnsignedNodeAnnouncement *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UnsignedNodeAnnouncement_set_alias(long this_ptr, long val);
+       /// void UnsignedNodeAnnouncement_set_addresses(LDKUnsignedNodeAnnouncement *this_ptr, LDKCVec_NetAddressZ val);
+       public static native void UnsignedNodeAnnouncement_set_addresses(long this_ptr, long val);
+       /// void NodeAnnouncement_free(LDKNodeAnnouncement this_ptr);
+       public static native void NodeAnnouncement_free(long this_ptr);
+       /// LDKSignature NodeAnnouncement_get_signature(const LDKNodeAnnouncement *this_ptr);
+       public static native long NodeAnnouncement_get_signature(long this_ptr);
+       /// void NodeAnnouncement_set_signature(LDKNodeAnnouncement *this_ptr, LDKSignature val);
+       public static native void NodeAnnouncement_set_signature(long this_ptr, long val);
+       /// LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const LDKNodeAnnouncement *this_ptr);
+       public static native long NodeAnnouncement_get_contents(long this_ptr);
+       /// void NodeAnnouncement_set_contents(LDKNodeAnnouncement *this_ptr, LDKUnsignedNodeAnnouncement val);
+       public static native void NodeAnnouncement_set_contents(long this_ptr, long val);
+       /// MUST_USE_RES LDKNodeAnnouncement NodeAnnouncement_new(LDKSignature signature_arg, LDKUnsignedNodeAnnouncement contents_arg);
+       public static native long NodeAnnouncement_new(long signature_arg, long contents_arg);
+       /// void UnsignedChannelAnnouncement_free(LDKUnsignedChannelAnnouncement this_ptr);
+       public static native void UnsignedChannelAnnouncement_free(long this_ptr);
+       /// const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const LDKUnsignedChannelAnnouncement *this_ptr))[32];
+       public static native byte[]  UnsignedChannelAnnouncement_get_chain_hash(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_chain_hash(LDKUnsignedChannelAnnouncement *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UnsignedChannelAnnouncement_set_chain_hash(long this_ptr, long val);
+       /// uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_short_channel_id(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_short_channel_id(LDKUnsignedChannelAnnouncement *this_ptr, uint64_t val);
+       public static native void UnsignedChannelAnnouncement_set_short_channel_id(long this_ptr, long val);
+       /// LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_node_id_1(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_node_id_1(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
+       public static native void UnsignedChannelAnnouncement_set_node_id_1(long this_ptr, long val);
+       /// LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_node_id_2(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_node_id_2(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
+       public static native void UnsignedChannelAnnouncement_set_node_id_2(long this_ptr, long val);
+       /// LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_bitcoin_key_1(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_bitcoin_key_1(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
+       public static native void UnsignedChannelAnnouncement_set_bitcoin_key_1(long this_ptr, long val);
+       /// LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_bitcoin_key_2(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_bitcoin_key_2(LDKUnsignedChannelAnnouncement *this_ptr, LDKPublicKey val);
+       public static native void UnsignedChannelAnnouncement_set_bitcoin_key_2(long this_ptr, long val);
+       /// void ChannelAnnouncement_free(LDKChannelAnnouncement this_ptr);
+       public static native void ChannelAnnouncement_free(long this_ptr);
+       /// LDKSignature ChannelAnnouncement_get_node_signature_1(const LDKChannelAnnouncement *this_ptr);
+       public static native long ChannelAnnouncement_get_node_signature_1(long this_ptr);
+       /// void ChannelAnnouncement_set_node_signature_1(LDKChannelAnnouncement *this_ptr, LDKSignature val);
+       public static native void ChannelAnnouncement_set_node_signature_1(long this_ptr, long val);
+       /// LDKSignature ChannelAnnouncement_get_node_signature_2(const LDKChannelAnnouncement *this_ptr);
+       public static native long ChannelAnnouncement_get_node_signature_2(long this_ptr);
+       /// void ChannelAnnouncement_set_node_signature_2(LDKChannelAnnouncement *this_ptr, LDKSignature val);
+       public static native void ChannelAnnouncement_set_node_signature_2(long this_ptr, long val);
+       /// LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const LDKChannelAnnouncement *this_ptr);
+       public static native long ChannelAnnouncement_get_bitcoin_signature_1(long this_ptr);
+       /// void ChannelAnnouncement_set_bitcoin_signature_1(LDKChannelAnnouncement *this_ptr, LDKSignature val);
+       public static native void ChannelAnnouncement_set_bitcoin_signature_1(long this_ptr, long val);
+       /// LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const LDKChannelAnnouncement *this_ptr);
+       public static native long ChannelAnnouncement_get_bitcoin_signature_2(long this_ptr);
+       /// void ChannelAnnouncement_set_bitcoin_signature_2(LDKChannelAnnouncement *this_ptr, LDKSignature val);
+       public static native void ChannelAnnouncement_set_bitcoin_signature_2(long this_ptr, long val);
+       /// LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const LDKChannelAnnouncement *this_ptr);
+       public static native long ChannelAnnouncement_get_contents(long this_ptr);
+       /// void ChannelAnnouncement_set_contents(LDKChannelAnnouncement *this_ptr, LDKUnsignedChannelAnnouncement val);
+       public static native void ChannelAnnouncement_set_contents(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelAnnouncement ChannelAnnouncement_new(LDKSignature node_signature_1_arg, LDKSignature node_signature_2_arg, LDKSignature bitcoin_signature_1_arg, LDKSignature bitcoin_signature_2_arg, LDKUnsignedChannelAnnouncement contents_arg);
+       public static native long ChannelAnnouncement_new(long node_signature_1_arg, long node_signature_2_arg, long bitcoin_signature_1_arg, long bitcoin_signature_2_arg, long contents_arg);
+       /// void UnsignedChannelUpdate_free(LDKUnsignedChannelUpdate this_ptr);
+       public static native void UnsignedChannelUpdate_free(long this_ptr);
+       /// const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const LDKUnsignedChannelUpdate *this_ptr))[32];
+       public static native byte[]  UnsignedChannelUpdate_get_chain_hash(long this_ptr);
+       /// void UnsignedChannelUpdate_set_chain_hash(LDKUnsignedChannelUpdate *this_ptr, LDKThirtyTwoBytes val);
+       public static native void UnsignedChannelUpdate_set_chain_hash(long this_ptr, long val);
+       /// uint64_t UnsignedChannelUpdate_get_short_channel_id(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native long UnsignedChannelUpdate_get_short_channel_id(long this_ptr);
+       /// void UnsignedChannelUpdate_set_short_channel_id(LDKUnsignedChannelUpdate *this_ptr, uint64_t val);
+       public static native void UnsignedChannelUpdate_set_short_channel_id(long this_ptr, long val);
+       /// uint32_t UnsignedChannelUpdate_get_timestamp(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native int UnsignedChannelUpdate_get_timestamp(long this_ptr);
+       /// void UnsignedChannelUpdate_set_timestamp(LDKUnsignedChannelUpdate *this_ptr, uint32_t val);
+       public static native void UnsignedChannelUpdate_set_timestamp(long this_ptr, int val);
+       /// uint8_t UnsignedChannelUpdate_get_flags(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native byte UnsignedChannelUpdate_get_flags(long this_ptr);
+       /// void UnsignedChannelUpdate_set_flags(LDKUnsignedChannelUpdate *this_ptr, uint8_t val);
+       public static native void UnsignedChannelUpdate_set_flags(long this_ptr, byte val);
+       /// uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native long UnsignedChannelUpdate_get_cltv_expiry_delta(long this_ptr);
+       /// void UnsignedChannelUpdate_set_cltv_expiry_delta(LDKUnsignedChannelUpdate *this_ptr, uint16_t val);
+       public static native void UnsignedChannelUpdate_set_cltv_expiry_delta(long this_ptr, long val);
+       /// uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native long UnsignedChannelUpdate_get_htlc_minimum_msat(long this_ptr);
+       /// void UnsignedChannelUpdate_set_htlc_minimum_msat(LDKUnsignedChannelUpdate *this_ptr, uint64_t val);
+       public static native void UnsignedChannelUpdate_set_htlc_minimum_msat(long this_ptr, long val);
+       /// uint32_t UnsignedChannelUpdate_get_fee_base_msat(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native int UnsignedChannelUpdate_get_fee_base_msat(long this_ptr);
+       /// void UnsignedChannelUpdate_set_fee_base_msat(LDKUnsignedChannelUpdate *this_ptr, uint32_t val);
+       public static native void UnsignedChannelUpdate_set_fee_base_msat(long this_ptr, int val);
+       /// uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const LDKUnsignedChannelUpdate *this_ptr);
+       public static native int UnsignedChannelUpdate_get_fee_proportional_millionths(long this_ptr);
+       /// void UnsignedChannelUpdate_set_fee_proportional_millionths(LDKUnsignedChannelUpdate *this_ptr, uint32_t val);
+       public static native void UnsignedChannelUpdate_set_fee_proportional_millionths(long this_ptr, int val);
+       /// void ChannelUpdate_free(LDKChannelUpdate this_ptr);
+       public static native void ChannelUpdate_free(long this_ptr);
+       /// LDKSignature ChannelUpdate_get_signature(const LDKChannelUpdate *this_ptr);
+       public static native long ChannelUpdate_get_signature(long this_ptr);
+       /// void ChannelUpdate_set_signature(LDKChannelUpdate *this_ptr, LDKSignature val);
+       public static native void ChannelUpdate_set_signature(long this_ptr, long val);
+       /// LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const LDKChannelUpdate *this_ptr);
+       public static native long ChannelUpdate_get_contents(long this_ptr);
+       /// void ChannelUpdate_set_contents(LDKChannelUpdate *this_ptr, LDKUnsignedChannelUpdate val);
+       public static native void ChannelUpdate_set_contents(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelUpdate ChannelUpdate_new(LDKSignature signature_arg, LDKUnsignedChannelUpdate contents_arg);
+       public static native long ChannelUpdate_new(long signature_arg, long contents_arg);
+       /// void ErrorAction_free(LDKErrorAction this_ptr);
+       public static native void ErrorAction_free(long this_ptr);
+       /// void LightningError_free(LDKLightningError this_ptr);
+       public static native void LightningError_free(long this_ptr);
+       /// LDKStr LightningError_get_err(const LDKLightningError *this_ptr);
+       public static native long LightningError_get_err(long this_ptr);
+       /// void LightningError_set_err(LDKLightningError *this_ptr, LDKCVec_u8Z val);
+       public static native void LightningError_set_err(long this_ptr, long val);
+       /// LDKErrorAction LightningError_get_action(const LDKLightningError *this_ptr);
+       public static native long LightningError_get_action(long this_ptr);
+       /// void LightningError_set_action(LDKLightningError *this_ptr, LDKErrorAction val);
+       public static native void LightningError_set_action(long this_ptr, long val);
+       /// MUST_USE_RES LDKLightningError LightningError_new(LDKCVec_u8Z err_arg, LDKErrorAction action_arg);
+       public static native long LightningError_new(long err_arg, long action_arg);
+       /// void CommitmentUpdate_free(LDKCommitmentUpdate this_ptr);
+       public static native void CommitmentUpdate_free(long this_ptr);
+       /// void CommitmentUpdate_set_update_add_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateAddHTLCZ val);
+       public static native void CommitmentUpdate_set_update_add_htlcs(long this_ptr, long val);
+       /// void CommitmentUpdate_set_update_fulfill_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFulfillHTLCZ val);
+       public static native void CommitmentUpdate_set_update_fulfill_htlcs(long this_ptr, long val);
+       /// void CommitmentUpdate_set_update_fail_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFailHTLCZ val);
+       public static native void CommitmentUpdate_set_update_fail_htlcs(long this_ptr, long val);
+       /// void CommitmentUpdate_set_update_fail_malformed_htlcs(LDKCommitmentUpdate *this_ptr, LDKCVec_UpdateFailMalformedHTLCZ val);
+       public static native void CommitmentUpdate_set_update_fail_malformed_htlcs(long this_ptr, long val);
+       /// LDKUpdateFee CommitmentUpdate_get_update_fee(const LDKCommitmentUpdate *this_ptr);
+       public static native long CommitmentUpdate_get_update_fee(long this_ptr);
+       /// void CommitmentUpdate_set_update_fee(LDKCommitmentUpdate *this_ptr, LDKUpdateFee val);
+       public static native void CommitmentUpdate_set_update_fee(long this_ptr, long val);
+       /// LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const LDKCommitmentUpdate *this_ptr);
+       public static native long CommitmentUpdate_get_commitment_signed(long this_ptr);
+       /// void CommitmentUpdate_set_commitment_signed(LDKCommitmentUpdate *this_ptr, LDKCommitmentSigned val);
+       public static native void CommitmentUpdate_set_commitment_signed(long this_ptr, long val);
+       /// MUST_USE_RES LDKCommitmentUpdate CommitmentUpdate_new(LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, LDKUpdateFee update_fee_arg, LDKCommitmentSigned commitment_signed_arg);
+       public static native long CommitmentUpdate_new(long update_add_htlcs_arg, long update_fulfill_htlcs_arg, long update_fail_htlcs_arg, long update_fail_malformed_htlcs_arg, long update_fee_arg, long commitment_signed_arg);
+       /// void HTLCFailChannelUpdate_free(LDKHTLCFailChannelUpdate this_ptr);
+       public static native void HTLCFailChannelUpdate_free(long this_ptr);
+       /// void ChannelMessageHandler_free(LDKChannelMessageHandler this_ptr);
+       public static native void ChannelMessageHandler_free(long this_ptr);
+       /// void RoutingMessageHandler_free(LDKRoutingMessageHandler this_ptr);
+       public static native void RoutingMessageHandler_free(long this_ptr);
+       /// LDKCVec_u8Z AcceptChannel_write(const LDKAcceptChannel *obj);
+       public static native long AcceptChannel_write(long obj);
+       /// LDKAcceptChannel AcceptChannel_read(LDKu8slice ser);
+       public static native long AcceptChannel_read(long ser);
+       /// LDKCVec_u8Z AnnouncementSignatures_write(const LDKAnnouncementSignatures *obj);
+       public static native long AnnouncementSignatures_write(long obj);
+       /// LDKAnnouncementSignatures AnnouncementSignatures_read(LDKu8slice ser);
+       public static native long AnnouncementSignatures_read(long ser);
+       /// LDKCVec_u8Z ChannelReestablish_write(const LDKChannelReestablish *obj);
+       public static native long ChannelReestablish_write(long obj);
+       /// LDKChannelReestablish ChannelReestablish_read(LDKu8slice ser);
+       public static native long ChannelReestablish_read(long ser);
+       /// LDKCVec_u8Z ClosingSigned_write(const LDKClosingSigned *obj);
+       public static native long ClosingSigned_write(long obj);
+       /// LDKClosingSigned ClosingSigned_read(LDKu8slice ser);
+       public static native long ClosingSigned_read(long ser);
+       /// LDKCVec_u8Z CommitmentSigned_write(const LDKCommitmentSigned *obj);
+       public static native long CommitmentSigned_write(long obj);
+       /// LDKCommitmentSigned CommitmentSigned_read(LDKu8slice ser);
+       public static native long CommitmentSigned_read(long ser);
+       /// LDKCVec_u8Z FundingCreated_write(const LDKFundingCreated *obj);
+       public static native long FundingCreated_write(long obj);
+       /// LDKFundingCreated FundingCreated_read(LDKu8slice ser);
+       public static native long FundingCreated_read(long ser);
+       /// LDKCVec_u8Z FundingSigned_write(const LDKFundingSigned *obj);
+       public static native long FundingSigned_write(long obj);
+       /// LDKFundingSigned FundingSigned_read(LDKu8slice ser);
+       public static native long FundingSigned_read(long ser);
+       /// LDKCVec_u8Z FundingLocked_write(const LDKFundingLocked *obj);
+       public static native long FundingLocked_write(long obj);
+       /// LDKFundingLocked FundingLocked_read(LDKu8slice ser);
+       public static native long FundingLocked_read(long ser);
+       /// LDKCVec_u8Z Init_write(const LDKInit *obj);
+       public static native long Init_write(long obj);
+       /// LDKInit Init_read(LDKu8slice ser);
+       public static native long Init_read(long ser);
+       /// LDKCVec_u8Z OpenChannel_write(const LDKOpenChannel *obj);
+       public static native long OpenChannel_write(long obj);
+       /// LDKOpenChannel OpenChannel_read(LDKu8slice ser);
+       public static native long OpenChannel_read(long ser);
+       /// LDKCVec_u8Z RevokeAndACK_write(const LDKRevokeAndACK *obj);
+       public static native long RevokeAndACK_write(long obj);
+       /// LDKRevokeAndACK RevokeAndACK_read(LDKu8slice ser);
+       public static native long RevokeAndACK_read(long ser);
+       /// LDKCVec_u8Z Shutdown_write(const LDKShutdown *obj);
+       public static native long Shutdown_write(long obj);
+       /// LDKShutdown Shutdown_read(LDKu8slice ser);
+       public static native long Shutdown_read(long ser);
+       /// LDKCVec_u8Z UpdateFailHTLC_write(const LDKUpdateFailHTLC *obj);
+       public static native long UpdateFailHTLC_write(long obj);
+       /// LDKUpdateFailHTLC UpdateFailHTLC_read(LDKu8slice ser);
+       public static native long UpdateFailHTLC_read(long ser);
+       /// LDKCVec_u8Z UpdateFailMalformedHTLC_write(const LDKUpdateFailMalformedHTLC *obj);
+       public static native long UpdateFailMalformedHTLC_write(long obj);
+       /// LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_read(LDKu8slice ser);
+       public static native long UpdateFailMalformedHTLC_read(long ser);
+       /// LDKCVec_u8Z UpdateFee_write(const LDKUpdateFee *obj);
+       public static native long UpdateFee_write(long obj);
+       /// LDKUpdateFee UpdateFee_read(LDKu8slice ser);
+       public static native long UpdateFee_read(long ser);
+       /// LDKCVec_u8Z UpdateFulfillHTLC_write(const LDKUpdateFulfillHTLC *obj);
+       public static native long UpdateFulfillHTLC_write(long obj);
+       /// LDKUpdateFulfillHTLC UpdateFulfillHTLC_read(LDKu8slice ser);
+       public static native long UpdateFulfillHTLC_read(long ser);
+       /// LDKCVec_u8Z UpdateAddHTLC_write(const LDKUpdateAddHTLC *obj);
+       public static native long UpdateAddHTLC_write(long obj);
+       /// LDKUpdateAddHTLC UpdateAddHTLC_read(LDKu8slice ser);
+       public static native long UpdateAddHTLC_read(long ser);
+       /// LDKCVec_u8Z Ping_write(const LDKPing *obj);
+       public static native long Ping_write(long obj);
+       /// LDKPing Ping_read(LDKu8slice ser);
+       public static native long Ping_read(long ser);
+       /// LDKCVec_u8Z Pong_write(const LDKPong *obj);
+       public static native long Pong_write(long obj);
+       /// LDKPong Pong_read(LDKu8slice ser);
+       public static native long Pong_read(long ser);
+       /// LDKCVec_u8Z UnsignedChannelAnnouncement_write(const LDKUnsignedChannelAnnouncement *obj);
+       public static native long UnsignedChannelAnnouncement_write(long obj);
+       /// LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_read(LDKu8slice ser);
+       public static native long UnsignedChannelAnnouncement_read(long ser);
+       /// LDKCVec_u8Z ChannelAnnouncement_write(const LDKChannelAnnouncement *obj);
+       public static native long ChannelAnnouncement_write(long obj);
+       /// LDKChannelAnnouncement ChannelAnnouncement_read(LDKu8slice ser);
+       public static native long ChannelAnnouncement_read(long ser);
+       /// LDKCVec_u8Z UnsignedChannelUpdate_write(const LDKUnsignedChannelUpdate *obj);
+       public static native long UnsignedChannelUpdate_write(long obj);
+       /// LDKUnsignedChannelUpdate UnsignedChannelUpdate_read(LDKu8slice ser);
+       public static native long UnsignedChannelUpdate_read(long ser);
+       /// LDKCVec_u8Z ChannelUpdate_write(const LDKChannelUpdate *obj);
+       public static native long ChannelUpdate_write(long obj);
+       /// LDKChannelUpdate ChannelUpdate_read(LDKu8slice ser);
+       public static native long ChannelUpdate_read(long ser);
+       /// LDKCVec_u8Z ErrorMessage_write(const LDKErrorMessage *obj);
+       public static native long ErrorMessage_write(long obj);
+       /// LDKErrorMessage ErrorMessage_read(LDKu8slice ser);
+       public static native long ErrorMessage_read(long ser);
+       /// LDKCVec_u8Z UnsignedNodeAnnouncement_write(const LDKUnsignedNodeAnnouncement *obj);
+       public static native long UnsignedNodeAnnouncement_write(long obj);
+       /// LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_read(LDKu8slice ser);
+       public static native long UnsignedNodeAnnouncement_read(long ser);
+       /// LDKCVec_u8Z NodeAnnouncement_write(const LDKNodeAnnouncement *obj);
+       public static native long NodeAnnouncement_write(long obj);
+       /// LDKNodeAnnouncement NodeAnnouncement_read(LDKu8slice ser);
+       public static native long NodeAnnouncement_read(long ser);
+       /// void MessageHandler_free(LDKMessageHandler this_ptr);
+       public static native void MessageHandler_free(long this_ptr);
+       /// const LDKChannelMessageHandler *MessageHandler_get_chan_handler(const LDKMessageHandler *this_ptr);
+       public static native long MessageHandler_get_chan_handler(long this_ptr);
+       /// void MessageHandler_set_chan_handler(LDKMessageHandler *this_ptr, LDKChannelMessageHandler val);
+       public static native void MessageHandler_set_chan_handler(long this_ptr, long val);
+       /// const LDKRoutingMessageHandler *MessageHandler_get_route_handler(const LDKMessageHandler *this_ptr);
+       public static native long MessageHandler_get_route_handler(long this_ptr);
+       /// void MessageHandler_set_route_handler(LDKMessageHandler *this_ptr, LDKRoutingMessageHandler val);
+       public static native void MessageHandler_set_route_handler(long this_ptr, long val);
+       /// MUST_USE_RES LDKMessageHandler MessageHandler_new(LDKChannelMessageHandler chan_handler_arg, LDKRoutingMessageHandler route_handler_arg);
+       public static native long MessageHandler_new(long chan_handler_arg, long route_handler_arg);
+       /// void SocketDescriptor_free(LDKSocketDescriptor this_ptr);
+       public static native void SocketDescriptor_free(long this_ptr);
+       /// void PeerHandleError_free(LDKPeerHandleError this_ptr);
+       public static native void PeerHandleError_free(long this_ptr);
+       /// bool PeerHandleError_get_no_connection_possible(const LDKPeerHandleError *this_ptr);
+       public static native boolean PeerHandleError_get_no_connection_possible(long this_ptr);
+       /// void PeerHandleError_set_no_connection_possible(LDKPeerHandleError *this_ptr, bool val);
+       public static native void PeerHandleError_set_no_connection_possible(long this_ptr, boolean va);
+       /// MUST_USE_RES LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
+       public static native long PeerHandleError_new(boolean no_connection_possible_arg);
+       /// void PeerManager_free(LDKPeerManager this_ptr);
+       public static native void PeerManager_free(long this_ptr);
+       /// MUST_USE_RES LDKPeerManager PeerManager_new(LDKMessageHandler message_handler, LDKSecretKey our_node_secret, const uint8_t (*ephemeral_random_data)[32], LDKLogger logger);
+       public static native long PeerManager_new(long message_handler, long our_node_secret, byte[] ephemeral_random_data, long logger);
+       /// MUST_USE_RES LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const LDKPeerManager *this_arg);
+       public static native long PeerManager_get_peer_node_ids(long this_arg);
+       /// MUST_USE_RES LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const LDKPeerManager *this_arg, LDKPublicKey their_node_id, LDKSocketDescriptor descriptor);
+       public static native long PeerManager_new_outbound_connection(long this_arg, long their_node_id, long descriptor);
+       /// MUST_USE_RES LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const LDKPeerManager *this_arg, LDKSocketDescriptor descriptor);
+       public static native long PeerManager_new_inbound_connection(long this_arg, long descriptor);
+       /// MUST_USE_RES LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const LDKPeerManager *this_arg, LDKSocketDescriptor *descriptor);
+       public static native long PeerManager_write_buffer_space_avail(long this_arg, long descriptor);
+       /// MUST_USE_RES LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const LDKPeerManager *this_arg, LDKSocketDescriptor *peer_descriptor, LDKu8slice data);
+       public static native long PeerManager_read_event(long this_arg, long peer_descriptor, long data);
+       /// void PeerManager_process_events(const LDKPeerManager *this_arg);
+       public static native void PeerManager_process_events(long this_arg);
+       /// void PeerManager_socket_disconnected(const LDKPeerManager *this_arg, const LDKSocketDescriptor *descriptor);
+       public static native void PeerManager_socket_disconnected(long this_arg, long descriptor);
+       /// void PeerManager_timer_tick_occured(const LDKPeerManager *this_arg);
+       public static native void PeerManager_timer_tick_occured(long this_arg);
+       /// LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
+       public static native long build_commitment_secret(byte[] commitment_seed, long dx);
+       /// void TxCreationKeys_free(LDKTxCreationKeys this_ptr);
+       public static native void TxCreationKeys_free(long this_ptr);
+       /// LDKPublicKey TxCreationKeys_get_per_commitment_point(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_per_commitment_point(long this_ptr);
+       /// void TxCreationKeys_set_per_commitment_point(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_per_commitment_point(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_revocation_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_revocation_key(long this_ptr);
+       /// void TxCreationKeys_set_revocation_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_revocation_key(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_a_htlc_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_a_htlc_key(long this_ptr);
+       /// void TxCreationKeys_set_a_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_a_htlc_key(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_b_htlc_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_b_htlc_key(long this_ptr);
+       /// void TxCreationKeys_set_b_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_b_htlc_key(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_a_delayed_payment_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_a_delayed_payment_key(long this_ptr);
+       /// void TxCreationKeys_set_a_delayed_payment_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_a_delayed_payment_key(long this_ptr, long val);
+       /// MUST_USE_RES LDKTxCreationKeys TxCreationKeys_new(LDKPublicKey per_commitment_point_arg, LDKPublicKey revocation_key_arg, LDKPublicKey a_htlc_key_arg, LDKPublicKey b_htlc_key_arg, LDKPublicKey a_delayed_payment_key_arg);
+       public static native long TxCreationKeys_new(long per_commitment_point_arg, long revocation_key_arg, long a_htlc_key_arg, long b_htlc_key_arg, long a_delayed_payment_key_arg);
+       /// LDKCVec_u8Z TxCreationKeys_write(const LDKTxCreationKeys *obj);
+       public static native long TxCreationKeys_write(long obj);
+       /// LDKTxCreationKeys TxCreationKeys_read(LDKu8slice ser);
+       public static native long TxCreationKeys_read(long ser);
+       /// void PreCalculatedTxCreationKeys_free(LDKPreCalculatedTxCreationKeys this_ptr);
+       public static native void PreCalculatedTxCreationKeys_free(long this_ptr);
+       /// MUST_USE_RES LDKPreCalculatedTxCreationKeys PreCalculatedTxCreationKeys_new(LDKTxCreationKeys keys);
+       public static native long PreCalculatedTxCreationKeys_new(long keys);
+       /// MUST_USE_RES LDKTxCreationKeys PreCalculatedTxCreationKeys_trust_key_derivation(const LDKPreCalculatedTxCreationKeys *this_arg);
+       public static native long PreCalculatedTxCreationKeys_trust_key_derivation(long this_arg);
+       /// MUST_USE_RES LDKPublicKey PreCalculatedTxCreationKeys_per_commitment_point(const LDKPreCalculatedTxCreationKeys *this_arg);
+       public static native long PreCalculatedTxCreationKeys_per_commitment_point(long this_arg);
+       /// void ChannelPublicKeys_free(LDKChannelPublicKeys this_ptr);
+       public static native void ChannelPublicKeys_free(long this_ptr);
+       /// LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const LDKChannelPublicKeys *this_ptr);
+       public static native long ChannelPublicKeys_get_funding_pubkey(long this_ptr);
+       /// void ChannelPublicKeys_set_funding_pubkey(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
+       public static native void ChannelPublicKeys_set_funding_pubkey(long this_ptr, long val);
+       /// LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const LDKChannelPublicKeys *this_ptr);
+       public static native long ChannelPublicKeys_get_revocation_basepoint(long this_ptr);
+       /// void ChannelPublicKeys_set_revocation_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
+       public static native void ChannelPublicKeys_set_revocation_basepoint(long this_ptr, long val);
+       /// LDKPublicKey ChannelPublicKeys_get_payment_point(const LDKChannelPublicKeys *this_ptr);
+       public static native long ChannelPublicKeys_get_payment_point(long this_ptr);
+       /// void ChannelPublicKeys_set_payment_point(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
+       public static native void ChannelPublicKeys_set_payment_point(long this_ptr, long val);
+       /// LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const LDKChannelPublicKeys *this_ptr);
+       public static native long ChannelPublicKeys_get_delayed_payment_basepoint(long this_ptr);
+       /// void ChannelPublicKeys_set_delayed_payment_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
+       public static native void ChannelPublicKeys_set_delayed_payment_basepoint(long this_ptr, long val);
+       /// LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const LDKChannelPublicKeys *this_ptr);
+       public static native long ChannelPublicKeys_get_htlc_basepoint(long this_ptr);
+       /// void ChannelPublicKeys_set_htlc_basepoint(LDKChannelPublicKeys *this_ptr, LDKPublicKey val);
+       public static native void ChannelPublicKeys_set_htlc_basepoint(long this_ptr, long val);
+       /// MUST_USE_RES LDKChannelPublicKeys ChannelPublicKeys_new(LDKPublicKey funding_pubkey_arg, LDKPublicKey revocation_basepoint_arg, LDKPublicKey payment_point_arg, LDKPublicKey delayed_payment_basepoint_arg, LDKPublicKey htlc_basepoint_arg);
+       public static native long ChannelPublicKeys_new(long funding_pubkey_arg, long revocation_basepoint_arg, long payment_point_arg, long delayed_payment_basepoint_arg, long htlc_basepoint_arg);
+       /// LDKCVec_u8Z ChannelPublicKeys_write(const LDKChannelPublicKeys *obj);
+       public static native long ChannelPublicKeys_write(long obj);
+       /// LDKChannelPublicKeys ChannelPublicKeys_read(LDKu8slice ser);
+       public static native long ChannelPublicKeys_read(long ser);
+       /// MUST_USE_RES LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_derive_new(LDKPublicKey per_commitment_point, LDKPublicKey a_delayed_payment_base, LDKPublicKey a_htlc_base, LDKPublicKey b_revocation_base, LDKPublicKey b_htlc_base);
+       public static native long TxCreationKeys_derive_new(long per_commitment_point, long a_delayed_payment_base, long a_htlc_base, long b_revocation_base, long b_htlc_base);
+       /// LDKCVec_u8Z get_revokeable_redeemscript(LDKPublicKey revocation_key, uint16_t to_self_delay, LDKPublicKey delayed_payment_key);
+       public static native long get_revokeable_redeemscript(long revocation_key, long to_self_delay, long delayed_payment_key);
+       /// void HTLCOutputInCommitment_free(LDKHTLCOutputInCommitment this_ptr);
+       public static native void HTLCOutputInCommitment_free(long this_ptr);
+       /// bool HTLCOutputInCommitment_get_offered(const LDKHTLCOutputInCommitment *this_ptr);
+       public static native boolean HTLCOutputInCommitment_get_offered(long this_ptr);
+       /// void HTLCOutputInCommitment_set_offered(LDKHTLCOutputInCommitment *this_ptr, bool val);
+       public static native void HTLCOutputInCommitment_set_offered(long this_ptr, boolean va);
+       /// uint64_t HTLCOutputInCommitment_get_amount_msat(const LDKHTLCOutputInCommitment *this_ptr);
+       public static native long HTLCOutputInCommitment_get_amount_msat(long this_ptr);
+       /// void HTLCOutputInCommitment_set_amount_msat(LDKHTLCOutputInCommitment *this_ptr, uint64_t val);
+       public static native void HTLCOutputInCommitment_set_amount_msat(long this_ptr, long val);
+       /// uint32_t HTLCOutputInCommitment_get_cltv_expiry(const LDKHTLCOutputInCommitment *this_ptr);
+       public static native int HTLCOutputInCommitment_get_cltv_expiry(long this_ptr);
+       /// void HTLCOutputInCommitment_set_cltv_expiry(LDKHTLCOutputInCommitment *this_ptr, uint32_t val);
+       public static native void HTLCOutputInCommitment_set_cltv_expiry(long this_ptr, int val);
+       /// const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const LDKHTLCOutputInCommitment *this_ptr))[32];
+       public static native byte[]  HTLCOutputInCommitment_get_payment_hash(long this_ptr);
+       /// void HTLCOutputInCommitment_set_payment_hash(LDKHTLCOutputInCommitment *this_ptr, LDKThirtyTwoBytes val);
+       public static native void HTLCOutputInCommitment_set_payment_hash(long this_ptr, long val);
+       /// LDKCVec_u8Z HTLCOutputInCommitment_write(const LDKHTLCOutputInCommitment *obj);
+       public static native long HTLCOutputInCommitment_write(long obj);
+       /// LDKHTLCOutputInCommitment HTLCOutputInCommitment_read(LDKu8slice ser);
+       public static native long HTLCOutputInCommitment_read(long ser);
+       /// LDKCVec_u8Z get_htlc_redeemscript(const LDKHTLCOutputInCommitment *htlc, const LDKTxCreationKeys *keys);
+       public static native long get_htlc_redeemscript(long htlc, long keys);
+       /// LDKCVec_u8Z make_funding_redeemscript(LDKPublicKey a, LDKPublicKey b);
+       public static native long make_funding_redeemscript(long a, long b);
+       /// LDKCVec_u8Z build_htlc_transaction(const uint8_t (*prev_hash)[32], uint32_t feerate_per_kw, uint16_t to_self_delay, const LDKHTLCOutputInCommitment *htlc, LDKPublicKey a_delayed_payment_key, LDKPublicKey revocation_key);
+       public static native long build_htlc_transaction(byte[] prev_hash, int feerate_per_kw, long to_self_delay, long htlc, long a_delayed_payment_key, long revocation_key);
+       /// void LocalCommitmentTransaction_free(LDKLocalCommitmentTransaction this_ptr);
+       public static native void LocalCommitmentTransaction_free(long this_ptr);
+       /// LDKCVec_u8Z LocalCommitmentTransaction_get_unsigned_tx(const LDKLocalCommitmentTransaction *this_ptr);
+       public static native long LocalCommitmentTransaction_get_unsigned_tx(long this_ptr);
+       /// void LocalCommitmentTransaction_set_unsigned_tx(LDKLocalCommitmentTransaction *this_ptr, LDKCVec_u8Z val);
+       public static native void LocalCommitmentTransaction_set_unsigned_tx(long this_ptr, long val);
+       /// LDKSignature LocalCommitmentTransaction_get_their_sig(const LDKLocalCommitmentTransaction *this_ptr);
+       public static native long LocalCommitmentTransaction_get_their_sig(long this_ptr);
+       /// void LocalCommitmentTransaction_set_their_sig(LDKLocalCommitmentTransaction *this_ptr, LDKSignature val);
+       public static native void LocalCommitmentTransaction_set_their_sig(long this_ptr, long val);
+       /// uint32_t LocalCommitmentTransaction_get_feerate_per_kw(const LDKLocalCommitmentTransaction *this_ptr);
+       public static native int LocalCommitmentTransaction_get_feerate_per_kw(long this_ptr);
+       /// void LocalCommitmentTransaction_set_feerate_per_kw(LDKLocalCommitmentTransaction *this_ptr, uint32_t val);
+       public static native void LocalCommitmentTransaction_set_feerate_per_kw(long this_ptr, int val);
+       /// void LocalCommitmentTransaction_set_per_htlc(LDKLocalCommitmentTransaction *this_ptr, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ val);
+       public static native void LocalCommitmentTransaction_set_per_htlc(long this_ptr, long val);
+       /// MUST_USE_RES LDKLocalCommitmentTransaction LocalCommitmentTransaction_new_missing_local_sig(LDKCVec_u8Z unsigned_tx, LDKSignature their_sig, LDKPublicKey our_funding_key, LDKPublicKey their_funding_key, LDKTxCreationKeys local_keys, uint32_t feerate_per_kw, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data);
+       public static native long LocalCommitmentTransaction_new_missing_local_sig(long unsigned_tx, long their_sig, long our_funding_key, long their_funding_key, long local_keys, int feerate_per_kw, long htlc_data);
+       /// MUST_USE_RES LDKTxCreationKeys LocalCommitmentTransaction_trust_key_derivation(const LDKLocalCommitmentTransaction *this_arg);
+       public static native long LocalCommitmentTransaction_trust_key_derivation(long this_arg);
+       /// MUST_USE_RES LDKThirtyTwoBytes LocalCommitmentTransaction_txid(const LDKLocalCommitmentTransaction *this_arg);
+       public static native long LocalCommitmentTransaction_txid(long this_arg);
+       /// MUST_USE_RES LDKSignature LocalCommitmentTransaction_get_local_sig(const LDKLocalCommitmentTransaction *this_arg, const uint8_t (*funding_key)[32], LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
+       public static native long LocalCommitmentTransaction_get_local_sig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
+       /// MUST_USE_RES LDKCResult_CVec_SignatureZNoneZ LocalCommitmentTransaction_get_htlc_sigs(const LDKLocalCommitmentTransaction *this_arg, const uint8_t (*htlc_base_key)[32], uint16_t local_csv);
+       public static native long LocalCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, long local_csv);
+       /// LDKCVec_u8Z LocalCommitmentTransaction_write(const LDKLocalCommitmentTransaction *obj);
+       public static native long LocalCommitmentTransaction_write(long obj);
+       /// LDKLocalCommitmentTransaction LocalCommitmentTransaction_read(LDKu8slice ser);
+       public static native long LocalCommitmentTransaction_read(long ser);
+       /// void InitFeatures_free(LDKInitFeatures this_ptr);
+       public static native void InitFeatures_free(long this_ptr);
+       /// void NodeFeatures_free(LDKNodeFeatures this_ptr);
+       public static native void NodeFeatures_free(long this_ptr);
+       /// void ChannelFeatures_free(LDKChannelFeatures this_ptr);
+       public static native void ChannelFeatures_free(long this_ptr);
+       /// void RouteHop_free(LDKRouteHop this_ptr);
+       public static native void RouteHop_free(long this_ptr);
+       /// LDKPublicKey RouteHop_get_pubkey(const LDKRouteHop *this_ptr);
+       public static native long RouteHop_get_pubkey(long this_ptr);
+       /// void RouteHop_set_pubkey(LDKRouteHop *this_ptr, LDKPublicKey val);
+       public static native void RouteHop_set_pubkey(long this_ptr, long val);
+       /// uint64_t RouteHop_get_short_channel_id(const LDKRouteHop *this_ptr);
+       public static native long RouteHop_get_short_channel_id(long this_ptr);
+       /// void RouteHop_set_short_channel_id(LDKRouteHop *this_ptr, uint64_t val);
+       public static native void RouteHop_set_short_channel_id(long this_ptr, long val);
+       /// uint64_t RouteHop_get_fee_msat(const LDKRouteHop *this_ptr);
+       public static native long RouteHop_get_fee_msat(long this_ptr);
+       /// void RouteHop_set_fee_msat(LDKRouteHop *this_ptr, uint64_t val);
+       public static native void RouteHop_set_fee_msat(long this_ptr, long val);
+       /// uint32_t RouteHop_get_cltv_expiry_delta(const LDKRouteHop *this_ptr);
+       public static native int RouteHop_get_cltv_expiry_delta(long this_ptr);
+       /// void RouteHop_set_cltv_expiry_delta(LDKRouteHop *this_ptr, uint32_t val);
+       public static native void RouteHop_set_cltv_expiry_delta(long this_ptr, int val);
+       /// void Route_free(LDKRoute this_ptr);
+       public static native void Route_free(long this_ptr);
+       /// void Route_set_paths(LDKRoute *this_ptr, LDKCVec_CVec_RouteHopZZ val);
+       public static native void Route_set_paths(long this_ptr, long val);
+       /// MUST_USE_RES LDKRoute Route_new(LDKCVec_CVec_RouteHopZZ paths_arg);
+       public static native long Route_new(long paths_arg);
+       /// LDKCVec_u8Z Route_write(const LDKRoute *obj);
+       public static native long Route_write(long obj);
+       /// LDKRoute Route_read(LDKu8slice ser);
+       public static native long Route_read(long ser);
+       /// void RouteHint_free(LDKRouteHint this_ptr);
+       public static native void RouteHint_free(long this_ptr);
+       /// LDKPublicKey RouteHint_get_src_node_id(const LDKRouteHint *this_ptr);
+       public static native long RouteHint_get_src_node_id(long this_ptr);
+       /// void RouteHint_set_src_node_id(LDKRouteHint *this_ptr, LDKPublicKey val);
+       public static native void RouteHint_set_src_node_id(long this_ptr, long val);
+       /// uint64_t RouteHint_get_short_channel_id(const LDKRouteHint *this_ptr);
+       public static native long RouteHint_get_short_channel_id(long this_ptr);
+       /// void RouteHint_set_short_channel_id(LDKRouteHint *this_ptr, uint64_t val);
+       public static native void RouteHint_set_short_channel_id(long this_ptr, long val);
+       /// LDKRoutingFees RouteHint_get_fees(const LDKRouteHint *this_ptr);
+       public static native long RouteHint_get_fees(long this_ptr);
+       /// void RouteHint_set_fees(LDKRouteHint *this_ptr, LDKRoutingFees val);
+       public static native void RouteHint_set_fees(long this_ptr, long val);
+       /// uint16_t RouteHint_get_cltv_expiry_delta(const LDKRouteHint *this_ptr);
+       public static native long RouteHint_get_cltv_expiry_delta(long this_ptr);
+       /// void RouteHint_set_cltv_expiry_delta(LDKRouteHint *this_ptr, uint16_t val);
+       public static native void RouteHint_set_cltv_expiry_delta(long this_ptr, long val);
+       /// uint64_t RouteHint_get_htlc_minimum_msat(const LDKRouteHint *this_ptr);
+       public static native long RouteHint_get_htlc_minimum_msat(long this_ptr);
+       /// void RouteHint_set_htlc_minimum_msat(LDKRouteHint *this_ptr, uint64_t val);
+       public static native void RouteHint_set_htlc_minimum_msat(long this_ptr, long val);
+       /// MUST_USE_RES LDKRouteHint RouteHint_new(LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg);
+       public static native long RouteHint_new(long src_node_id_arg, long short_channel_id_arg, long fees_arg, long cltv_expiry_delta_arg, long htlc_minimum_msat_arg);
+       /// LDKCResult_RouteLightningErrorZ get_route(LDKPublicKey our_node_id, const LDKNetworkGraph *network, LDKPublicKey target, LDKCVec_ChannelDetailsZ *first_hops, LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, LDKLogger logger);
+       public static native long get_route(long our_node_id, long network, long target, long first_hops, long last_hops, long final_value_msa, int final_cltv, long logger);
+       /// void NetworkGraph_free(LDKNetworkGraph this_ptr);
+       public static native void NetworkGraph_free(long this_ptr);
+       /// void LockedNetworkGraph_free(LDKLockedNetworkGraph this_ptr);
+       public static native void LockedNetworkGraph_free(long this_ptr);
+       /// void NetGraphMsgHandler_free(LDKNetGraphMsgHandler this_ptr);
+       public static native void NetGraphMsgHandler_free(long this_ptr);
+       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_new(LDKChainWatchInterface chain_monitor, LDKLogger logger);
+       public static native long NetGraphMsgHandler_new(long chain_monitor, long logger);
+       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(LDKChainWatchInterface chain_monitor, LDKLogger logger, LDKNetworkGraph network_graph);
+       public static native long NetGraphMsgHandler_from_net_graph(long chain_monitor, long logger, long network_graph);
+       /// MUST_USE_RES LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const LDKNetGraphMsgHandler *this_arg);
+       public static native long NetGraphMsgHandler_read_locked_graph(long this_arg);
+       /// MUST_USE_RES LDKNetworkGraph LockedNetworkGraph_graph(const LDKLockedNetworkGraph *this_arg);
+       public static native long LockedNetworkGraph_graph(long this_arg);
+       /// LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const LDKNetGraphMsgHandler *this_arg);
+       public static native long NetGraphMsgHandler_as_RoutingMessageHandler(long this_arg);
+       /// void DirectionalChannelInfo_free(LDKDirectionalChannelInfo this_ptr);
+       public static native void DirectionalChannelInfo_free(long this_ptr);
+       /// uint32_t DirectionalChannelInfo_get_last_update(const LDKDirectionalChannelInfo *this_ptr);
+       public static native int DirectionalChannelInfo_get_last_update(long this_ptr);
+       /// void DirectionalChannelInfo_set_last_update(LDKDirectionalChannelInfo *this_ptr, uint32_t val);
+       public static native void DirectionalChannelInfo_set_last_update(long this_ptr, int val);
+       /// bool DirectionalChannelInfo_get_enabled(const LDKDirectionalChannelInfo *this_ptr);
+       public static native boolean DirectionalChannelInfo_get_enabled(long this_ptr);
+       /// void DirectionalChannelInfo_set_enabled(LDKDirectionalChannelInfo *this_ptr, bool val);
+       public static native void DirectionalChannelInfo_set_enabled(long this_ptr, boolean va);
+       /// uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const LDKDirectionalChannelInfo *this_ptr);
+       public static native long DirectionalChannelInfo_get_cltv_expiry_delta(long this_ptr);
+       /// void DirectionalChannelInfo_set_cltv_expiry_delta(LDKDirectionalChannelInfo *this_ptr, uint16_t val);
+       public static native void DirectionalChannelInfo_set_cltv_expiry_delta(long this_ptr, long val);
+       /// uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const LDKDirectionalChannelInfo *this_ptr);
+       public static native long DirectionalChannelInfo_get_htlc_minimum_msat(long this_ptr);
+       /// void DirectionalChannelInfo_set_htlc_minimum_msat(LDKDirectionalChannelInfo *this_ptr, uint64_t val);
+       public static native void DirectionalChannelInfo_set_htlc_minimum_msat(long this_ptr, long val);
+       /// LDKCVec_u8Z DirectionalChannelInfo_write(const LDKDirectionalChannelInfo *obj);
+       public static native long DirectionalChannelInfo_write(long obj);
+       /// LDKDirectionalChannelInfo DirectionalChannelInfo_read(LDKu8slice ser);
+       public static native long DirectionalChannelInfo_read(long ser);
+       /// void ChannelInfo_free(LDKChannelInfo this_ptr);
+       public static native void ChannelInfo_free(long this_ptr);
+       /// LDKPublicKey ChannelInfo_get_node_one(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_node_one(long this_ptr);
+       /// void ChannelInfo_set_node_one(LDKChannelInfo *this_ptr, LDKPublicKey val);
+       public static native void ChannelInfo_set_node_one(long this_ptr, long val);
+       /// LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_one_to_two(long this_ptr);
+       /// void ChannelInfo_set_one_to_two(LDKChannelInfo *this_ptr, LDKDirectionalChannelInfo val);
+       public static native void ChannelInfo_set_one_to_two(long this_ptr, long val);
+       /// LDKPublicKey ChannelInfo_get_node_two(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_node_two(long this_ptr);
+       /// void ChannelInfo_set_node_two(LDKChannelInfo *this_ptr, LDKPublicKey val);
+       public static native void ChannelInfo_set_node_two(long this_ptr, long val);
+       /// LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_two_to_one(long this_ptr);
+       /// void ChannelInfo_set_two_to_one(LDKChannelInfo *this_ptr, LDKDirectionalChannelInfo val);
+       public static native void ChannelInfo_set_two_to_one(long this_ptr, long val);
+       /// LDKCVec_u8Z ChannelInfo_write(const LDKChannelInfo *obj);
+       public static native long ChannelInfo_write(long obj);
+       /// LDKChannelInfo ChannelInfo_read(LDKu8slice ser);
+       public static native long ChannelInfo_read(long ser);
+       /// void RoutingFees_free(LDKRoutingFees this_ptr);
+       public static native void RoutingFees_free(long this_ptr);
+       /// uint32_t RoutingFees_get_base_msat(const LDKRoutingFees *this_ptr);
+       public static native int RoutingFees_get_base_msat(long this_ptr);
+       /// void RoutingFees_set_base_msat(LDKRoutingFees *this_ptr, uint32_t val);
+       public static native void RoutingFees_set_base_msat(long this_ptr, int val);
+       /// uint32_t RoutingFees_get_proportional_millionths(const LDKRoutingFees *this_ptr);
+       public static native int RoutingFees_get_proportional_millionths(long this_ptr);
+       /// void RoutingFees_set_proportional_millionths(LDKRoutingFees *this_ptr, uint32_t val);
+       public static native void RoutingFees_set_proportional_millionths(long this_ptr, int val);
+       /// MUST_USE_RES LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
+       public static native long RoutingFees_new(int base_msat_arg, int proportional_millionths_arg);
+       /// LDKRoutingFees RoutingFees_read(LDKu8slice ser);
+       public static native long RoutingFees_read(long ser);
+       /// LDKCVec_u8Z RoutingFees_write(const LDKRoutingFees *obj);
+       public static native long RoutingFees_write(long obj);
+       /// void NodeAnnouncementInfo_free(LDKNodeAnnouncementInfo this_ptr);
+       public static native void NodeAnnouncementInfo_free(long this_ptr);
+       /// uint32_t NodeAnnouncementInfo_get_last_update(const LDKNodeAnnouncementInfo *this_ptr);
+       public static native int NodeAnnouncementInfo_get_last_update(long this_ptr);
+       /// void NodeAnnouncementInfo_set_last_update(LDKNodeAnnouncementInfo *this_ptr, uint32_t val);
+       public static native void NodeAnnouncementInfo_set_last_update(long this_ptr, int val);
+       /// const uint8_t (*NodeAnnouncementInfo_get_rgb(const LDKNodeAnnouncementInfo *this_ptr))[3];
+       public static native byte[]  NodeAnnouncementInfo_get_rgb(long this_ptr);
+       /// void NodeAnnouncementInfo_set_rgb(LDKNodeAnnouncementInfo *this_ptr, LDKThreeBytes val);
+       public static native void NodeAnnouncementInfo_set_rgb(long this_ptr, long val);
+       /// const uint8_t (*NodeAnnouncementInfo_get_alias(const LDKNodeAnnouncementInfo *this_ptr))[32];
+       public static native byte[]  NodeAnnouncementInfo_get_alias(long this_ptr);
+       /// void NodeAnnouncementInfo_set_alias(LDKNodeAnnouncementInfo *this_ptr, LDKThirtyTwoBytes val);
+       public static native void NodeAnnouncementInfo_set_alias(long this_ptr, long val);
+       /// void NodeAnnouncementInfo_set_addresses(LDKNodeAnnouncementInfo *this_ptr, LDKCVec_NetAddressZ val);
+       public static native void NodeAnnouncementInfo_set_addresses(long this_ptr, long val);
+       /// LDKCVec_u8Z NodeAnnouncementInfo_write(const LDKNodeAnnouncementInfo *obj);
+       public static native long NodeAnnouncementInfo_write(long obj);
+       /// LDKNodeAnnouncementInfo NodeAnnouncementInfo_read(LDKu8slice ser);
+       public static native long NodeAnnouncementInfo_read(long ser);
+       /// void NodeInfo_free(LDKNodeInfo this_ptr);
+       public static native void NodeInfo_free(long this_ptr);
+       /// void NodeInfo_set_channels(LDKNodeInfo *this_ptr, LDKCVec_u64Z val);
+       public static native void NodeInfo_set_channels(long this_ptr, long val);
+       /// LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const LDKNodeInfo *this_ptr);
+       public static native long NodeInfo_get_lowest_inbound_channel_fees(long this_ptr);
+       /// void NodeInfo_set_lowest_inbound_channel_fees(LDKNodeInfo *this_ptr, LDKRoutingFees val);
+       public static native void NodeInfo_set_lowest_inbound_channel_fees(long this_ptr, long val);
+       /// LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const LDKNodeInfo *this_ptr);
+       public static native long NodeInfo_get_announcement_info(long this_ptr);
+       /// void NodeInfo_set_announcement_info(LDKNodeInfo *this_ptr, LDKNodeAnnouncementInfo val);
+       public static native void NodeInfo_set_announcement_info(long this_ptr, long val);
+       /// MUST_USE_RES LDKNodeInfo NodeInfo_new(LDKCVec_u64Z channels_arg, LDKRoutingFees lowest_inbound_channel_fees_arg, LDKNodeAnnouncementInfo announcement_info_arg);
+       public static native long NodeInfo_new(long channels_arg, long lowest_inbound_channel_fees_arg, long announcement_info_arg);
+       /// LDKCVec_u8Z NodeInfo_write(const LDKNodeInfo *obj);
+       public static native long NodeInfo_write(long obj);
+       /// LDKNodeInfo NodeInfo_read(LDKu8slice ser);
+       public static native long NodeInfo_read(long ser);
+       /// LDKCVec_u8Z NetworkGraph_write(const LDKNetworkGraph *obj);
+       public static native long NetworkGraph_write(long obj);
+       /// LDKNetworkGraph NetworkGraph_read(LDKu8slice ser);
+       public static native long NetworkGraph_read(long ser);
+       /// MUST_USE_RES LDKNetworkGraph NetworkGraph_new(void);
+       public static native long NetworkGraph_new();
+       /// void NetworkGraph_close_channel_from_update(LDKNetworkGraph *this_arg, uint64_t short_channel_id, bool is_permanent);
+       public static native void NetworkGraph_close_channel_from_update(long this_arg, long short_channel_id, boolean is_permanent);
+}
index 60c1fe1d937ccece9c364d91f357601e49280053..771f773c1ab55ee609cdc6c02d6aa42f9e1e534c 100644 (file)
-#include "org_ldk_bindings.h"
+#include "org_ldk_impl_bindings.h"
 #include <rust_types.h>
-
 #include <lightning.h>
-
-JNIEXPORT void JNICALL C2TupleOutPointScriptZfree(JNIEnv * _env, jclass _b, jlong arg) {
+#include <assert.h>
+
+#include <string.h>
+
+typedef struct LDKMessageSendEventsProvider_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID get_and_clear_pending_msg_events_meth;
+} LDKMessageSendEventsProvider_JCalls;
+void get_and_clear_pending_msg_events_jcall(void* this_arg/* TODO + rtype */) {
+       LDKMessageSendEventsProvider_JCalls *arg = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_and_clear_pending_msg_events_meth);
+}
+void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) {
+       LDKMessageSendEventsProvider_JCalls *arg = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKMessageSendEventsProvider_JCalls *calls = malloc(sizeof(LDKMessageSendEventsProvider_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->get_and_clear_pending_msg_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_msg_events", "TODO");
+       assert(calls->get_and_clear_pending_msg_events_meth != NULL);
+
+       LDKMessageSendEventsProvider *ret = malloc(sizeof(LDKMessageSendEventsProvider));
+       ret->this_arg = (void*) calls;
+       ret->get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_jcall;
+       ret->free = LDKMessageSendEventsProvider_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKEventsProvider_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID get_and_clear_pending_events_meth;
+} LDKEventsProvider_JCalls;
+void get_and_clear_pending_events_jcall(void* this_arg/* TODO + rtype */) {
+       LDKEventsProvider_JCalls *arg = (LDKEventsProvider_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_and_clear_pending_events_meth);
+}
+void LDKEventsProvider_JCalls_free(void* this_arg) {
+       LDKEventsProvider_JCalls *arg = (LDKEventsProvider_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKEventsProvider_JCalls *calls = malloc(sizeof(LDKEventsProvider_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->get_and_clear_pending_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_events", "TODO");
+       assert(calls->get_and_clear_pending_events_meth != NULL);
+
+       LDKEventsProvider *ret = malloc(sizeof(LDKEventsProvider));
+       ret->this_arg = (void*) calls;
+       ret->get_and_clear_pending_events = get_and_clear_pending_events_jcall;
+       ret->free = LDKEventsProvider_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKLogger_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID log_meth;
+} LDKLogger_JCalls;
+void log_jcall(void* this_arg/* TODO + rtype */) {
+       LDKLogger_JCalls *arg = (LDKLogger_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->log_meth);
+}
+void LDKLogger_JCalls_free(void* this_arg) {
+       LDKLogger_JCalls *arg = (LDKLogger_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKLogger_JCalls *calls = malloc(sizeof(LDKLogger_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->log_meth = (*env)->GetMethodID(env, c, "log", "TODO");
+       assert(calls->log_meth != NULL);
+
+       LDKLogger *ret = malloc(sizeof(LDKLogger));
+       ret->this_arg = (void*) calls;
+       ret->log = log_jcall;
+       ret->free = LDKLogger_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKChainWatchInterface_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID install_watch_tx_meth;
+       jmethodID install_watch_outpoint_meth;
+       jmethodID watch_all_txn_meth;
+       jmethodID get_chain_utxo_meth;
+       jmethodID filter_block_meth;
+       jmethodID reentered_meth;
+} LDKChainWatchInterface_JCalls;
+void install_watch_tx_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->install_watch_tx_meth);
+}
+void install_watch_outpoint_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->install_watch_outpoint_meth);
+}
+void watch_all_txn_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->watch_all_txn_meth);
+}
+void get_chain_utxo_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_chain_utxo_meth);
+}
+void filter_block_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->filter_block_meth);
+}
+void reentered_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->reentered_meth);
+}
+void LDKChainWatchInterface_JCalls_free(void* this_arg) {
+       LDKChainWatchInterface_JCalls *arg = (LDKChainWatchInterface_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChainWatchInterface_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKChainWatchInterface_JCalls *calls = malloc(sizeof(LDKChainWatchInterface_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->install_watch_tx_meth = (*env)->GetMethodID(env, c, "install_watch_tx", "TODO");
+       assert(calls->install_watch_tx_meth != NULL);
+       calls->install_watch_outpoint_meth = (*env)->GetMethodID(env, c, "install_watch_outpoint", "TODO");
+       assert(calls->install_watch_outpoint_meth != NULL);
+       calls->watch_all_txn_meth = (*env)->GetMethodID(env, c, "watch_all_txn", "TODO");
+       assert(calls->watch_all_txn_meth != NULL);
+       calls->get_chain_utxo_meth = (*env)->GetMethodID(env, c, "get_chain_utxo", "TODO");
+       assert(calls->get_chain_utxo_meth != NULL);
+       calls->filter_block_meth = (*env)->GetMethodID(env, c, "filter_block", "TODO");
+       assert(calls->filter_block_meth != NULL);
+       calls->reentered_meth = (*env)->GetMethodID(env, c, "reentered", "TODO");
+       assert(calls->reentered_meth != NULL);
+
+       LDKChainWatchInterface *ret = malloc(sizeof(LDKChainWatchInterface));
+       ret->this_arg = (void*) calls;
+       ret->install_watch_tx = install_watch_tx_jcall;
+       ret->install_watch_outpoint = install_watch_outpoint_jcall;
+       ret->watch_all_txn = watch_all_txn_jcall;
+       ret->get_chain_utxo = get_chain_utxo_jcall;
+       ret->filter_block = filter_block_jcall;
+       ret->reentered = reentered_jcall;
+       ret->free = LDKChainWatchInterface_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKBroadcasterInterface_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID broadcast_transaction_meth;
+} LDKBroadcasterInterface_JCalls;
+void broadcast_transaction_jcall(void* this_arg/* TODO + rtype */) {
+       LDKBroadcasterInterface_JCalls *arg = (LDKBroadcasterInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->broadcast_transaction_meth);
+}
+void LDKBroadcasterInterface_JCalls_free(void* this_arg) {
+       LDKBroadcasterInterface_JCalls *arg = (LDKBroadcasterInterface_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKBroadcasterInterface_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKBroadcasterInterface_JCalls *calls = malloc(sizeof(LDKBroadcasterInterface_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->broadcast_transaction_meth = (*env)->GetMethodID(env, c, "broadcast_transaction", "TODO");
+       assert(calls->broadcast_transaction_meth != NULL);
+
+       LDKBroadcasterInterface *ret = malloc(sizeof(LDKBroadcasterInterface));
+       ret->this_arg = (void*) calls;
+       ret->broadcast_transaction = broadcast_transaction_jcall;
+       ret->free = LDKBroadcasterInterface_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKChainListener_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID block_connected_meth;
+       jmethodID block_disconnected_meth;
+} LDKChainListener_JCalls;
+void block_connected_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainListener_JCalls *arg = (LDKChainListener_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->block_connected_meth);
+}
+void block_disconnected_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChainListener_JCalls *arg = (LDKChainListener_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->block_disconnected_meth);
+}
+void LDKChainListener_JCalls_free(void* this_arg) {
+       LDKChainListener_JCalls *arg = (LDKChainListener_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChainListener_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKChainListener_JCalls *calls = malloc(sizeof(LDKChainListener_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->block_connected_meth = (*env)->GetMethodID(env, c, "block_connected", "TODO");
+       assert(calls->block_connected_meth != NULL);
+       calls->block_disconnected_meth = (*env)->GetMethodID(env, c, "block_disconnected", "TODO");
+       assert(calls->block_disconnected_meth != NULL);
+
+       LDKChainListener *ret = malloc(sizeof(LDKChainListener));
+       ret->this_arg = (void*) calls;
+       ret->block_connected = block_connected_jcall;
+       ret->block_disconnected = block_disconnected_jcall;
+       ret->free = LDKChainListener_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKFeeEstimator_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID get_est_sat_per_1000_weight_meth;
+} LDKFeeEstimator_JCalls;
+void get_est_sat_per_1000_weight_jcall(void* this_arg/* TODO + rtype */) {
+       LDKFeeEstimator_JCalls *arg = (LDKFeeEstimator_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_est_sat_per_1000_weight_meth);
+}
+void LDKFeeEstimator_JCalls_free(void* this_arg) {
+       LDKFeeEstimator_JCalls *arg = (LDKFeeEstimator_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKFeeEstimator_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKFeeEstimator_JCalls *calls = malloc(sizeof(LDKFeeEstimator_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->get_est_sat_per_1000_weight_meth = (*env)->GetMethodID(env, c, "get_est_sat_per_1000_weight", "TODO");
+       assert(calls->get_est_sat_per_1000_weight_meth != NULL);
+
+       LDKFeeEstimator *ret = malloc(sizeof(LDKFeeEstimator));
+       ret->this_arg = (void*) calls;
+       ret->get_est_sat_per_1000_weight = get_est_sat_per_1000_weight_jcall;
+       ret->free = LDKFeeEstimator_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKChannelKeys_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID get_per_commitment_point_meth;
+       jmethodID release_commitment_secret_meth;
+       jmethodID key_derivation_params_meth;
+       jmethodID sign_remote_commitment_meth;
+       jmethodID sign_local_commitment_meth;
+       jmethodID sign_local_commitment_htlc_transactions_meth;
+       jmethodID sign_justice_transaction_meth;
+       jmethodID sign_remote_htlc_transaction_meth;
+       jmethodID sign_closing_transaction_meth;
+       jmethodID sign_channel_announcement_meth;
+       jmethodID on_accept_meth;
+} LDKChannelKeys_JCalls;
+void get_per_commitment_point_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_per_commitment_point_meth);
+}
+void release_commitment_secret_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->release_commitment_secret_meth);
+}
+void key_derivation_params_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->key_derivation_params_meth);
+}
+void sign_remote_commitment_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_remote_commitment_meth);
+}
+void sign_local_commitment_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_local_commitment_meth);
+}
+void sign_local_commitment_htlc_transactions_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_local_commitment_htlc_transactions_meth);
+}
+void sign_justice_transaction_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_justice_transaction_meth);
+}
+void sign_remote_htlc_transaction_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_remote_htlc_transaction_meth);
+}
+void sign_closing_transaction_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_closing_transaction_meth);
+}
+void sign_channel_announcement_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->sign_channel_announcement_meth);
+}
+void on_accept_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->on_accept_meth);
+}
+void* LDKChannelKeys_JCalls_clone(void* this_arg) {
+       LDKChannelKeys_JCalls *ret = malloc(sizeof(LDKChannelKeys_JCalls));
+       memcpy(ret, this_arg, sizeof(LDKChannelKeys_JCalls));
+       return ret;
+}
+void LDKChannelKeys_JCalls_free(void* this_arg) {
+       LDKChannelKeys_JCalls *arg = (LDKChannelKeys_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKChannelKeys_JCalls *calls = malloc(sizeof(LDKChannelKeys_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->get_per_commitment_point_meth = (*env)->GetMethodID(env, c, "get_per_commitment_point", "TODO");
+       assert(calls->get_per_commitment_point_meth != NULL);
+       calls->release_commitment_secret_meth = (*env)->GetMethodID(env, c, "release_commitment_secret", "TODO");
+       assert(calls->release_commitment_secret_meth != NULL);
+       calls->key_derivation_params_meth = (*env)->GetMethodID(env, c, "key_derivation_params", "TODO");
+       assert(calls->key_derivation_params_meth != NULL);
+       calls->sign_remote_commitment_meth = (*env)->GetMethodID(env, c, "sign_remote_commitment", "TODO");
+       assert(calls->sign_remote_commitment_meth != NULL);
+       calls->sign_local_commitment_meth = (*env)->GetMethodID(env, c, "sign_local_commitment", "TODO");
+       assert(calls->sign_local_commitment_meth != NULL);
+       calls->sign_local_commitment_htlc_transactions_meth = (*env)->GetMethodID(env, c, "sign_local_commitment_htlc_transactions", "TODO");
+       assert(calls->sign_local_commitment_htlc_transactions_meth != NULL);
+       calls->sign_justice_transaction_meth = (*env)->GetMethodID(env, c, "sign_justice_transaction", "TODO");
+       assert(calls->sign_justice_transaction_meth != NULL);
+       calls->sign_remote_htlc_transaction_meth = (*env)->GetMethodID(env, c, "sign_remote_htlc_transaction", "TODO");
+       assert(calls->sign_remote_htlc_transaction_meth != NULL);
+       calls->sign_closing_transaction_meth = (*env)->GetMethodID(env, c, "sign_closing_transaction", "TODO");
+       assert(calls->sign_closing_transaction_meth != NULL);
+       calls->sign_channel_announcement_meth = (*env)->GetMethodID(env, c, "sign_channel_announcement", "TODO");
+       assert(calls->sign_channel_announcement_meth != NULL);
+       calls->on_accept_meth = (*env)->GetMethodID(env, c, "on_accept", "TODO");
+       assert(calls->on_accept_meth != NULL);
+
+       LDKChannelKeys *ret = malloc(sizeof(LDKChannelKeys));
+       ret->this_arg = (void*) calls;
+       ret->get_per_commitment_point = get_per_commitment_point_jcall;
+       ret->release_commitment_secret = release_commitment_secret_jcall;
+       ret->key_derivation_params = key_derivation_params_jcall;
+       ret->sign_remote_commitment = sign_remote_commitment_jcall;
+       ret->sign_local_commitment = sign_local_commitment_jcall;
+       ret->sign_local_commitment_htlc_transactions = sign_local_commitment_htlc_transactions_jcall;
+       ret->sign_justice_transaction = sign_justice_transaction_jcall;
+       ret->sign_remote_htlc_transaction = sign_remote_htlc_transaction_jcall;
+       ret->sign_closing_transaction = sign_closing_transaction_jcall;
+       ret->sign_channel_announcement = sign_channel_announcement_jcall;
+       ret->on_accept = on_accept_jcall;
+       ret->clone = LDKChannelKeys_JCalls_clone;
+       ret->free = LDKChannelKeys_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKKeysInterface_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID get_node_secret_meth;
+       jmethodID get_destination_script_meth;
+       jmethodID get_shutdown_pubkey_meth;
+       jmethodID get_channel_keys_meth;
+       jmethodID get_secure_random_bytes_meth;
+} LDKKeysInterface_JCalls;
+void get_node_secret_jcall(void* this_arg/* TODO + rtype */) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_node_secret_meth);
+}
+void get_destination_script_jcall(void* this_arg/* TODO + rtype */) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_destination_script_meth);
+}
+void get_shutdown_pubkey_jcall(void* this_arg/* TODO + rtype */) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_shutdown_pubkey_meth);
+}
+void get_channel_keys_jcall(void* this_arg/* TODO + rtype */) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_channel_keys_meth);
+}
+void get_secure_random_bytes_jcall(void* this_arg/* TODO + rtype */) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_secure_random_bytes_meth);
+}
+void LDKKeysInterface_JCalls_free(void* this_arg) {
+       LDKKeysInterface_JCalls *arg = (LDKKeysInterface_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKKeysInterface_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKKeysInterface_JCalls *calls = malloc(sizeof(LDKKeysInterface_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->get_node_secret_meth = (*env)->GetMethodID(env, c, "get_node_secret", "TODO");
+       assert(calls->get_node_secret_meth != NULL);
+       calls->get_destination_script_meth = (*env)->GetMethodID(env, c, "get_destination_script", "TODO");
+       assert(calls->get_destination_script_meth != NULL);
+       calls->get_shutdown_pubkey_meth = (*env)->GetMethodID(env, c, "get_shutdown_pubkey", "TODO");
+       assert(calls->get_shutdown_pubkey_meth != NULL);
+       calls->get_channel_keys_meth = (*env)->GetMethodID(env, c, "get_channel_keys", "TODO");
+       assert(calls->get_channel_keys_meth != NULL);
+       calls->get_secure_random_bytes_meth = (*env)->GetMethodID(env, c, "get_secure_random_bytes", "TODO");
+       assert(calls->get_secure_random_bytes_meth != NULL);
+
+       LDKKeysInterface *ret = malloc(sizeof(LDKKeysInterface));
+       ret->this_arg = (void*) calls;
+       ret->get_node_secret = get_node_secret_jcall;
+       ret->get_destination_script = get_destination_script_jcall;
+       ret->get_shutdown_pubkey = get_shutdown_pubkey_jcall;
+       ret->get_channel_keys = get_channel_keys_jcall;
+       ret->get_secure_random_bytes = get_secure_random_bytes_jcall;
+       ret->free = LDKKeysInterface_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKManyChannelMonitor_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID add_monitor_meth;
+       jmethodID update_monitor_meth;
+       jmethodID get_and_clear_pending_monitor_events_meth;
+} LDKManyChannelMonitor_JCalls;
+void add_monitor_jcall(void* this_arg/* TODO + rtype */) {
+       LDKManyChannelMonitor_JCalls *arg = (LDKManyChannelMonitor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->add_monitor_meth);
+}
+void update_monitor_jcall(void* this_arg/* TODO + rtype */) {
+       LDKManyChannelMonitor_JCalls *arg = (LDKManyChannelMonitor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->update_monitor_meth);
+}
+void get_and_clear_pending_monitor_events_jcall(void* this_arg/* TODO + rtype */) {
+       LDKManyChannelMonitor_JCalls *arg = (LDKManyChannelMonitor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_and_clear_pending_monitor_events_meth);
+}
+void LDKManyChannelMonitor_JCalls_free(void* this_arg) {
+       LDKManyChannelMonitor_JCalls *arg = (LDKManyChannelMonitor_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKManyChannelMonitor_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKManyChannelMonitor_JCalls *calls = malloc(sizeof(LDKManyChannelMonitor_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->add_monitor_meth = (*env)->GetMethodID(env, c, "add_monitor", "TODO");
+       assert(calls->add_monitor_meth != NULL);
+       calls->update_monitor_meth = (*env)->GetMethodID(env, c, "update_monitor", "TODO");
+       assert(calls->update_monitor_meth != NULL);
+       calls->get_and_clear_pending_monitor_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_monitor_events", "TODO");
+       assert(calls->get_and_clear_pending_monitor_events_meth != NULL);
+
+       LDKManyChannelMonitor *ret = malloc(sizeof(LDKManyChannelMonitor));
+       ret->this_arg = (void*) calls;
+       ret->add_monitor = add_monitor_jcall;
+       ret->update_monitor = update_monitor_jcall;
+       ret->get_and_clear_pending_monitor_events = get_and_clear_pending_monitor_events_jcall;
+       ret->free = LDKManyChannelMonitor_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKChannelMessageHandler_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID handle_open_channel_meth;
+       jmethodID handle_accept_channel_meth;
+       jmethodID handle_funding_created_meth;
+       jmethodID handle_funding_signed_meth;
+       jmethodID handle_funding_locked_meth;
+       jmethodID handle_shutdown_meth;
+       jmethodID handle_closing_signed_meth;
+       jmethodID handle_update_add_htlc_meth;
+       jmethodID handle_update_fulfill_htlc_meth;
+       jmethodID handle_update_fail_htlc_meth;
+       jmethodID handle_update_fail_malformed_htlc_meth;
+       jmethodID handle_commitment_signed_meth;
+       jmethodID handle_revoke_and_ack_meth;
+       jmethodID handle_update_fee_meth;
+       jmethodID handle_announcement_signatures_meth;
+       jmethodID peer_disconnected_meth;
+       jmethodID peer_connected_meth;
+       jmethodID handle_channel_reestablish_meth;
+       jmethodID handle_error_meth;
+} LDKChannelMessageHandler_JCalls;
+void handle_open_channel_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_open_channel_meth);
+}
+void handle_accept_channel_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_accept_channel_meth);
+}
+void handle_funding_created_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_funding_created_meth);
+}
+void handle_funding_signed_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_funding_signed_meth);
+}
+void handle_funding_locked_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_funding_locked_meth);
+}
+void handle_shutdown_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_shutdown_meth);
+}
+void handle_closing_signed_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_closing_signed_meth);
+}
+void handle_update_add_htlc_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_update_add_htlc_meth);
+}
+void handle_update_fulfill_htlc_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_update_fulfill_htlc_meth);
+}
+void handle_update_fail_htlc_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_update_fail_htlc_meth);
+}
+void handle_update_fail_malformed_htlc_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_update_fail_malformed_htlc_meth);
+}
+void handle_commitment_signed_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_commitment_signed_meth);
+}
+void handle_revoke_and_ack_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_revoke_and_ack_meth);
+}
+void handle_update_fee_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_update_fee_meth);
+}
+void handle_announcement_signatures_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_announcement_signatures_meth);
+}
+void peer_disconnected_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->peer_disconnected_meth);
+}
+void peer_connected_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->peer_connected_meth);
+}
+void handle_channel_reestablish_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_channel_reestablish_meth);
+}
+void handle_error_jcall(void* this_arg/* TODO + rtype */) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_error_meth);
+}
+void LDKChannelMessageHandler_JCalls_free(void* this_arg) {
+       LDKChannelMessageHandler_JCalls *arg = (LDKChannelMessageHandler_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKChannelMessageHandler_JCalls *calls = malloc(sizeof(LDKChannelMessageHandler_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->handle_open_channel_meth = (*env)->GetMethodID(env, c, "handle_open_channel", "TODO");
+       assert(calls->handle_open_channel_meth != NULL);
+       calls->handle_accept_channel_meth = (*env)->GetMethodID(env, c, "handle_accept_channel", "TODO");
+       assert(calls->handle_accept_channel_meth != NULL);
+       calls->handle_funding_created_meth = (*env)->GetMethodID(env, c, "handle_funding_created", "TODO");
+       assert(calls->handle_funding_created_meth != NULL);
+       calls->handle_funding_signed_meth = (*env)->GetMethodID(env, c, "handle_funding_signed", "TODO");
+       assert(calls->handle_funding_signed_meth != NULL);
+       calls->handle_funding_locked_meth = (*env)->GetMethodID(env, c, "handle_funding_locked", "TODO");
+       assert(calls->handle_funding_locked_meth != NULL);
+       calls->handle_shutdown_meth = (*env)->GetMethodID(env, c, "handle_shutdown", "TODO");
+       assert(calls->handle_shutdown_meth != NULL);
+       calls->handle_closing_signed_meth = (*env)->GetMethodID(env, c, "handle_closing_signed", "TODO");
+       assert(calls->handle_closing_signed_meth != NULL);
+       calls->handle_update_add_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_add_htlc", "TODO");
+       assert(calls->handle_update_add_htlc_meth != NULL);
+       calls->handle_update_fulfill_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fulfill_htlc", "TODO");
+       assert(calls->handle_update_fulfill_htlc_meth != NULL);
+       calls->handle_update_fail_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_htlc", "TODO");
+       assert(calls->handle_update_fail_htlc_meth != NULL);
+       calls->handle_update_fail_malformed_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_malformed_htlc", "TODO");
+       assert(calls->handle_update_fail_malformed_htlc_meth != NULL);
+       calls->handle_commitment_signed_meth = (*env)->GetMethodID(env, c, "handle_commitment_signed", "TODO");
+       assert(calls->handle_commitment_signed_meth != NULL);
+       calls->handle_revoke_and_ack_meth = (*env)->GetMethodID(env, c, "handle_revoke_and_ack", "TODO");
+       assert(calls->handle_revoke_and_ack_meth != NULL);
+       calls->handle_update_fee_meth = (*env)->GetMethodID(env, c, "handle_update_fee", "TODO");
+       assert(calls->handle_update_fee_meth != NULL);
+       calls->handle_announcement_signatures_meth = (*env)->GetMethodID(env, c, "handle_announcement_signatures", "TODO");
+       assert(calls->handle_announcement_signatures_meth != NULL);
+       calls->peer_disconnected_meth = (*env)->GetMethodID(env, c, "peer_disconnected", "TODO");
+       assert(calls->peer_disconnected_meth != NULL);
+       calls->peer_connected_meth = (*env)->GetMethodID(env, c, "peer_connected", "TODO");
+       assert(calls->peer_connected_meth != NULL);
+       calls->handle_channel_reestablish_meth = (*env)->GetMethodID(env, c, "handle_channel_reestablish", "TODO");
+       assert(calls->handle_channel_reestablish_meth != NULL);
+       calls->handle_error_meth = (*env)->GetMethodID(env, c, "handle_error", "TODO");
+       assert(calls->handle_error_meth != NULL);
+
+       LDKChannelMessageHandler *ret = malloc(sizeof(LDKChannelMessageHandler));
+       ret->this_arg = (void*) calls;
+       ret->handle_open_channel = handle_open_channel_jcall;
+       ret->handle_accept_channel = handle_accept_channel_jcall;
+       ret->handle_funding_created = handle_funding_created_jcall;
+       ret->handle_funding_signed = handle_funding_signed_jcall;
+       ret->handle_funding_locked = handle_funding_locked_jcall;
+       ret->handle_shutdown = handle_shutdown_jcall;
+       ret->handle_closing_signed = handle_closing_signed_jcall;
+       ret->handle_update_add_htlc = handle_update_add_htlc_jcall;
+       ret->handle_update_fulfill_htlc = handle_update_fulfill_htlc_jcall;
+       ret->handle_update_fail_htlc = handle_update_fail_htlc_jcall;
+       ret->handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_jcall;
+       ret->handle_commitment_signed = handle_commitment_signed_jcall;
+       ret->handle_revoke_and_ack = handle_revoke_and_ack_jcall;
+       ret->handle_update_fee = handle_update_fee_jcall;
+       ret->handle_announcement_signatures = handle_announcement_signatures_jcall;
+       ret->peer_disconnected = peer_disconnected_jcall;
+       ret->peer_connected = peer_connected_jcall;
+       ret->handle_channel_reestablish = handle_channel_reestablish_jcall;
+       ret->handle_error = handle_error_jcall;
+       ret->free = LDKChannelMessageHandler_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKRoutingMessageHandler_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID handle_node_announcement_meth;
+       jmethodID handle_channel_announcement_meth;
+       jmethodID handle_channel_update_meth;
+       jmethodID handle_htlc_fail_channel_update_meth;
+       jmethodID get_next_channel_announcements_meth;
+       jmethodID get_next_node_announcements_meth;
+       jmethodID should_request_full_sync_meth;
+} LDKRoutingMessageHandler_JCalls;
+void handle_node_announcement_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_node_announcement_meth);
+}
+void handle_channel_announcement_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_channel_announcement_meth);
+}
+void handle_channel_update_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_channel_update_meth);
+}
+void handle_htlc_fail_channel_update_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->handle_htlc_fail_channel_update_meth);
+}
+void get_next_channel_announcements_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_next_channel_announcements_meth);
+}
+void get_next_node_announcements_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->get_next_node_announcements_meth);
+}
+void should_request_full_sync_jcall(void* this_arg/* TODO + rtype */) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->should_request_full_sync_meth);
+}
+void LDKRoutingMessageHandler_JCalls_free(void* this_arg) {
+       LDKRoutingMessageHandler_JCalls *arg = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKRoutingMessageHandler_JCalls *calls = malloc(sizeof(LDKRoutingMessageHandler_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->handle_node_announcement_meth = (*env)->GetMethodID(env, c, "handle_node_announcement", "TODO");
+       assert(calls->handle_node_announcement_meth != NULL);
+       calls->handle_channel_announcement_meth = (*env)->GetMethodID(env, c, "handle_channel_announcement", "TODO");
+       assert(calls->handle_channel_announcement_meth != NULL);
+       calls->handle_channel_update_meth = (*env)->GetMethodID(env, c, "handle_channel_update", "TODO");
+       assert(calls->handle_channel_update_meth != NULL);
+       calls->handle_htlc_fail_channel_update_meth = (*env)->GetMethodID(env, c, "handle_htlc_fail_channel_update", "TODO");
+       assert(calls->handle_htlc_fail_channel_update_meth != NULL);
+       calls->get_next_channel_announcements_meth = (*env)->GetMethodID(env, c, "get_next_channel_announcements", "TODO");
+       assert(calls->get_next_channel_announcements_meth != NULL);
+       calls->get_next_node_announcements_meth = (*env)->GetMethodID(env, c, "get_next_node_announcements", "TODO");
+       assert(calls->get_next_node_announcements_meth != NULL);
+       calls->should_request_full_sync_meth = (*env)->GetMethodID(env, c, "should_request_full_sync", "TODO");
+       assert(calls->should_request_full_sync_meth != NULL);
+
+       LDKRoutingMessageHandler *ret = malloc(sizeof(LDKRoutingMessageHandler));
+       ret->this_arg = (void*) calls;
+       ret->handle_node_announcement = handle_node_announcement_jcall;
+       ret->handle_channel_announcement = handle_channel_announcement_jcall;
+       ret->handle_channel_update = handle_channel_update_jcall;
+       ret->handle_htlc_fail_channel_update = handle_htlc_fail_channel_update_jcall;
+       ret->get_next_channel_announcements = get_next_channel_announcements_jcall;
+       ret->get_next_node_announcements = get_next_node_announcements_jcall;
+       ret->should_request_full_sync = should_request_full_sync_jcall;
+       ret->free = LDKRoutingMessageHandler_JCalls_free;
+       return (long)ret;
+}
+
+typedef struct LDKSocketDescriptor_JCalls {
+       JNIEnv *env;
+       jobject o;
+       jmethodID send_data_meth;
+       jmethodID disconnect_socket_meth;
+       jmethodID eq_meth;
+       jmethodID hash_meth;
+} LDKSocketDescriptor_JCalls;
+void send_data_jcall(void* this_arg/* TODO + rtype */) {
+       LDKSocketDescriptor_JCalls *arg = (LDKSocketDescriptor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->send_data_meth);
+}
+void disconnect_socket_jcall(void* this_arg/* TODO + rtype */) {
+       LDKSocketDescriptor_JCalls *arg = (LDKSocketDescriptor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->disconnect_socket_meth);
+}
+void eq_jcall(void* this_arg/* TODO + rtype */) {
+       LDKSocketDescriptor_JCalls *arg = (LDKSocketDescriptor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->eq_meth);
+}
+void hash_jcall(void* this_arg/* TODO + rtype */) {
+       LDKSocketDescriptor_JCalls *arg = (LDKSocketDescriptor_JCalls*) this_arg;
+       (*arg->env)->CallObjectMethod(arg->env, arg->o, arg->hash_meth);
+}
+void* LDKSocketDescriptor_JCalls_clone(void* this_arg) {
+       LDKSocketDescriptor_JCalls *ret = malloc(sizeof(LDKSocketDescriptor_JCalls));
+       memcpy(ret, this_arg, sizeof(LDKSocketDescriptor_JCalls));
+       return ret;
+}
+void LDKSocketDescriptor_JCalls_free(void* this_arg) {
+       LDKSocketDescriptor_JCalls *arg = (LDKSocketDescriptor_JCalls*) this_arg;
+       (*arg->env)->DeleteGlobalRef(arg->env, arg->o);
+       free(arg);
+}
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new (JNIEnv * env, jclass _a, jobject o) {
+       jclass c = (*env)->GetObjectClass(env, o);
+       assert(c != NULL);
+       LDKSocketDescriptor_JCalls *calls = malloc(sizeof(LDKSocketDescriptor_JCalls));
+       calls->env = env;
+       calls->o = (*env)->NewGlobalRef(env, o);
+       calls->send_data_meth = (*env)->GetMethodID(env, c, "send_data", "TODO");
+       assert(calls->send_data_meth != NULL);
+       calls->disconnect_socket_meth = (*env)->GetMethodID(env, c, "disconnect_socket", "TODO");
+       assert(calls->disconnect_socket_meth != NULL);
+       calls->eq_meth = (*env)->GetMethodID(env, c, "eq", "TODO");
+       assert(calls->eq_meth != NULL);
+       calls->hash_meth = (*env)->GetMethodID(env, c, "hash", "TODO");
+       assert(calls->hash_meth != NULL);
+
+       LDKSocketDescriptor *ret = malloc(sizeof(LDKSocketDescriptor));
+       ret->this_arg = (void*) calls;
+       ret->send_data = send_data_jcall;
+       ret->disconnect_socket = disconnect_socket_jcall;
+       ret->eq = eq_jcall;
+       ret->hash = hash_jcall;
+       ret->clone = LDKSocketDescriptor_JCalls_clone;
+       ret->free = LDKSocketDescriptor_JCalls_free;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKC2Tuple_HTLCOutputInCommitmentSignatureZ arg_conv = *(LDKC2Tuple_HTLCOutputInCommitmentSignatureZ*)arg;
+       free((void*)arg);
+       return C2Tuple_HTLCOutputInCommitmentSignatureZ_free(arg_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_OutPointScriptZ arg_conv = *(LDKC2Tuple_OutPointScriptZ*)arg;
+       free((void*)arg);
        return C2Tuple_OutPointScriptZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL C2TupleScriptu64Zfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Scriptu64Z_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_Scriptu64Z arg_conv = *(LDKC2Tuple_Scriptu64Z*)arg;
+       free((void*)arg);
        return C2Tuple_Scriptu64Z_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL C2TupleSecretKeyu832Zfree(JNIEnv * _env, jclass _b, jlong arg) {
-       LDKC2Tuple_SecretKey_u832Z arg_conv = *(LDKC2Tuple_SecretKey_u832Z*)arg;
-       return C2Tuple_SecretKey_u832Z_free(arg_conv);
-}
-
-JNIEXPORT void JNICALL C2TupleSignatureCVecSignatureZZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_SignatureCVec_SignatureZZ arg_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)arg;
+       free((void*)arg);
        return C2Tuple_SignatureCVec_SignatureZZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL C2TupleTxidu32Zfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Txidu32Z_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_Txidu32Z arg_conv = *(LDKC2Tuple_Txidu32Z*)arg;
+       free((void*)arg);
        return C2Tuple_Txidu32Z_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL C2Tupleu64u64Zfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_u64u64Z arg_conv = *(LDKC2Tuple_u64u64Z*)arg;
+       free((void*)arg);
        return C2Tuple_u64u64Z_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL C3TupleChannelAnnouncementChannelUpdateChannelUpdateZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arg_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)arg;
+       free((void*)arg);
        return C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultC2TupleScriptu64ZChainErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKChainError arg_conv = *(LDKChainError*)arg;
+       free((void*)arg);
        LDKCResult_C2Tuple_Scriptu64ZChainErrorZ* ret = malloc(sizeof(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ));
        *ret = CResult_C2Tuple_Scriptu64ZChainErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultC2TupleScriptu64ZChainErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_C2Tuple_Scriptu64ZChainErrorZ arg_conv = *(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ*)arg;
+       free((void*)arg);
        return CResult_C2Tuple_Scriptu64ZChainErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultC2TupleScriptu64ZChainErrorZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_Scriptu64Z arg_conv = *(LDKC2Tuple_Scriptu64Z*)arg;
+       free((void*)arg);
        LDKCResult_C2Tuple_Scriptu64ZChainErrorZ* ret = malloc(sizeof(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ));
-       *ret = CResult_C2Tuple_Scriptu64ZChainErrorZ_good(arg_conv);
+       *ret = CResult_C2Tuple_Scriptu64ZChainErrorZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultC2TupleSignatureCVecSignatureZZNoneZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ arg_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)arg;
+       free((void*)arg);
        return CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultC2TupleSignatureCVecSignatureZZNoneZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKC2Tuple_SignatureCVec_SignatureZZ arg_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)arg;
+       free((void*)arg);
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret = malloc(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ));
-       *ret = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_good(arg_conv);
+       *ret = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultCVecSignatureZNoneZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_CVec_SignatureZNoneZ arg_conv = *(LDKCResult_CVec_SignatureZNoneZ*)arg;
+       free((void*)arg);
        return CResult_CVec_SignatureZNoneZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultCVecSignatureZNoneZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_SignatureZ arg_conv = *(LDKCVec_SignatureZ*)arg;
+       free((void*)arg);
        LDKCResult_CVec_SignatureZNoneZ* ret = malloc(sizeof(LDKCResult_CVec_SignatureZNoneZ));
-       *ret = CResult_CVec_SignatureZNoneZ_good(arg_conv);
+       *ret = CResult_CVec_SignatureZNoneZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultCVecu8ZPeerHandleErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKPeerHandleError arg_conv = *(LDKPeerHandleError*)arg;
+       free((void*)arg);
        LDKCResult_CVec_u8ZPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ));
        *ret = CResult_CVec_u8ZPeerHandleErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultCVecu8ZPeerHandleErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_CVec_u8ZPeerHandleErrorZ arg_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)arg;
+       free((void*)arg);
        return CResult_CVec_u8ZPeerHandleErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultCVecu8ZPeerHandleErrorZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_u8Z arg_conv = *(LDKCVec_u8Z*)arg;
+       free((void*)arg);
        LDKCResult_CVec_u8ZPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ));
-       *ret = CResult_CVec_u8ZPeerHandleErrorZ_good(arg_conv);
+       *ret = CResult_CVec_u8ZPeerHandleErrorZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultNoneAPIErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKAPIError arg_conv = *(LDKAPIError*)arg;
+       free((void*)arg);
        LDKCResult_NoneAPIErrorZ* ret = malloc(sizeof(LDKCResult_NoneAPIErrorZ));
        *ret = CResult_NoneAPIErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultNoneAPIErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_NoneAPIErrorZ arg_conv = *(LDKCResult_NoneAPIErrorZ*)arg;
+       free((void*)arg);
        return CResult_NoneAPIErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultNoneChannelMonitorUpdateErrZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKChannelMonitorUpdateErr arg_conv = *(LDKChannelMonitorUpdateErr*)arg;
+       free((void*)arg);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = malloc(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ));
        *ret = CResult_NoneChannelMonitorUpdateErrZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultNoneChannelMonitorUpdateErrZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_NoneChannelMonitorUpdateErrZ arg_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)arg;
+       free((void*)arg);
        return CResult_NoneChannelMonitorUpdateErrZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultNoneMonitorUpdateErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKMonitorUpdateError arg_conv = *(LDKMonitorUpdateError*)arg;
+       free((void*)arg);
        LDKCResult_NoneMonitorUpdateErrorZ* ret = malloc(sizeof(LDKCResult_NoneMonitorUpdateErrorZ));
        *ret = CResult_NoneMonitorUpdateErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultNoneMonitorUpdateErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_NoneMonitorUpdateErrorZ arg_conv = *(LDKCResult_NoneMonitorUpdateErrorZ*)arg;
+       free((void*)arg);
        return CResult_NoneMonitorUpdateErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultNonePaymentSendFailureZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKPaymentSendFailure arg_conv = *(LDKPaymentSendFailure*)arg;
+       free((void*)arg);
        LDKCResult_NonePaymentSendFailureZ* ret = malloc(sizeof(LDKCResult_NonePaymentSendFailureZ));
        *ret = CResult_NonePaymentSendFailureZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultNonePaymentSendFailureZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_NonePaymentSendFailureZ arg_conv = *(LDKCResult_NonePaymentSendFailureZ*)arg;
+       free((void*)arg);
        return CResult_NonePaymentSendFailureZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultNonePeerHandleErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKPeerHandleError arg_conv = *(LDKPeerHandleError*)arg;
+       free((void*)arg);
        LDKCResult_NonePeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_NonePeerHandleErrorZ));
        *ret = CResult_NonePeerHandleErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultNonePeerHandleErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_NonePeerHandleErrorZ arg_conv = *(LDKCResult_NonePeerHandleErrorZ*)arg;
+       free((void*)arg);
        return CResult_NonePeerHandleErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultRouteLightningErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKLightningError arg_conv = *(LDKLightningError*)arg;
+       free((void*)arg);
        LDKCResult_RouteLightningErrorZ* ret = malloc(sizeof(LDKCResult_RouteLightningErrorZ));
        *ret = CResult_RouteLightningErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultRouteLightningErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_RouteLightningErrorZ arg_conv = *(LDKCResult_RouteLightningErrorZ*)arg;
+       free((void*)arg);
        return CResult_RouteLightningErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultRouteLightningErrorZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKRoute arg_conv = *(LDKRoute*)arg;
+       free((void*)arg);
        LDKCResult_RouteLightningErrorZ* ret = malloc(sizeof(LDKCResult_RouteLightningErrorZ));
-       *ret = CResult_RouteLightningErrorZ_good(arg_conv);
+       *ret = CResult_RouteLightningErrorZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultSignatureNoneZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_SignatureNoneZ arg_conv = *(LDKCResult_SignatureNoneZ*)arg;
+       free((void*)arg);
        return CResult_SignatureNoneZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultSignatureNoneZgood(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
        LDKSignature arg_conv = *(LDKSignature*)arg;
+       free((void*)arg);
        LDKCResult_SignatureNoneZ* ret = malloc(sizeof(LDKCResult_SignatureNoneZ));
-       *ret = CResult_SignatureNoneZ_good(arg_conv);
+       *ret = CResult_SignatureNoneZ_ok(arg_conv);
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKSecp256k1Error arg_conv = *(LDKSecp256k1Error*)arg;
+       free((void*)arg);
+       LDKCResult_TxCreationKeysSecpErrorZ* ret = malloc(sizeof(LDKCResult_TxCreationKeysSecpErrorZ));
+       *ret = CResult_TxCreationKeysSecpErrorZ_err(arg_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCResult_TxCreationKeysSecpErrorZ arg_conv = *(LDKCResult_TxCreationKeysSecpErrorZ*)arg;
+       free((void*)arg);
+       return CResult_TxCreationKeysSecpErrorZ_free(arg_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKTxCreationKeys arg_conv = *(LDKTxCreationKeys*)arg;
+       free((void*)arg);
+       LDKCResult_TxCreationKeysSecpErrorZ* ret = malloc(sizeof(LDKCResult_TxCreationKeysSecpErrorZ));
+       *ret = CResult_TxCreationKeysSecpErrorZ_ok(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultboolLightningErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKLightningError arg_conv = *(LDKLightningError*)arg;
+       free((void*)arg);
        LDKCResult_boolLightningErrorZ* ret = malloc(sizeof(LDKCResult_boolLightningErrorZ));
        *ret = CResult_boolLightningErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultboolLightningErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_boolLightningErrorZ arg_conv = *(LDKCResult_boolLightningErrorZ*)arg;
+       free((void*)arg);
        return CResult_boolLightningErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultboolLightningErrorZgood(JNIEnv * _env, jclass _b, jboolean arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok(JNIEnv * _env, jclass _b, jboolean arg) {
        LDKCResult_boolLightningErrorZ* ret = malloc(sizeof(LDKCResult_boolLightningErrorZ));
-       *ret = CResult_boolLightningErrorZ_good(arg);
+       *ret = CResult_boolLightningErrorZ_ok(arg);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultboolPeerHandleErrorZerr(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err(JNIEnv * _env, jclass _b, jlong arg) {
        LDKPeerHandleError arg_conv = *(LDKPeerHandleError*)arg;
+       free((void*)arg);
        LDKCResult_boolPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_boolPeerHandleErrorZ));
        *ret = CResult_boolPeerHandleErrorZ_err(arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CResultboolPeerHandleErrorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCResult_boolPeerHandleErrorZ arg_conv = *(LDKCResult_boolPeerHandleErrorZ*)arg;
+       free((void*)arg);
        return CResult_boolPeerHandleErrorZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL CResultboolPeerHandleErrorZgood(JNIEnv * _env, jclass _b, jboolean arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok(JNIEnv * _env, jclass _b, jboolean arg) {
        LDKCResult_boolPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_boolPeerHandleErrorZ));
-       *ret = CResult_boolPeerHandleErrorZ_good(arg);
+       *ret = CResult_boolPeerHandleErrorZ_ok(arg);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CVecC3TupleChannelAnnouncementChannelUpdateChannelUpdateZZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1HTLCOutputInCommitmentSignatureZZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ arg_conv = *(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ*)arg;
+       free((void*)arg);
+       return CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free(arg_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ arg_conv = *(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ*)arg;
+       free((void*)arg);
        return CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecCVecRouteHopZZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_CVec_RouteHopZZ arg_conv = *(LDKCVec_CVec_RouteHopZZ*)arg;
+       free((void*)arg);
        return CVec_CVec_RouteHopZZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecChannelDetailsZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_ChannelDetailsZ arg_conv = *(LDKCVec_ChannelDetailsZ*)arg;
+       free((void*)arg);
        return CVec_ChannelDetailsZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecEventZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCVec_ChannelMonitorZ arg_conv = *(LDKCVec_ChannelMonitorZ*)arg;
+       free((void*)arg);
+       return CVec_ChannelMonitorZ_free(arg_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_EventZ arg_conv = *(LDKCVec_EventZ*)arg;
+       free((void*)arg);
        return CVec_EventZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecHTLCUpdateZfree(JNIEnv * _env, jclass _b, jlong arg) {
-       LDKCVec_HTLCUpdateZ arg_conv = *(LDKCVec_HTLCUpdateZ*)arg;
-       return CVec_HTLCUpdateZ_free(arg_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1HTLCOutputInCommitmentZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCVec_HTLCOutputInCommitmentZ arg_conv = *(LDKCVec_HTLCOutputInCommitmentZ*)arg;
+       free((void*)arg);
+       return CVec_HTLCOutputInCommitmentZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecMessageSendEventZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_MessageSendEventZ arg_conv = *(LDKCVec_MessageSendEventZ*)arg;
+       free((void*)arg);
        return CVec_MessageSendEventZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecNetAddressZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MonitorEventZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCVec_MonitorEventZ arg_conv = *(LDKCVec_MonitorEventZ*)arg;
+       free((void*)arg);
+       return CVec_MonitorEventZ_free(arg_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_NetAddressZ arg_conv = *(LDKCVec_NetAddressZ*)arg;
+       free((void*)arg);
        return CVec_NetAddressZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecNodeAnnouncementZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_NodeAnnouncementZ arg_conv = *(LDKCVec_NodeAnnouncementZ*)arg;
+       free((void*)arg);
        return CVec_NodeAnnouncementZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecPublicKeyZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_PublicKeyZ arg_conv = *(LDKCVec_PublicKeyZ*)arg;
+       free((void*)arg);
        return CVec_PublicKeyZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecRouteHopZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
+       LDKCVec_RouteHintZ arg_conv = *(LDKCVec_RouteHintZ*)arg;
+       free((void*)arg);
+       return CVec_RouteHintZ_free(arg_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_RouteHopZ arg_conv = *(LDKCVec_RouteHopZ*)arg;
+       free((void*)arg);
        return CVec_RouteHopZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecSignatureZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_SignatureZ arg_conv = *(LDKCVec_SignatureZ*)arg;
+       free((void*)arg);
        return CVec_SignatureZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecSpendableOutputDescriptorZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_SpendableOutputDescriptorZ arg_conv = *(LDKCVec_SpendableOutputDescriptorZ*)arg;
+       free((void*)arg);
        return CVec_SpendableOutputDescriptorZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecTransactionZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1TransactionZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_TransactionZ arg_conv = *(LDKCVec_TransactionZ*)arg;
+       free((void*)arg);
        return CVec_TransactionZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecUpdateAddHTLCZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateAddHTLCZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_UpdateAddHTLCZ arg_conv = *(LDKCVec_UpdateAddHTLCZ*)arg;
+       free((void*)arg);
        return CVec_UpdateAddHTLCZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecUpdateFailHTLCZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailHTLCZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_UpdateFailHTLCZ arg_conv = *(LDKCVec_UpdateFailHTLCZ*)arg;
+       free((void*)arg);
        return CVec_UpdateFailHTLCZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecUpdateFailMalformedHTLCZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailMalformedHTLCZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_UpdateFailMalformedHTLCZ arg_conv = *(LDKCVec_UpdateFailMalformedHTLCZ*)arg;
+       free((void*)arg);
        return CVec_UpdateFailMalformedHTLCZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecUpdateFulfillHTLCZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFulfillHTLCZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_UpdateFulfillHTLCZ arg_conv = *(LDKCVec_UpdateFulfillHTLCZ*)arg;
+       free((void*)arg);
        return CVec_UpdateFulfillHTLCZ_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecu64Zfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_u64Z arg_conv = *(LDKCVec_u64Z*)arg;
+       free((void*)arg);
        return CVec_u64Z_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecu8Zfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_u8Z arg_conv = *(LDKCVec_u8Z*)arg;
+       free((void*)arg);
        return CVec_u8Z_free(arg_conv);
 }
 
-JNIEXPORT void JNICALL CVecusizeZfree(JNIEnv * _env, jclass _b, jlong arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1usizeZ_1free(JNIEnv * _env, jclass _b, jlong arg) {
        LDKCVec_usizeZ arg_conv = *(LDKCVec_usizeZ*)arg;
+       free((void*)arg);
        return CVec_usizeZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL C2TupleTxidu32Znew(JNIEnv * _env, jclass _b, jlong a, jint b) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free(JNIEnv * _env, jclass _b, jlong _res) {
+       LDKTxOut _res_conv = *(LDKTxOut*)_res;
+       free((void*)_res);
+       return TxOut_free(_res_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Txidu32Z_1new(JNIEnv * _env, jclass _b, jlong a, jint b) {
        LDKThirtyTwoBytes a_conv = *(LDKThirtyTwoBytes*)a;
+       free((void*)a);
        LDKC2Tuple_Txidu32Z* ret = malloc(sizeof(LDKC2Tuple_Txidu32Z));
        *ret = C2Tuple_Txidu32Z_new(a_conv, b);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C2TupleScriptu64Znew(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Scriptu64Z_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
        LDKCVec_u8Z a_conv = *(LDKCVec_u8Z*)a;
+       free((void*)a);
        LDKC2Tuple_Scriptu64Z* ret = malloc(sizeof(LDKC2Tuple_Scriptu64Z));
        *ret = C2Tuple_Scriptu64Z_new(a_conv, b);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C2Tupleu64u64Znew(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
        LDKC2Tuple_u64u64Z* ret = malloc(sizeof(LDKC2Tuple_u64u64Z));
        *ret = C2Tuple_u64u64Z_new(a, b);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C2TupleSignatureCVecSignatureZZnew(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
        LDKSignature a_conv = *(LDKSignature*)a;
+       free((void*)a);
        LDKCVec_SignatureZ b_conv = *(LDKCVec_SignatureZ*)b;
+       free((void*)b);
        LDKC2Tuple_SignatureCVec_SignatureZZ* ret = malloc(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ));
        *ret = C2Tuple_SignatureCVec_SignatureZZ_new(a_conv, b_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultC2TupleSignatureCVecSignatureZZNoneZerr(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1err(JNIEnv * _env, jclass _b) {
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret = malloc(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ));
        *ret = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultSignatureNoneZerr(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1err(JNIEnv * _env, jclass _b) {
        LDKCResult_SignatureNoneZ* ret = malloc(sizeof(LDKCResult_SignatureNoneZ));
        *ret = CResult_SignatureNoneZ_err();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultCVecSignatureZNoneZerr(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err(JNIEnv * _env, jclass _b) {
        LDKCResult_CVec_SignatureZNoneZ* ret = malloc(sizeof(LDKCResult_CVec_SignatureZNoneZ));
        *ret = CResult_CVec_SignatureZNoneZ_err();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C2TupleSecretKeyu832Znew(JNIEnv * _env, jclass _b, jlong a, jlong b) {
-       LDKSecretKey a_conv = *(LDKSecretKey*)a;
-       LDKThirtyTwoBytes b_conv = *(LDKThirtyTwoBytes*)b;
-       LDKC2Tuple_SecretKey_u832Z* ret = malloc(sizeof(LDKC2Tuple_SecretKey_u832Z));
-       *ret = C2Tuple_SecretKey_u832Z_new(a_conv, b_conv);
-       return (long)ret;
-}
-
-JNIEXPORT jlong JNICALL CResultNoneAPIErrorZgood(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok(JNIEnv * _env, jclass _b) {
        LDKCResult_NoneAPIErrorZ* ret = malloc(sizeof(LDKCResult_NoneAPIErrorZ));
-       *ret = CResult_NoneAPIErrorZ_good();
+       *ret = CResult_NoneAPIErrorZ_ok();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultNonePaymentSendFailureZgood(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok(JNIEnv * _env, jclass _b) {
        LDKCResult_NonePaymentSendFailureZ* ret = malloc(sizeof(LDKCResult_NonePaymentSendFailureZ));
-       *ret = CResult_NonePaymentSendFailureZ_good();
+       *ret = CResult_NonePaymentSendFailureZ_ok();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultNoneChannelMonitorUpdateErrZgood(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1ok(JNIEnv * _env, jclass _b) {
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = malloc(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ));
-       *ret = CResult_NoneChannelMonitorUpdateErrZ_good();
+       *ret = CResult_NoneChannelMonitorUpdateErrZ_ok();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultNoneMonitorUpdateErrorZgood(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1ok(JNIEnv * _env, jclass _b) {
        LDKCResult_NoneMonitorUpdateErrorZ* ret = malloc(sizeof(LDKCResult_NoneMonitorUpdateErrorZ));
-       *ret = CResult_NoneMonitorUpdateErrorZ_good();
+       *ret = CResult_NoneMonitorUpdateErrorZ_ok();
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C2TupleOutPointScriptZnew(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
        LDKOutPoint a_conv = *(LDKOutPoint*)a;
+       free((void*)a);
+       a_conv._underlying_ref = false;
        LDKCVec_u8Z b_conv = *(LDKCVec_u8Z*)b;
+       free((void*)b);
        LDKC2Tuple_OutPointScriptZ* ret = malloc(sizeof(LDKC2Tuple_OutPointScriptZ));
        *ret = C2Tuple_OutPointScriptZ_new(a_conv, b_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL C3TupleChannelAnnouncementChannelUpdateChannelUpdateZnew(JNIEnv * _env, jclass _b, jlong a, jlong b, jlong c) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b, jlong c) {
        LDKChannelAnnouncement a_conv = *(LDKChannelAnnouncement*)a;
+       free((void*)a);
+       a_conv._underlying_ref = false;
        LDKChannelUpdate b_conv = *(LDKChannelUpdate*)b;
+       free((void*)b);
+       b_conv._underlying_ref = false;
        LDKChannelUpdate c_conv = *(LDKChannelUpdate*)c;
+       free((void*)c);
+       c_conv._underlying_ref = false;
        LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret = malloc(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ));
        *ret = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CResultNonePeerHandleErrorZgood(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok(JNIEnv * _env, jclass _b) {
        LDKCResult_NonePeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_NonePeerHandleErrorZ));
-       *ret = CResult_NonePeerHandleErrorZ_good();
+       *ret = CResult_NonePeerHandleErrorZ_ok();
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+       LDKHTLCOutputInCommitment a_conv = *(LDKHTLCOutputInCommitment*)a;
+       free((void*)a);
+       a_conv._underlying_ref = false;
+       LDKSignature b_conv = *(LDKSignature*)b;
+       free((void*)b);
+       LDKC2Tuple_HTLCOutputInCommitmentSignatureZ* ret = malloc(sizeof(LDKC2Tuple_HTLCOutputInCommitmentSignatureZ));
+       *ret = C2Tuple_HTLCOutputInCommitmentSignatureZ_new(a_conv, b_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL Eventfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Event_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKEvent this_ptr_conv = *(LDKEvent*)this_ptr;
+       free((void*)this_ptr);
        return Event_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL MessageSendEventfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEvent_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)this_ptr;
+       free((void*)this_ptr);
        return MessageSendEvent_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL MessageSendEventsProviderfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)this_ptr;
+       free((void*)this_ptr);
        return MessageSendEventsProvider_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL EventsProviderfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_EventsProvider_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKEventsProvider this_ptr_conv = *(LDKEventsProvider*)this_ptr;
+       free((void*)this_ptr);
        return EventsProvider_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL APIErrorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_APIError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKAPIError this_ptr_conv = *(LDKAPIError*)this_ptr;
+       free((void*)this_ptr);
        return APIError_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL Levelmax(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Level_1max(JNIEnv * _env, jclass _b) {
        LDKLevel* ret = malloc(sizeof(LDKLevel));
        *ret = Level_max();
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL Loggerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Logger_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKLogger this_ptr_conv = *(LDKLogger*)this_ptr;
+       free((void*)this_ptr);
        return Logger_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeConfigfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeConfig this_ptr_conv = *(LDKChannelHandshakeConfig*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelHandshakeConfig_free(this_ptr_conv);
 }
 
-JNIEXPORT jint JNICALL ChannelHandshakeConfiggetminimumdepth(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        return ChannelHandshakeConfig_get_minimum_depth(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeConfigsetminimumdepth(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        return ChannelHandshakeConfig_set_minimum_depth(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeConfiggetourtoselfdelay(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1our_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = ChannelHandshakeConfig_get_our_to_self_delay(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeConfigsetourtoselfdelay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1our_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return ChannelHandshakeConfig_set_our_to_self_delay(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeConfiggetourhtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1our_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        return ChannelHandshakeConfig_get_our_htlc_minimum_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeConfigsetourhtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1our_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeConfig* this_ptr_conv = (LDKChannelHandshakeConfig*)this_ptr;
        return ChannelHandshakeConfig_set_our_htlc_minimum_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeConfignew(JNIEnv * _env, jclass _b, jint minimum_depth_arg, jlong our_to_self_delay_arg, jlong our_htlc_minimum_msat_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1new(JNIEnv * _env, jclass _b, jint minimum_depth_arg, jlong our_to_self_delay_arg, jlong our_htlc_minimum_msat_arg) {
        uint16_t our_to_self_delay_arg_conv = *(uint16_t*)our_to_self_delay_arg;
+       free((void*)our_to_self_delay_arg);
        LDKChannelHandshakeConfig* ret = malloc(sizeof(LDKChannelHandshakeConfig));
        *ret = ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg_conv, our_htlc_minimum_msat_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeConfigdefault(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1default(JNIEnv * _env, jclass _b) {
        LDKChannelHandshakeConfig* ret = malloc(sizeof(LDKChannelHandshakeConfig));
        *ret = ChannelHandshakeConfig_default();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitsfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits this_ptr_conv = *(LDKChannelHandshakeLimits*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelHandshakeLimits_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetminfundingsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1funding_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_min_funding_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetminfundingsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1funding_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_min_funding_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetmaxhtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_max_htlc_minimum_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetmaxhtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_max_htlc_minimum_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetminmaxhtlcvalueinflightmsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetminmaxhtlcvalueinflightmsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetmaxchannelreservesatoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetmaxchannelreservesatoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetminmaxacceptedhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = ChannelHandshakeLimits_get_min_max_accepted_htlcs(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetminmaxacceptedhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return ChannelHandshakeLimits_set_min_max_accepted_htlcs(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetmindustlimitsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_min_dust_limit_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetmindustlimitsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_min_dust_limit_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgetmaxdustlimitsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_max_dust_limit_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetmaxdustlimitsatoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_max_dust_limit_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT jint JNICALL ChannelHandshakeLimitsgetmaxminimumdepth(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_max_minimum_depth(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetmaxminimumdepth(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_max_minimum_depth(this_ptr_conv, val);
 }
 
-JNIEXPORT jboolean JNICALL ChannelHandshakeLimitsgetforceannouncedchannelpreference(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1force_1announced_1channel_1preference(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_get_force_announced_channel_preference(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssetforceannouncedchannelpreference(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1force_1announced_1channel_1preference(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        return ChannelHandshakeLimits_set_force_announced_channel_preference(this_ptr_conv, va);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsgettheirtoselfdelay(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1their_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = ChannelHandshakeLimits_get_their_to_self_delay(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelHandshakeLimitssettheirtoselfdelay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1their_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelHandshakeLimits* this_ptr_conv = (LDKChannelHandshakeLimits*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return ChannelHandshakeLimits_set_their_to_self_delay(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsnew(JNIEnv * _env, jclass _b, jlong min_funding_satoshis_arg, jlong max_htlc_minimum_msat_arg, jlong min_max_htlc_value_in_flight_msat_arg, jlong max_channel_reserve_satoshis_arg, jlong min_max_accepted_htlcs_arg, jlong min_dust_limit_satoshis_arg, jlong max_dust_limit_satoshis_arg, jint max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, jlong their_to_self_delay_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1new(JNIEnv * _env, jclass _b, jlong min_funding_satoshis_arg, jlong max_htlc_minimum_msat_arg, jlong min_max_htlc_value_in_flight_msat_arg, jlong max_channel_reserve_satoshis_arg, jlong min_max_accepted_htlcs_arg, jlong min_dust_limit_satoshis_arg, jlong max_dust_limit_satoshis_arg, jint max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, jlong their_to_self_delay_arg) {
        uint16_t min_max_accepted_htlcs_arg_conv = *(uint16_t*)min_max_accepted_htlcs_arg;
+       free((void*)min_max_accepted_htlcs_arg);
        uint16_t their_to_self_delay_arg_conv = *(uint16_t*)their_to_self_delay_arg;
+       free((void*)their_to_self_delay_arg);
        LDKChannelHandshakeLimits* ret = malloc(sizeof(LDKChannelHandshakeLimits));
        *ret = ChannelHandshakeLimits_new(min_funding_satoshis_arg, max_htlc_minimum_msat_arg, min_max_htlc_value_in_flight_msat_arg, max_channel_reserve_satoshis_arg, min_max_accepted_htlcs_arg_conv, min_dust_limit_satoshis_arg, max_dust_limit_satoshis_arg, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelHandshakeLimitsdefault(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1default(JNIEnv * _env, jclass _b) {
        LDKChannelHandshakeLimits* ret = malloc(sizeof(LDKChannelHandshakeLimits));
        *ret = ChannelHandshakeLimits_default();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelConfigfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelConfig this_ptr_conv = *(LDKChannelConfig*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelConfig_free(this_ptr_conv);
 }
 
-JNIEXPORT jint JNICALL ChannelConfiggetfeeproportionalmillionths(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1fee_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_get_fee_proportional_millionths(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelConfigsetfeeproportionalmillionths(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1fee_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_set_fee_proportional_millionths(this_ptr_conv, val);
 }
 
-JNIEXPORT jboolean JNICALL ChannelConfiggetannouncedchannel(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1announced_1channel(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_get_announced_channel(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelConfigsetannouncedchannel(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1announced_1channel(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_set_announced_channel(this_ptr_conv, va);
 }
 
-JNIEXPORT jboolean JNICALL ChannelConfiggetcommitupfrontshutdownpubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1commit_1upfront_1shutdown_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_get_commit_upfront_shutdown_pubkey(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelConfigsetcommitupfrontshutdownpubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1commit_1upfront_1shutdown_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKChannelConfig* this_ptr_conv = (LDKChannelConfig*)this_ptr;
        return ChannelConfig_set_commit_upfront_shutdown_pubkey(this_ptr_conv, va);
 }
 
-JNIEXPORT jlong JNICALL ChannelConfignew(JNIEnv * _env, jclass _b, jint fee_proportional_millionths_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1new(JNIEnv * _env, jclass _b, jint fee_proportional_millionths_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg) {
        LDKChannelConfig* ret = malloc(sizeof(LDKChannelConfig));
        *ret = ChannelConfig_new(fee_proportional_millionths_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelConfigdefault(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1default(JNIEnv * _env, jclass _b) {
        LDKChannelConfig* ret = malloc(sizeof(LDKChannelConfig));
        *ret = ChannelConfig_default();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelConfigwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelConfig* obj_conv = (LDKChannelConfig*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelConfig_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelConfigread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelConfig* ret = malloc(sizeof(LDKChannelConfig));
        *ret = ChannelConfig_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UserConfigfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKUserConfig this_ptr_conv = *(LDKUserConfig*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return UserConfig_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL UserConfiggetownchannelconfig(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1own_1channel_1config(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelHandshakeConfig* ret = malloc(sizeof(LDKChannelHandshakeConfig));
        *ret = UserConfig_get_own_channel_config(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UserConfigsetownchannelconfig(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1own_1channel_1config(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelHandshakeConfig val_conv = *(LDKChannelHandshakeConfig*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return UserConfig_set_own_channel_config(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL UserConfiggetpeerchannelconfiglimits(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1peer_1channel_1config_1limits(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelHandshakeLimits* ret = malloc(sizeof(LDKChannelHandshakeLimits));
        *ret = UserConfig_get_peer_channel_config_limits(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UserConfigsetpeerchannelconfiglimits(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1peer_1channel_1config_1limits(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelHandshakeLimits val_conv = *(LDKChannelHandshakeLimits*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return UserConfig_set_peer_channel_config_limits(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL UserConfiggetchanneloptions(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1channel_1options(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelConfig* ret = malloc(sizeof(LDKChannelConfig));
        *ret = UserConfig_get_channel_options(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UserConfigsetchanneloptions(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1channel_1options(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKUserConfig* this_ptr_conv = (LDKUserConfig*)this_ptr;
        LDKChannelConfig val_conv = *(LDKChannelConfig*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return UserConfig_set_channel_options(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL UserConfignew(JNIEnv * _env, jclass _b, jlong own_channel_config_arg, jlong peer_channel_config_limits_arg, jlong channel_options_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1new(JNIEnv * _env, jclass _b, jlong own_channel_config_arg, jlong peer_channel_config_limits_arg, jlong channel_options_arg) {
        LDKChannelHandshakeConfig own_channel_config_arg_conv = *(LDKChannelHandshakeConfig*)own_channel_config_arg;
+       free((void*)own_channel_config_arg);
+       own_channel_config_arg_conv._underlying_ref = false;
        LDKChannelHandshakeLimits peer_channel_config_limits_arg_conv = *(LDKChannelHandshakeLimits*)peer_channel_config_limits_arg;
+       free((void*)peer_channel_config_limits_arg);
+       peer_channel_config_limits_arg_conv._underlying_ref = false;
        LDKChannelConfig channel_options_arg_conv = *(LDKChannelConfig*)channel_options_arg;
+       free((void*)channel_options_arg);
+       channel_options_arg_conv._underlying_ref = false;
        LDKUserConfig* ret = malloc(sizeof(LDKUserConfig));
        *ret = UserConfig_new(own_channel_config_arg_conv, peer_channel_config_limits_arg_conv, channel_options_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UserConfigdefault(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1default(JNIEnv * _env, jclass _b) {
        LDKUserConfig* ret = malloc(sizeof(LDKUserConfig));
        *ret = UserConfig_default();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChainWatchInterfacefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchInterface_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChainWatchInterface this_ptr_conv = *(LDKChainWatchInterface*)this_ptr;
+       free((void*)this_ptr);
        return ChainWatchInterface_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL BroadcasterInterfacefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKBroadcasterInterface this_ptr_conv = *(LDKBroadcasterInterface*)this_ptr;
+       free((void*)this_ptr);
        return BroadcasterInterface_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChainListenerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainListener_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChainListener this_ptr_conv = *(LDKChainListener*)this_ptr;
+       free((void*)this_ptr);
        return ChainListener_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL FeeEstimatorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FeeEstimator_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)this_ptr;
+       free((void*)this_ptr);
        return FeeEstimator_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChainWatchedUtilfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChainWatchedUtil this_ptr_conv = *(LDKChainWatchedUtil*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChainWatchedUtil_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChainWatchedUtilnew(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1new(JNIEnv * _env, jclass _b) {
        LDKChainWatchedUtil* ret = malloc(sizeof(LDKChainWatchedUtil));
        *ret = ChainWatchedUtil_new();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jboolean JNICALL ChainWatchedUtilregistertx(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray txid, jlong script_pub_key) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1register_1tx(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray txid, jlong script_pub_key) {
        LDKChainWatchedUtil* this_arg_conv = (LDKChainWatchedUtil*)this_arg;
        unsigned char txid_arr[32];
        (*_env)->GetByteArrayRegion (_env, txid, 0, 32, txid_arr);
        unsigned char (*txid_ref)[32] = &txid_arr;
        LDKu8slice script_pub_key_conv = *(LDKu8slice*)script_pub_key;
+       free((void*)script_pub_key);
        return ChainWatchedUtil_register_tx(this_arg_conv, txid_ref, script_pub_key_conv);
 }
 
-JNIEXPORT jboolean JNICALL ChainWatchedUtilregisteroutpoint(JNIEnv * _env, jclass _b, jlong this_arg, jlong outpoint, jlong _script_pub_key) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1register_1outpoint(JNIEnv * _env, jclass _b, jlong this_arg, jlong outpoint, jlong _script_pub_key) {
        LDKChainWatchedUtil* this_arg_conv = (LDKChainWatchedUtil*)this_arg;
        LDKC2Tuple_Txidu32Z outpoint_conv = *(LDKC2Tuple_Txidu32Z*)outpoint;
+       free((void*)outpoint);
        LDKu8slice _script_pub_key_conv = *(LDKu8slice*)_script_pub_key;
+       free((void*)_script_pub_key);
        return ChainWatchedUtil_register_outpoint(this_arg_conv, outpoint_conv, _script_pub_key_conv);
 }
 
-JNIEXPORT jboolean JNICALL ChainWatchedUtilwatchall(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1watch_1all(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChainWatchedUtil* this_arg_conv = (LDKChainWatchedUtil*)this_arg;
        return ChainWatchedUtil_watch_all(this_arg_conv);
 }
 
-JNIEXPORT jboolean JNICALL ChainWatchedUtildoesmatchtx(JNIEnv * _env, jclass _b, jlong this_arg, jlong tx) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1does_1match_1tx(JNIEnv * _env, jclass _b, jlong this_arg, jlong tx) {
        LDKChainWatchedUtil* this_arg_conv = (LDKChainWatchedUtil*)this_arg;
        LDKTransaction tx_conv = *(LDKTransaction*)tx;
+       free((void*)tx);
        return ChainWatchedUtil_does_match_tx(this_arg_conv, tx_conv);
 }
 
-JNIEXPORT void JNICALL BlockNotifierfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKBlockNotifier this_ptr_conv = *(LDKBlockNotifier*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return BlockNotifier_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL BlockNotifiernew(JNIEnv * _env, jclass _b, jlong chain_monitor) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1new(JNIEnv * _env, jclass _b, jlong chain_monitor) {
        LDKChainWatchInterface chain_monitor_conv = *(LDKChainWatchInterface*)chain_monitor;
+       free((void*)chain_monitor);
        LDKBlockNotifier* ret = malloc(sizeof(LDKBlockNotifier));
        *ret = BlockNotifier_new(chain_monitor_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL BlockNotifierregisterlistener(JNIEnv * _env, jclass _b, jlong this_arg, jlong listener) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1register_1listener(JNIEnv * _env, jclass _b, jlong this_arg, jlong listener) {
        LDKBlockNotifier* this_arg_conv = (LDKBlockNotifier*)this_arg;
        LDKChainListener listener_conv = *(LDKChainListener*)listener;
+       free((void*)listener);
        return BlockNotifier_register_listener(this_arg_conv, listener_conv);
 }
 
-JNIEXPORT void JNICALL BlockNotifierblockconnected(JNIEnv * _env, jclass _b, jlong this_arg, jlong block, jint heigh) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1connected(JNIEnv * _env, jclass _b, jlong this_arg, jlong block, jint heigh) {
        LDKBlockNotifier* this_arg_conv = (LDKBlockNotifier*)this_arg;
        LDKu8slice block_conv = *(LDKu8slice*)block;
+       free((void*)block);
        return BlockNotifier_block_connected(this_arg_conv, block_conv, heigh);
 }
 
-JNIEXPORT jboolean JNICALL BlockNotifierblockconnectedchecked(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray header, jint heigh, jlong txn_matched, jlong indexes_of_txn_matched) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1connected_1checked(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray header, jint heigh, jlong txn_matched, jlong indexes_of_txn_matched) {
        LDKBlockNotifier* this_arg_conv = (LDKBlockNotifier*)this_arg;
        unsigned char header_arr[80];
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
-       LDKCTransactionSlice txn_matched_conv = *(LDKCTransactionSlice*)txn_matched;
+       LDKCVec_TransactionZ txn_matched_conv = *(LDKCVec_TransactionZ*)txn_matched;
+       free((void*)txn_matched);
        LDKusizeslice indexes_of_txn_matched_conv = *(LDKusizeslice*)indexes_of_txn_matched;
+       free((void*)indexes_of_txn_matched);
        return BlockNotifier_block_connected_checked(this_arg_conv, header_ref, heigh, txn_matched_conv, indexes_of_txn_matched_conv);
 }
 
-JNIEXPORT void JNICALL BlockNotifierblockdisconnected(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray header, jint disconnected_heigh) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1disconnected(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray header, jint disconnected_heigh) {
        LDKBlockNotifier* this_arg_conv = (LDKBlockNotifier*)this_arg;
        unsigned char header_arr[80];
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
@@ -860,408 +1858,490 @@ JNIEXPORT void JNICALL BlockNotifierblockdisconnected(JNIEnv * _env, jclass _b,
        return BlockNotifier_block_disconnected(this_arg_conv, header_ref, disconnected_heigh);
 }
 
-JNIEXPORT void JNICALL ChainWatchInterfaceUtilfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChainWatchInterfaceUtil this_ptr_conv = *(LDKChainWatchInterfaceUtil*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChainWatchInterfaceUtil_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChainWatchInterfaceUtilasChainWatchInterface(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1as_1ChainWatchInterface(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChainWatchInterfaceUtil* this_arg_conv = (LDKChainWatchInterfaceUtil*)this_arg;
        LDKChainWatchInterface* ret = malloc(sizeof(LDKChainWatchInterface));
        *ret = ChainWatchInterfaceUtil_as_ChainWatchInterface(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChainWatchInterfaceUtilnew(JNIEnv * _env, jclass _b, jlong network) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1new(JNIEnv * _env, jclass _b, jlong network) {
        LDKNetwork network_conv = *(LDKNetwork*)network;
+       free((void*)network);
        LDKChainWatchInterfaceUtil* ret = malloc(sizeof(LDKChainWatchInterfaceUtil));
        *ret = ChainWatchInterfaceUtil_new(network_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jboolean JNICALL ChainWatchInterfaceUtildoesmatchtx(JNIEnv * _env, jclass _b, jlong this_arg, jlong tx) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1does_1match_1tx(JNIEnv * _env, jclass _b, jlong this_arg, jlong tx) {
        LDKChainWatchInterfaceUtil* this_arg_conv = (LDKChainWatchInterfaceUtil*)this_arg;
        LDKTransaction tx_conv = *(LDKTransaction*)tx;
+       free((void*)tx);
        return ChainWatchInterfaceUtil_does_match_tx(this_arg_conv, tx_conv);
 }
 
-JNIEXPORT void JNICALL OutPointfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKOutPoint this_ptr_conv = *(LDKOutPoint*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return OutPoint_free(this_ptr_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL OutPointgettxid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_OutPoint_1get_1txid(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKOutPoint* this_ptr_conv = (LDKOutPoint*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *OutPoint_get_txid(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL OutPointsettxid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1txid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKOutPoint* this_ptr_conv = (LDKOutPoint*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
        return OutPoint_set_txid(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL OutPointgetindex(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1get_1index(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKOutPoint* this_ptr_conv = (LDKOutPoint*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = OutPoint_get_index(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL OutPointsetindex(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1index(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKOutPoint* this_ptr_conv = (LDKOutPoint*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return OutPoint_set_index(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL OutPointnew(JNIEnv * _env, jclass _b, jlong txid_arg, jlong index_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1new(JNIEnv * _env, jclass _b, jlong txid_arg, jlong index_arg) {
        LDKThirtyTwoBytes txid_arg_conv = *(LDKThirtyTwoBytes*)txid_arg;
+       free((void*)txid_arg);
        uint16_t index_arg_conv = *(uint16_t*)index_arg;
+       free((void*)index_arg);
        LDKOutPoint* ret = malloc(sizeof(LDKOutPoint));
        *ret = OutPoint_new(txid_arg_conv, index_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL OutPointtochannelid(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1to_1channel_1id(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKOutPoint* this_arg_conv = (LDKOutPoint*)this_arg;
        LDKThirtyTwoBytes* ret = malloc(sizeof(LDKThirtyTwoBytes));
        *ret = OutPoint_to_channel_id(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL OutPointwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKOutPoint* obj_conv = (LDKOutPoint*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = OutPoint_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL OutPointread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKOutPoint* ret = malloc(sizeof(LDKOutPoint));
        *ret = OutPoint_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL SpendableOutputDescriptorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SpendableOutputDescriptor_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKSpendableOutputDescriptor this_ptr_conv = *(LDKSpendableOutputDescriptor*)this_ptr;
+       free((void*)this_ptr);
        return SpendableOutputDescriptor_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL SpendableOutputDescriptorwrite(JNIEnv * _env, jclass _b, jlong obj) {
-       LDKSpendableOutputDescriptor* obj_conv = (LDKSpendableOutputDescriptor*)obj;
-       LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
-       *ret = SpendableOutputDescriptor_write(obj_conv);
-       return (long)ret;
-}
-
-JNIEXPORT jlong JNICALL SpendableOutputDescriptorread(JNIEnv * _env, jclass _b, jlong ser) {
-       LDKu8slice ser_conv = *(LDKu8slice*)ser;
-       LDKSpendableOutputDescriptor* ret = malloc(sizeof(LDKSpendableOutputDescriptor));
-       *ret = SpendableOutputDescriptor_read(ser_conv);
-       return (long)ret;
-}
-
-JNIEXPORT void JNICALL ChannelKeysfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelKeys this_ptr_conv = *(LDKChannelKeys*)this_ptr;
+       free((void*)this_ptr);
        return ChannelKeys_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL KeysInterfacefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysInterface_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKKeysInterface this_ptr_conv = *(LDKKeysInterface*)this_ptr;
+       free((void*)this_ptr);
        return KeysInterface_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeysfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys this_ptr_conv = *(LDKInMemoryChannelKeys*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return InMemoryChannelKeys_free(this_ptr_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgetfundingkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1funding_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_funding_key(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssetfundingkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1funding_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKSecretKey val_conv = *(LDKSecretKey*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_funding_key(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgetrevocationbasekey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1revocation_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_revocation_base_key(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssetrevocationbasekey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1revocation_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKSecretKey val_conv = *(LDKSecretKey*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_revocation_base_key(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgetpaymentkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1payment_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_payment_key(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssetpaymentkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1payment_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKSecretKey val_conv = *(LDKSecretKey*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_payment_key(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgetdelayedpaymentbasekey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1delayed_1payment_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_delayed_payment_base_key(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssetdelayedpaymentbasekey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1delayed_1payment_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKSecretKey val_conv = *(LDKSecretKey*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_delayed_payment_base_key(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgethtlcbasekey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1htlc_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_htlc_base_key(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssethtlcbasekey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1htlc_1base_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKSecretKey val_conv = *(LDKSecretKey*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_htlc_base_key(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL InMemoryChannelKeysgetcommitmentseed(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1commitment_1seed(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *InMemoryChannelKeys_get_commitment_seed(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL InMemoryChannelKeyssetcommitmentseed(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1commitment_1seed(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKInMemoryChannelKeys* this_ptr_conv = (LDKInMemoryChannelKeys*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
        return InMemoryChannelKeys_set_commitment_seed(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL InMemoryChannelKeysnew(JNIEnv * _env, jclass _b, jlong funding_key, jlong revocation_base_key, jlong payment_key, jlong delayed_payment_base_key, jlong htlc_base_key, jlong commitment_seed, jlong channel_value_satoshis, jlong key_derivation_params) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1new(JNIEnv * _env, jclass _b, jlong funding_key, jlong revocation_base_key, jlong payment_key, jlong delayed_payment_base_key, jlong htlc_base_key, jlong commitment_seed, jlong channel_value_satoshis, jlong key_derivation_params) {
        LDKSecretKey funding_key_conv = *(LDKSecretKey*)funding_key;
+       free((void*)funding_key);
        LDKSecretKey revocation_base_key_conv = *(LDKSecretKey*)revocation_base_key;
+       free((void*)revocation_base_key);
        LDKSecretKey payment_key_conv = *(LDKSecretKey*)payment_key;
+       free((void*)payment_key);
        LDKSecretKey delayed_payment_base_key_conv = *(LDKSecretKey*)delayed_payment_base_key;
+       free((void*)delayed_payment_base_key);
        LDKSecretKey htlc_base_key_conv = *(LDKSecretKey*)htlc_base_key;
+       free((void*)htlc_base_key);
        LDKThirtyTwoBytes commitment_seed_conv = *(LDKThirtyTwoBytes*)commitment_seed;
+       free((void*)commitment_seed);
        LDKC2Tuple_u64u64Z key_derivation_params_conv = *(LDKC2Tuple_u64u64Z*)key_derivation_params;
+       free((void*)key_derivation_params);
        LDKInMemoryChannelKeys* ret = malloc(sizeof(LDKInMemoryChannelKeys));
        *ret = InMemoryChannelKeys_new(funding_key_conv, revocation_base_key_conv, payment_key_conv, delayed_payment_base_key_conv, htlc_base_key_conv, commitment_seed_conv, channel_value_satoshis, key_derivation_params_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1remote_1pubkeys(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKInMemoryChannelKeys* this_arg_conv = (LDKInMemoryChannelKeys*)this_arg;
+       LDKChannelPublicKeys* ret = malloc(sizeof(LDKChannelPublicKeys));
+       *ret = InMemoryChannelKeys_remote_pubkeys(this_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1remote_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKInMemoryChannelKeys* this_arg_conv = (LDKInMemoryChannelKeys*)this_arg;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = InMemoryChannelKeys_remote_to_self_delay(this_arg_conv);
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1local_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKInMemoryChannelKeys* this_arg_conv = (LDKInMemoryChannelKeys*)this_arg;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = InMemoryChannelKeys_local_to_self_delay(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL InMemoryChannelKeysasChannelKeys(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1as_1ChannelKeys(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKInMemoryChannelKeys* this_arg_conv = (LDKInMemoryChannelKeys*)this_arg;
        LDKChannelKeys* ret = malloc(sizeof(LDKChannelKeys));
        *ret = InMemoryChannelKeys_as_ChannelKeys(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL InMemoryChannelKeyswrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKInMemoryChannelKeys* obj_conv = (LDKInMemoryChannelKeys*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = InMemoryChannelKeys_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL InMemoryChannelKeysread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKInMemoryChannelKeys* ret = malloc(sizeof(LDKInMemoryChannelKeys));
        *ret = InMemoryChannelKeys_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL KeysManagerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysManager_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKKeysManager this_ptr_conv = *(LDKKeysManager*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return KeysManager_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL KeysManagernew(JNIEnv * _env, jclass _b, jbyteArray seed, jlong network, jlong starting_time_secs, jint starting_time_nanos) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1new(JNIEnv * _env, jclass _b, jbyteArray seed, jlong network, jlong starting_time_secs, jint starting_time_nanos) {
        unsigned char seed_arr[32];
        (*_env)->GetByteArrayRegion (_env, seed, 0, 32, seed_arr);
        unsigned char (*seed_ref)[32] = &seed_arr;
        LDKNetwork network_conv = *(LDKNetwork*)network;
+       free((void*)network);
        LDKKeysManager* ret = malloc(sizeof(LDKKeysManager));
        *ret = KeysManager_new(seed_ref, network_conv, starting_time_secs, starting_time_nanos);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL KeysManagerderivechannelkeys(JNIEnv * _env, jclass _b, jlong this_arg, jlong channel_value_satoshis, jlong params_1, jlong params_2) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1derive_1channel_1keys(JNIEnv * _env, jclass _b, jlong this_arg, jlong channel_value_satoshis, jlong params_1, jlong params_2) {
        LDKKeysManager* this_arg_conv = (LDKKeysManager*)this_arg;
        LDKInMemoryChannelKeys* ret = malloc(sizeof(LDKInMemoryChannelKeys));
        *ret = KeysManager_derive_channel_keys(this_arg_conv, channel_value_satoshis, params_1, params_2);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL KeysManagerasKeysInterface(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1as_1KeysInterface(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKKeysManager* this_arg_conv = (LDKKeysManager*)this_arg;
        LDKKeysInterface* ret = malloc(sizeof(LDKKeysInterface));
        *ret = KeysManager_as_KeysInterface(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelManagerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelManager this_ptr_conv = *(LDKChannelManager*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelManager_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailsfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails this_ptr_conv = *(LDKChannelDetails*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelDetails_free(this_ptr_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL ChannelDetailsgetchannelid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *ChannelDetails_get_channel_id(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetchannelid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
        return ChannelDetails_set_channel_id(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetremotenetworkid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1remote_1network_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelDetails_get_remote_network_id(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetremotenetworkid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1remote_1network_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelDetails_set_remote_network_id(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetcounterpartyfeatures(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1counterparty_1features(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        LDKInitFeatures* ret = malloc(sizeof(LDKInitFeatures));
        *ret = ChannelDetails_get_counterparty_features(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetcounterpartyfeatures(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1counterparty_1features(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        LDKInitFeatures val_conv = *(LDKInitFeatures*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return ChannelDetails_set_counterparty_features(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetchannelvaluesatoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1channel_1value_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_get_channel_value_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetchannelvaluesatoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1channel_1value_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_set_channel_value_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetuserid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1user_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_get_user_id(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetuserid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1user_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_set_user_id(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetoutboundcapacitymsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1outbound_1capacity_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_get_outbound_capacity_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetoutboundcapacitymsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1outbound_1capacity_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_set_outbound_capacity_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelDetailsgetinboundcapacitymsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1inbound_1capacity_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_get_inbound_capacity_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetinboundcapacitymsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1inbound_1capacity_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_set_inbound_capacity_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jboolean JNICALL ChannelDetailsgetislive(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1is_1live(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_get_is_live(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelDetailssetislive(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1is_1live(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKChannelDetails* this_ptr_conv = (LDKChannelDetails*)this_ptr;
        return ChannelDetails_set_is_live(this_ptr_conv, va);
 }
 
-JNIEXPORT void JNICALL PaymentSendFailurefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentSendFailure_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKPaymentSendFailure this_ptr_conv = *(LDKPaymentSendFailure*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return PaymentSendFailure_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelManagernew(JNIEnv * _env, jclass _b, jlong network, jlong fee_est, jlong monitor, jlong tx_broadcaster, jlong logger, jlong keys_manager, jlong config, jlong current_blockchain_height) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1new(JNIEnv * _env, jclass _b, jlong network, jlong fee_est, jlong monitor, jlong tx_broadcaster, jlong logger, jlong keys_manager, jlong config, jlong current_blockchain_height) {
        LDKNetwork network_conv = *(LDKNetwork*)network;
+       free((void*)network);
        LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)fee_est;
+       free((void*)fee_est);
        LDKManyChannelMonitor monitor_conv = *(LDKManyChannelMonitor*)monitor;
+       free((void*)monitor);
        LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)tx_broadcaster;
+       free((void*)tx_broadcaster);
        LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
        LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)keys_manager;
+       free((void*)keys_manager);
        LDKUserConfig config_conv = *(LDKUserConfig*)config;
+       free((void*)config);
+       config_conv._underlying_ref = false;
        uintptr_t current_blockchain_height_conv = *(uintptr_t*)current_blockchain_height;
+       free((void*)current_blockchain_height);
        LDKChannelManager* ret = malloc(sizeof(LDKChannelManager));
        *ret = ChannelManager_new(network_conv, fee_est_conv, monitor_conv, tx_broadcaster_conv, logger_conv, keys_manager_conv, config_conv, current_blockchain_height_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagercreatechannel(JNIEnv * _env, jclass _b, jlong this_arg, jlong their_network_key, jlong channel_value_satoshis, jlong push_msa, jlong ser_id, jlong override_config) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1create_1channel(JNIEnv * _env, jclass _b, jlong this_arg, jlong their_network_key, jlong channel_value_satoshis, jlong push_msa, jlong ser_id, jlong override_config) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKPublicKey their_network_key_conv = *(LDKPublicKey*)their_network_key;
+       free((void*)their_network_key);
        LDKUserConfig override_config_conv = *(LDKUserConfig*)override_config;
+       free((void*)override_config);
+       override_config_conv._underlying_ref = false;
        LDKCResult_NoneAPIErrorZ* ret = malloc(sizeof(LDKCResult_NoneAPIErrorZ));
        *ret = ChannelManager_create_channel(this_arg_conv, their_network_key_conv, channel_value_satoshis, push_msa, ser_id, override_config_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerlistchannels(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1list_1channels(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKCVec_ChannelDetailsZ* ret = malloc(sizeof(LDKCVec_ChannelDetailsZ));
        *ret = ChannelManager_list_channels(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerlistusablechannels(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1list_1usable_1channels(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKCVec_ChannelDetailsZ* ret = malloc(sizeof(LDKCVec_ChannelDetailsZ));
        *ret = ChannelManager_list_usable_channels(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerclosechannel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray channel_id) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1close_1channel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray channel_id) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        unsigned char channel_id_arr[32];
        (*_env)->GetByteArrayRegion (_env, channel_id, 0, 32, channel_id_arr);
@@ -1271,7 +2351,7 @@ JNIEXPORT jlong JNICALL ChannelManagerclosechannel(JNIEnv * _env, jclass _b, jlo
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelManagerforceclosechannel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray channel_id) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1force_1close_1channel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray channel_id) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        unsigned char channel_id_arr[32];
        (*_env)->GetByteArrayRegion (_env, channel_id, 0, 32, channel_id_arr);
@@ -1279,171 +2359,312 @@ JNIEXPORT void JNICALL ChannelManagerforceclosechannel(JNIEnv * _env, jclass _b,
        return ChannelManager_force_close_channel(this_arg_conv, channel_id_ref);
 }
 
-JNIEXPORT void JNICALL ChannelManagerforcecloseallchannels(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1force_1close_1all_1channels(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        return ChannelManager_force_close_all_channels(this_arg_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelManagersendpayment(JNIEnv * _env, jclass _b, jlong this_arg, jlong route, jlong payment_hash, jlong payment_secret) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1payment(JNIEnv * _env, jclass _b, jlong this_arg, jlong route, jlong payment_hash, jlong payment_secret) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKRoute* route_conv = (LDKRoute*)route;
        LDKThirtyTwoBytes payment_hash_conv = *(LDKThirtyTwoBytes*)payment_hash;
+       free((void*)payment_hash);
        LDKThirtyTwoBytes payment_secret_conv = *(LDKThirtyTwoBytes*)payment_secret;
+       free((void*)payment_secret);
        LDKCResult_NonePaymentSendFailureZ* ret = malloc(sizeof(LDKCResult_NonePaymentSendFailureZ));
        *ret = ChannelManager_send_payment(this_arg_conv, route_conv, payment_hash_conv, payment_secret_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelManagerfundingtransactiongenerated(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray temporary_channel_id, jlong funding_txo) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1funding_1transaction_1generated(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray temporary_channel_id, jlong funding_txo) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        unsigned char temporary_channel_id_arr[32];
        (*_env)->GetByteArrayRegion (_env, temporary_channel_id, 0, 32, temporary_channel_id_arr);
        unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
        LDKOutPoint funding_txo_conv = *(LDKOutPoint*)funding_txo;
+       free((void*)funding_txo);
+       funding_txo_conv._underlying_ref = false;
        return ChannelManager_funding_transaction_generated(this_arg_conv, temporary_channel_id_ref, funding_txo_conv);
 }
 
-JNIEXPORT void JNICALL ChannelManagerbroadcastnodeannouncement(JNIEnv * _env, jclass _b, jlong this_arg, jlong rgb, jlong alias, jlong addresses) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1broadcast_1node_1announcement(JNIEnv * _env, jclass _b, jlong this_arg, jlong rgb, jlong alias, jlong addresses) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKThreeBytes rgb_conv = *(LDKThreeBytes*)rgb;
+       free((void*)rgb);
        LDKThirtyTwoBytes alias_conv = *(LDKThirtyTwoBytes*)alias;
+       free((void*)alias);
        LDKCVec_NetAddressZ addresses_conv = *(LDKCVec_NetAddressZ*)addresses;
+       free((void*)addresses);
        return ChannelManager_broadcast_node_announcement(this_arg_conv, rgb_conv, alias_conv, addresses_conv);
 }
 
-JNIEXPORT void JNICALL ChannelManagerprocesspendinghtlcforwards(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1process_1pending_1htlc_1forwards(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        return ChannelManager_process_pending_htlc_forwards(this_arg_conv);
 }
 
-JNIEXPORT void JNICALL ChannelManagertimerchanfreshnesseverymin(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1timer_1chan_1freshness_1every_1min(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        return ChannelManager_timer_chan_freshness_every_min(this_arg_conv);
 }
 
-JNIEXPORT jboolean JNICALL ChannelManagerfailhtlcbackwards(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray payment_hash, jlong payment_secret) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1fail_1htlc_1backwards(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray payment_hash, jlong payment_secret) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        unsigned char payment_hash_arr[32];
        (*_env)->GetByteArrayRegion (_env, payment_hash, 0, 32, payment_hash_arr);
        unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
        LDKThirtyTwoBytes payment_secret_conv = *(LDKThirtyTwoBytes*)payment_secret;
+       free((void*)payment_secret);
        return ChannelManager_fail_htlc_backwards(this_arg_conv, payment_hash_ref, payment_secret_conv);
 }
 
-JNIEXPORT jboolean JNICALL ChannelManagerclaimfunds(JNIEnv * _env, jclass _b, jlong this_arg, jlong payment_preimage, jlong payment_secret, jlong expected_amo) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1claim_1funds(JNIEnv * _env, jclass _b, jlong this_arg, jlong payment_preimage, jlong payment_secret, jlong expected_amo) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKThirtyTwoBytes payment_preimage_conv = *(LDKThirtyTwoBytes*)payment_preimage;
+       free((void*)payment_preimage);
        LDKThirtyTwoBytes payment_secret_conv = *(LDKThirtyTwoBytes*)payment_secret;
+       free((void*)payment_secret);
        return ChannelManager_claim_funds(this_arg_conv, payment_preimage_conv, payment_secret_conv, expected_amo);
 }
 
-JNIEXPORT jlong JNICALL ChannelManagergetournodeid(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1get_1our_1node_1id(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelManager_get_our_node_id(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelManagerchannelmonitorupdated(JNIEnv * _env, jclass _b, jlong this_arg, jlong funding_txo, jlong highest_applied_update_id) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1channel_1monitor_1updated(JNIEnv * _env, jclass _b, jlong this_arg, jlong funding_txo, jlong highest_applied_update_id) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKOutPoint* funding_txo_conv = (LDKOutPoint*)funding_txo;
        return ChannelManager_channel_monitor_updated(this_arg_conv, funding_txo_conv, highest_applied_update_id);
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerasMessageSendEventsProvider(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1MessageSendEventsProvider(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKMessageSendEventsProvider* ret = malloc(sizeof(LDKMessageSendEventsProvider));
        *ret = ChannelManager_as_MessageSendEventsProvider(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerasEventsProvider(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1EventsProvider(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKEventsProvider* ret = malloc(sizeof(LDKEventsProvider));
        *ret = ChannelManager_as_EventsProvider(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerasChainListener(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1ChainListener(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKChainListener* ret = malloc(sizeof(LDKChainListener));
        *ret = ChannelManager_as_ChainListener(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelManagerasChannelMessageHandler(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1ChannelMessageHandler(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelManager* this_arg_conv = (LDKChannelManager*)this_arg;
        LDKChannelMessageHandler* ret = malloc(sizeof(LDKChannelMessageHandler));
        *ret = ChannelManager_as_ChannelMessageHandler(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelMonitorUpdatefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv = *(LDKChannelManagerReadArgs*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return ChannelManagerReadArgs_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1keys_1manager(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       return (long) ChannelManagerReadArgs_get_keys_manager(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1keys_1manager(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKKeysInterface val_conv = *(LDKKeysInterface*)val;
+       free((void*)val);
+       return ChannelManagerReadArgs_set_keys_manager(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1fee_1estimator(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       return (long) ChannelManagerReadArgs_get_fee_estimator(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1fee_1estimator(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKFeeEstimator val_conv = *(LDKFeeEstimator*)val;
+       free((void*)val);
+       return ChannelManagerReadArgs_set_fee_estimator(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1monitor(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       return (long) ChannelManagerReadArgs_get_monitor(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1monitor(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKManyChannelMonitor val_conv = *(LDKManyChannelMonitor*)val;
+       free((void*)val);
+       return ChannelManagerReadArgs_set_monitor(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1tx_1broadcaster(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       return (long) ChannelManagerReadArgs_get_tx_broadcaster(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1tx_1broadcaster(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)val;
+       free((void*)val);
+       return ChannelManagerReadArgs_set_tx_broadcaster(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1logger(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       return (long) ChannelManagerReadArgs_get_logger(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1logger(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKLogger val_conv = *(LDKLogger*)val;
+       free((void*)val);
+       return ChannelManagerReadArgs_set_logger(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1default_1config(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKUserConfig* ret = malloc(sizeof(LDKUserConfig));
+       *ret = ChannelManagerReadArgs_get_default_config(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1default_1config(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelManagerReadArgs* this_ptr_conv = (LDKChannelManagerReadArgs*)this_ptr;
+       LDKUserConfig val_conv = *(LDKUserConfig*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
+       return ChannelManagerReadArgs_set_default_config(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1new(JNIEnv * _env, jclass _b, jlong keys_manager, jlong fee_estimator, jlong monitor, jlong tx_broadcaster, jlong logger, jlong default_config, jlong channel_monitors) {
+       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)keys_manager;
+       free((void*)keys_manager);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)fee_estimator;
+       free((void*)fee_estimator);
+       LDKManyChannelMonitor monitor_conv = *(LDKManyChannelMonitor*)monitor;
+       free((void*)monitor);
+       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)tx_broadcaster;
+       free((void*)tx_broadcaster);
+       LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
+       LDKUserConfig default_config_conv = *(LDKUserConfig*)default_config;
+       free((void*)default_config);
+       default_config_conv._underlying_ref = false;
+       LDKCVec_ChannelMonitorZ channel_monitors_conv = *(LDKCVec_ChannelMonitorZ*)channel_monitors;
+       free((void*)channel_monitors);
+       LDKChannelManagerReadArgs* ret = malloc(sizeof(LDKChannelManagerReadArgs));
+       *ret = ChannelManagerReadArgs_new(keys_manager_conv, fee_estimator_conv, monitor_conv, tx_broadcaster_conv, logger_conv, default_config_conv, channel_monitors_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelMonitorUpdate this_ptr_conv = *(LDKChannelMonitorUpdate*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelMonitorUpdate_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorUpdategetupdateid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1get_1update_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelMonitorUpdate* this_ptr_conv = (LDKChannelMonitorUpdate*)this_ptr;
        return ChannelMonitorUpdate_get_update_id(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelMonitorUpdatesetupdateid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1set_1update_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelMonitorUpdate* this_ptr_conv = (LDKChannelMonitorUpdate*)this_ptr;
        return ChannelMonitorUpdate_set_update_id(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorUpdatewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelMonitorUpdate* obj_conv = (LDKChannelMonitorUpdate*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelMonitorUpdate_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorUpdateread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelMonitorUpdate* ret = malloc(sizeof(LDKChannelMonitorUpdate));
        *ret = ChannelMonitorUpdate_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL MonitorUpdateErrorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MonitorUpdateError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMonitorUpdateError this_ptr_conv = *(LDKMonitorUpdateError*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return MonitorUpdateError_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL HTLCUpdatefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MonitorEvent_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKMonitorEvent this_ptr_conv = *(LDKMonitorEvent*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return MonitorEvent_free(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCUpdate this_ptr_conv = *(LDKHTLCUpdate*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return HTLCUpdate_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL HTLCUpdatewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKHTLCUpdate* obj_conv = (LDKHTLCUpdate*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = HTLCUpdate_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL HTLCUpdateread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKHTLCUpdate* ret = malloc(sizeof(LDKHTLCUpdate));
        *ret = HTLCUpdate_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelMonitorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelMonitor this_ptr_conv = *(LDKChannelMonitor*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelMonitor_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ManyChannelMonitorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ManyChannelMonitor_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKManyChannelMonitor this_ptr_conv = *(LDKManyChannelMonitor*)this_ptr;
+       free((void*)this_ptr);
        return ManyChannelMonitor_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorupdatemonitor(JNIEnv * _env, jclass _b, jlong this_arg, jlong updates, jlong broadcaster, jlong logger) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1update_1monitor(JNIEnv * _env, jclass _b, jlong this_arg, jlong updates, jlong broadcaster, jlong logger) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
        LDKChannelMonitorUpdate updates_conv = *(LDKChannelMonitorUpdate*)updates;
+       free((void*)updates);
+       updates_conv._underlying_ref = false;
        LDKBroadcasterInterface* broadcaster_conv = (LDKBroadcasterInterface*)broadcaster;
        LDKLogger* logger_conv = (LDKLogger*)logger;
        LDKCResult_NoneMonitorUpdateErrorZ* ret = malloc(sizeof(LDKCResult_NoneMonitorUpdateErrorZ));
@@ -1451,33 +2672,33 @@ JNIEXPORT jlong JNICALL ChannelMonitorupdatemonitor(JNIEnv * _env, jclass _b, jl
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorgetlatestupdateid(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1latest_1update_1id(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
        return ChannelMonitor_get_latest_update_id(this_arg_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorgetfundingtxo(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1funding_1txo(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
        LDKC2Tuple_OutPointScriptZ* ret = malloc(sizeof(LDKC2Tuple_OutPointScriptZ));
        *ret = ChannelMonitor_get_funding_txo(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorgetandclearpendinghtlcsupdated(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1and_1clear_1pending_1monitor_1events(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
-       LDKCVec_HTLCUpdateZ* ret = malloc(sizeof(LDKCVec_HTLCUpdateZ));
-       *ret = ChannelMonitor_get_and_clear_pending_htlcs_updated(this_arg_conv);
+       LDKCVec_MonitorEventZ* ret = malloc(sizeof(LDKCVec_MonitorEventZ));
+       *ret = ChannelMonitor_get_and_clear_pending_monitor_events(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorgetandclearpendingevents(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1and_1clear_1pending_1events(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
        LDKCVec_EventZ* ret = malloc(sizeof(LDKCVec_EventZ));
        *ret = ChannelMonitor_get_and_clear_pending_events(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelMonitorgetlatestlocalcommitmenttxn(JNIEnv * _env, jclass _b, jlong this_arg, jlong logger) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1latest_1local_1commitment_1txn(JNIEnv * _env, jclass _b, jlong this_arg, jlong logger) {
        LDKChannelMonitor* this_arg_conv = (LDKChannelMonitor*)this_arg;
        LDKLogger* logger_conv = (LDKLogger*)logger;
        LDKCVec_TransactionZ* ret = malloc(sizeof(LDKCVec_TransactionZ));
@@ -1485,793 +2706,2537 @@ JNIEXPORT jlong JNICALL ChannelMonitorgetlatestlocalcommitmenttxn(JNIEnv * _env,
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL DecodeErrorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DecodeError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDecodeError this_ptr_conv = *(LDKDecodeError*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return DecodeError_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL Initfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Init_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInit this_ptr_conv = *(LDKInit*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return Init_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ErrorMessagefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKErrorMessage this_ptr_conv = *(LDKErrorMessage*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ErrorMessage_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL Pingfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKErrorMessage* this_ptr_conv = (LDKErrorMessage*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *ErrorMessage_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKErrorMessage* this_ptr_conv = (LDKErrorMessage*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return ErrorMessage_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1get_1data(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKErrorMessage* this_ptr_conv = (LDKErrorMessage*)this_ptr;
+       LDKStr* ret = malloc(sizeof(LDKStr));
+       *ret = ErrorMessage_get_data(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1data(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKErrorMessage* this_ptr_conv = (LDKErrorMessage*)this_ptr;
+       LDKCVec_u8Z val_conv = *(LDKCVec_u8Z*)val;
+       free((void*)val);
+       return ErrorMessage_set_data(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong data_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKCVec_u8Z data_arg_conv = *(LDKCVec_u8Z*)data_arg;
+       free((void*)data_arg);
+       LDKErrorMessage* ret = malloc(sizeof(LDKErrorMessage));
+       *ret = ErrorMessage_new(channel_id_arg_conv, data_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKPing this_ptr_conv = *(LDKPing*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return Ping_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL Pongfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKPong this_ptr_conv = *(LDKPong*)this_ptr;
-       return Pong_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1get_1ponglen(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKPing* this_ptr_conv = (LDKPing*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = Ping_get_ponglen(this_ptr_conv);
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL OpenChannelfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKOpenChannel this_ptr_conv = *(LDKOpenChannel*)this_ptr;
-       return OpenChannel_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1set_1ponglen(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKPing* this_ptr_conv = (LDKPing*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return Ping_set_ponglen(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL AcceptChannelfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKAcceptChannel this_ptr_conv = *(LDKAcceptChannel*)this_ptr;
-       return AcceptChannel_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1get_1byteslen(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKPing* this_ptr_conv = (LDKPing*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = Ping_get_byteslen(this_ptr_conv);
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL FundingCreatedfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKFundingCreated this_ptr_conv = *(LDKFundingCreated*)this_ptr;
-       return FundingCreated_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1set_1byteslen(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKPing* this_ptr_conv = (LDKPing*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return Ping_set_byteslen(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL FundingSignedfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKFundingSigned this_ptr_conv = *(LDKFundingSigned*)this_ptr;
-       return FundingSigned_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1new(JNIEnv * _env, jclass _b, jlong ponglen_arg, jlong byteslen_arg) {
+       uint16_t ponglen_arg_conv = *(uint16_t*)ponglen_arg;
+       free((void*)ponglen_arg);
+       uint16_t byteslen_arg_conv = *(uint16_t*)byteslen_arg;
+       free((void*)byteslen_arg);
+       LDKPing* ret = malloc(sizeof(LDKPing));
+       *ret = Ping_new(ponglen_arg_conv, byteslen_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL FundingLockedfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKFundingLocked this_ptr_conv = *(LDKFundingLocked*)this_ptr;
-       return FundingLocked_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKPong this_ptr_conv = *(LDKPong*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return Pong_free(this_ptr_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL FundingLockedgetchannelid(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
-       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *FundingLocked_get_channel_id(this_ptr_conv));
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1get_1byteslen(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKPong* this_ptr_conv = (LDKPong*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = Pong_get_byteslen(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1set_1byteslen(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKPong* this_ptr_conv = (LDKPong*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return Pong_set_byteslen(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1new(JNIEnv * _env, jclass _b, jlong byteslen_arg) {
+       uint16_t byteslen_arg_conv = *(uint16_t*)byteslen_arg;
+       free((void*)byteslen_arg);
+       LDKPong* ret = malloc(sizeof(LDKPong));
+       *ret = Pong_new(byteslen_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel this_ptr_conv = *(LDKOpenChannel*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return OpenChannel_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *OpenChannel_get_chain_hash(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL FundingLockedsetchannelid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
-       return FundingLocked_set_channel_id(this_ptr_conv, val_conv);
+       free((void*)val);
+       return OpenChannel_set_chain_hash(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL FundingLockedgetnextpercommitmentpoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
-       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
-       *ret = FundingLocked_get_next_per_commitment_point(this_ptr_conv);
-       return (long)ret;
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *OpenChannel_get_temporary_channel_id(this_ptr_conv));
+       return ret_arr;
 }
 
-JNIEXPORT void JNICALL FundingLockedsetnextpercommitmentpoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
-       LDKPublicKey val_conv = *(LDKPublicKey*)val;
-       return FundingLocked_set_next_per_commitment_point(this_ptr_conv, val_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return OpenChannel_set_temporary_channel_id(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL FundingLockednew(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong next_per_commitment_point_arg) {
-       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
-       LDKPublicKey next_per_commitment_point_arg_conv = *(LDKPublicKey*)next_per_commitment_point_arg;
-       LDKFundingLocked* ret = malloc(sizeof(LDKFundingLocked));
-       *ret = FundingLocked_new(channel_id_arg_conv, next_per_commitment_point_arg_conv);
-       return (long)ret;
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1funding_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_funding_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL Shutdownfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKShutdown this_ptr_conv = *(LDKShutdown*)this_ptr;
-       return Shutdown_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1funding_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_funding_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL ClosingSignedfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKClosingSigned this_ptr_conv = *(LDKClosingSigned*)this_ptr;
-       return ClosingSigned_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1push_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_push_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL UpdateAddHTLCfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv = *(LDKUpdateAddHTLC*)this_ptr;
-       return UpdateAddHTLC_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1push_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_push_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL UpdateFulfillHTLCfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUpdateFulfillHTLC this_ptr_conv = *(LDKUpdateFulfillHTLC*)this_ptr;
-       return UpdateFulfillHTLC_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_dust_limit_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL UpdateFailHTLCfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUpdateFailHTLC this_ptr_conv = *(LDKUpdateFailHTLC*)this_ptr;
-       return UpdateFailHTLC_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_dust_limit_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL UpdateFailMalformedHTLCfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv = *(LDKUpdateFailMalformedHTLC*)this_ptr;
-       return UpdateFailMalformedHTLC_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_max_htlc_value_in_flight_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL CommitmentSignedfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKCommitmentSigned this_ptr_conv = *(LDKCommitmentSigned*)this_ptr;
-       return CommitmentSigned_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_max_htlc_value_in_flight_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL RevokeAndACKfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKRevokeAndACK this_ptr_conv = *(LDKRevokeAndACK*)this_ptr;
-       return RevokeAndACK_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_channel_reserve_satoshis(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL UpdateFeefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUpdateFee this_ptr_conv = *(LDKUpdateFee*)this_ptr;
-       return UpdateFee_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_channel_reserve_satoshis(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL ChannelReestablishfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKChannelReestablish this_ptr_conv = *(LDKChannelReestablish*)this_ptr;
-       return ChannelReestablish_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_htlc_minimum_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL AnnouncementSignaturesfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv = *(LDKAnnouncementSignatures*)this_ptr;
-       return AnnouncementSignatures_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_htlc_minimum_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL NetAddressfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)this_ptr;
-       return NetAddress_free(this_ptr_conv);
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_feerate_per_kw(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL UnsignedNodeAnnouncementfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv = *(LDKUnsignedNodeAnnouncement*)this_ptr;
-       return UnsignedNodeAnnouncement_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_feerate_per_kw(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL UnsignedNodeAnnouncementgetnodeid(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
-       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
-       *ret = UnsignedNodeAnnouncement_get_node_id(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = OpenChannel_get_to_self_delay(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UnsignedNodeAnnouncementsetnodeid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
-       LDKPublicKey val_conv = *(LDKPublicKey*)val;
-       return UnsignedNodeAnnouncement_set_node_id(this_ptr_conv, val_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return OpenChannel_set_to_self_delay(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKNodeAnnouncement this_ptr_conv = *(LDKNodeAnnouncement*)this_ptr;
-       return NodeAnnouncement_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = OpenChannel_get_max_accepted_htlcs(this_ptr_conv);
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL UnsignedChannelAnnouncementfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv = *(LDKUnsignedChannelAnnouncement*)this_ptr;
-       return UnsignedChannelAnnouncement_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return OpenChannel_set_max_accepted_htlcs(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL UnsignedChannelAnnouncementgetnodeid1(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
-       *ret = UnsignedChannelAnnouncement_get_node_id_1(this_ptr_conv);
+       *ret = OpenChannel_get_funding_pubkey(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UnsignedChannelAnnouncementsetnodeid1(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
-       return UnsignedChannelAnnouncement_set_node_id_1(this_ptr_conv, val_conv);
+       free((void*)val);
+       return OpenChannel_set_funding_pubkey(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL UnsignedChannelAnnouncementgetnodeid2(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
-       *ret = UnsignedChannelAnnouncement_get_node_id_2(this_ptr_conv);
+       *ret = OpenChannel_get_revocation_basepoint(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL UnsignedChannelAnnouncementsetnodeid2(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
-       return UnsignedChannelAnnouncement_set_node_id_2(this_ptr_conv, val_conv);
+       free((void*)val);
+       return OpenChannel_set_revocation_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL ChannelAnnouncementfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv = *(LDKChannelAnnouncement*)this_ptr;
-       return ChannelAnnouncement_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = OpenChannel_get_payment_point(this_ptr_conv);
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelUpdatefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKChannelUpdate this_ptr_conv = *(LDKChannelUpdate*)this_ptr;
-       return ChannelUpdate_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return OpenChannel_set_payment_point(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL ErrorActionfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)this_ptr;
-       return ErrorAction_free(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = OpenChannel_get_delayed_payment_basepoint(this_ptr_conv);
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL LightningErrorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKLightningError this_ptr_conv = *(LDKLightningError*)this_ptr;
-       return LightningError_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return OpenChannel_set_delayed_payment_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL LightningErrorgeterr(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
-       LDKStr* ret = malloc(sizeof(LDKStr));
-       *ret = LightningError_get_err(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = OpenChannel_get_htlc_basepoint(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL LightningErrorseterr(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
-       LDKCVec_u8Z val_conv = *(LDKCVec_u8Z*)val;
-       return LightningError_set_err(this_ptr_conv, val_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return OpenChannel_set_htlc_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL LightningErrorgetaction(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
-       LDKErrorAction* ret = malloc(sizeof(LDKErrorAction));
-       *ret = LightningError_get_action(this_ptr_conv);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1first_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = OpenChannel_get_first_per_commitment_point(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL LightningErrorsetaction(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
-       LDKErrorAction val_conv = *(LDKErrorAction*)val;
-       return LightningError_set_action(this_ptr_conv, val_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1first_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return OpenChannel_set_first_per_commitment_point(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL LightningErrornew(JNIEnv * _env, jclass _b, jlong err_arg, jlong action_arg) {
-       LDKCVec_u8Z err_arg_conv = *(LDKCVec_u8Z*)err_arg;
-       LDKErrorAction action_arg_conv = *(LDKErrorAction*)action_arg;
-       LDKLightningError* ret = malloc(sizeof(LDKLightningError));
-       *ret = LightningError_new(err_arg_conv, action_arg_conv);
-       return (long)ret;
+JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1channel_1flags(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_get_channel_flags(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv = *(LDKCommitmentUpdate*)this_ptr;
-       return CommitmentUpdate_free(this_ptr_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1flags(JNIEnv * _env, jclass _b, jlong this_ptr, jbyte val) {
+       LDKOpenChannel* this_ptr_conv = (LDKOpenChannel*)this_ptr;
+       return OpenChannel_set_channel_flags(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetupdateaddhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
-       LDKCVec_UpdateAddHTLCZ val_conv = *(LDKCVec_UpdateAddHTLCZ*)val;
-       return CommitmentUpdate_set_update_add_htlcs(this_ptr_conv, val_conv);
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel this_ptr_conv = *(LDKAcceptChannel*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return AcceptChannel_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetupdatefulfillhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
-       LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
-       LDKCVec_UpdateFulfillHTLCZ val_conv = *(LDKCVec_UpdateFulfillHTLCZ*)val;
-       return CommitmentUpdate_set_update_fulfill_htlcs(this_ptr_conv, val_conv);
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *AcceptChannel_get_temporary_channel_id(this_ptr_conv));
+       return ret_arr;
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetupdatefailhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return AcceptChannel_set_temporary_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_get_dust_limit_satoshis(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1dust_1limit_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_set_dust_limit_satoshis(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_get_max_htlc_value_in_flight_msat(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1max_1htlc_1value_1in_1flight_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_set_max_htlc_value_in_flight_msat(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_get_channel_reserve_satoshis(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1channel_1reserve_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_set_channel_reserve_satoshis(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_get_htlc_minimum_msat(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_set_htlc_minimum_msat(this_ptr_conv, val);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_get_minimum_depth(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1minimum_1depth(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       return AcceptChannel_set_minimum_depth(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = AcceptChannel_get_to_self_delay(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1to_1self_1delay(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return AcceptChannel_set_to_self_delay(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = AcceptChannel_get_max_accepted_htlcs(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1max_1accepted_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return AcceptChannel_set_max_accepted_htlcs(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_funding_pubkey(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_funding_pubkey(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_revocation_basepoint(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_revocation_basepoint(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_payment_point(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_payment_point(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_delayed_payment_basepoint(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_delayed_payment_basepoint(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_htlc_basepoint(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_htlc_basepoint(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1first_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = AcceptChannel_get_first_per_commitment_point(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1first_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAcceptChannel* this_ptr_conv = (LDKAcceptChannel*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return AcceptChannel_set_first_per_commitment_point(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingCreated this_ptr_conv = *(LDKFundingCreated*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return FundingCreated_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *FundingCreated_get_temporary_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1temporary_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return FundingCreated_set_temporary_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1funding_1txid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *FundingCreated_get_funding_txid(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1txid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return FundingCreated_set_funding_txid(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1funding_1output_1index(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = FundingCreated_get_funding_output_index(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1output_1index(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return FundingCreated_set_funding_output_index(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = FundingCreated_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingCreated* this_ptr_conv = (LDKFundingCreated*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return FundingCreated_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new(JNIEnv * _env, jclass _b, jlong temporary_channel_id_arg, jlong funding_txid_arg, jlong funding_output_index_arg, jlong signature_arg) {
+       LDKThirtyTwoBytes temporary_channel_id_arg_conv = *(LDKThirtyTwoBytes*)temporary_channel_id_arg;
+       free((void*)temporary_channel_id_arg);
+       LDKThirtyTwoBytes funding_txid_arg_conv = *(LDKThirtyTwoBytes*)funding_txid_arg;
+       free((void*)funding_txid_arg);
+       uint16_t funding_output_index_arg_conv = *(uint16_t*)funding_output_index_arg;
+       free((void*)funding_output_index_arg);
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKFundingCreated* ret = malloc(sizeof(LDKFundingCreated));
+       *ret = FundingCreated_new(temporary_channel_id_arg_conv, funding_txid_arg_conv, funding_output_index_arg_conv, signature_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingSigned this_ptr_conv = *(LDKFundingSigned*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return FundingSigned_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingSigned* this_ptr_conv = (LDKFundingSigned*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *FundingSigned_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingSigned* this_ptr_conv = (LDKFundingSigned*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return FundingSigned_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingSigned* this_ptr_conv = (LDKFundingSigned*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = FundingSigned_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingSigned* this_ptr_conv = (LDKFundingSigned*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return FundingSigned_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKFundingSigned* ret = malloc(sizeof(LDKFundingSigned));
+       *ret = FundingSigned_new(channel_id_arg_conv, signature_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingLocked this_ptr_conv = *(LDKFundingLocked*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return FundingLocked_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_FundingLocked_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *FundingLocked_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return FundingLocked_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1get_1next_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = FundingLocked_get_next_per_commitment_point(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1next_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKFundingLocked* this_ptr_conv = (LDKFundingLocked*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return FundingLocked_set_next_per_commitment_point(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKPublicKey next_per_commitment_point_arg_conv = *(LDKPublicKey*)next_per_commitment_point_arg;
+       free((void*)next_per_commitment_point_arg);
+       LDKFundingLocked* ret = malloc(sizeof(LDKFundingLocked));
+       *ret = FundingLocked_new(channel_id_arg_conv, next_per_commitment_point_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKShutdown this_ptr_conv = *(LDKShutdown*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return Shutdown_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_Shutdown_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKShutdown* this_ptr_conv = (LDKShutdown*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *Shutdown_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKShutdown* this_ptr_conv = (LDKShutdown*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return Shutdown_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1get_1scriptpubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKShutdown* this_ptr_conv = (LDKShutdown*)this_ptr;
+       LDKu8slice* ret = malloc(sizeof(LDKu8slice));
+       *ret = Shutdown_get_scriptpubkey(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1scriptpubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKShutdown* this_ptr_conv = (LDKShutdown*)this_ptr;
+       LDKCVec_u8Z val_conv = *(LDKCVec_u8Z*)val;
+       free((void*)val);
+       return Shutdown_set_scriptpubkey(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong scriptpubkey_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKCVec_u8Z scriptpubkey_arg_conv = *(LDKCVec_u8Z*)scriptpubkey_arg;
+       free((void*)scriptpubkey_arg);
+       LDKShutdown* ret = malloc(sizeof(LDKShutdown));
+       *ret = Shutdown_new(channel_id_arg_conv, scriptpubkey_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKClosingSigned this_ptr_conv = *(LDKClosingSigned*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return ClosingSigned_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *ClosingSigned_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return ClosingSigned_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1fee_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       return ClosingSigned_get_fee_satoshis(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1fee_1satoshis(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       return ClosingSigned_set_fee_satoshis(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ClosingSigned_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKClosingSigned* this_ptr_conv = (LDKClosingSigned*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ClosingSigned_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong fee_satoshis_arg, jlong signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKClosingSigned* ret = malloc(sizeof(LDKClosingSigned));
+       *ret = ClosingSigned_new(channel_id_arg_conv, fee_satoshis_arg, signature_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv = *(LDKUpdateAddHTLC*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UpdateAddHTLC_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateAddHTLC_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateAddHTLC_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_get_htlc_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_set_htlc_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1amount_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_get_amount_msat(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1amount_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_set_amount_msat(this_ptr_conv, val);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1payment_1hash(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateAddHTLC_get_payment_hash(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1payment_1hash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateAddHTLC_set_payment_hash(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1cltv_1expiry(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_get_cltv_expiry(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1cltv_1expiry(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUpdateAddHTLC* this_ptr_conv = (LDKUpdateAddHTLC*)this_ptr;
+       return UpdateAddHTLC_set_cltv_expiry(this_ptr_conv, val);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFulfillHTLC this_ptr_conv = *(LDKUpdateFulfillHTLC*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UpdateFulfillHTLC_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateFulfillHTLC_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateFulfillHTLC_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       return UpdateFulfillHTLC_get_htlc_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       return UpdateFulfillHTLC_set_htlc_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1payment_1preimage(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateFulfillHTLC_get_payment_preimage(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1payment_1preimage(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFulfillHTLC* this_ptr_conv = (LDKUpdateFulfillHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateFulfillHTLC_set_payment_preimage(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong htlc_id_arg, jlong payment_preimage_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKThirtyTwoBytes payment_preimage_arg_conv = *(LDKThirtyTwoBytes*)payment_preimage_arg;
+       free((void*)payment_preimage_arg);
+       LDKUpdateFulfillHTLC* ret = malloc(sizeof(LDKUpdateFulfillHTLC));
+       *ret = UpdateFulfillHTLC_new(channel_id_arg_conv, htlc_id_arg, payment_preimage_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailHTLC this_ptr_conv = *(LDKUpdateFailHTLC*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UpdateFailHTLC_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailHTLC* this_ptr_conv = (LDKUpdateFailHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateFailHTLC_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFailHTLC* this_ptr_conv = (LDKUpdateFailHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateFailHTLC_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1get_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailHTLC* this_ptr_conv = (LDKUpdateFailHTLC*)this_ptr;
+       return UpdateFailHTLC_get_htlc_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFailHTLC* this_ptr_conv = (LDKUpdateFailHTLC*)this_ptr;
+       return UpdateFailHTLC_set_htlc_id(this_ptr_conv, val);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv = *(LDKUpdateFailMalformedHTLC*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UpdateFailMalformedHTLC_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateFailMalformedHTLC_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateFailMalformedHTLC_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       return UpdateFailMalformedHTLC_get_htlc_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1htlc_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       return UpdateFailMalformedHTLC_set_htlc_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1failure_1code(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = UpdateFailMalformedHTLC_get_failure_code(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1failure_1code(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFailMalformedHTLC* this_ptr_conv = (LDKUpdateFailMalformedHTLC*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return UpdateFailMalformedHTLC_set_failure_code(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKCommitmentSigned this_ptr_conv = *(LDKCommitmentSigned*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return CommitmentSigned_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKCommitmentSigned* this_ptr_conv = (LDKCommitmentSigned*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *CommitmentSigned_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKCommitmentSigned* this_ptr_conv = (LDKCommitmentSigned*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return CommitmentSigned_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKCommitmentSigned* this_ptr_conv = (LDKCommitmentSigned*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = CommitmentSigned_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKCommitmentSigned* this_ptr_conv = (LDKCommitmentSigned*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return CommitmentSigned_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1htlc_1signatures(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKCommitmentSigned* this_ptr_conv = (LDKCommitmentSigned*)this_ptr;
+       LDKCVec_SignatureZ val_conv = *(LDKCVec_SignatureZ*)val;
+       free((void*)val);
+       return CommitmentSigned_set_htlc_signatures(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong signature_arg, jlong htlc_signatures_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKCVec_SignatureZ htlc_signatures_arg_conv = *(LDKCVec_SignatureZ*)htlc_signatures_arg;
+       free((void*)htlc_signatures_arg);
+       LDKCommitmentSigned* ret = malloc(sizeof(LDKCommitmentSigned));
+       *ret = CommitmentSigned_new(channel_id_arg_conv, signature_arg_conv, htlc_signatures_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKRevokeAndACK this_ptr_conv = *(LDKRevokeAndACK*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return RevokeAndACK_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *RevokeAndACK_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return RevokeAndACK_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1per_1commitment_1secret(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *RevokeAndACK_get_per_commitment_secret(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1per_1commitment_1secret(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return RevokeAndACK_set_per_commitment_secret(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1next_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = RevokeAndACK_get_next_per_commitment_point(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1next_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKRevokeAndACK* this_ptr_conv = (LDKRevokeAndACK*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return RevokeAndACK_set_next_per_commitment_point(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong per_commitment_secret_arg, jlong next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKThirtyTwoBytes per_commitment_secret_arg_conv = *(LDKThirtyTwoBytes*)per_commitment_secret_arg;
+       free((void*)per_commitment_secret_arg);
+       LDKPublicKey next_per_commitment_point_arg_conv = *(LDKPublicKey*)next_per_commitment_point_arg;
+       free((void*)next_per_commitment_point_arg);
+       LDKRevokeAndACK* ret = malloc(sizeof(LDKRevokeAndACK));
+       *ret = RevokeAndACK_new(channel_id_arg_conv, per_commitment_secret_arg_conv, next_per_commitment_point_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFee this_ptr_conv = *(LDKUpdateFee*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UpdateFee_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UpdateFee_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFee* this_ptr_conv = (LDKUpdateFee*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UpdateFee_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUpdateFee* this_ptr_conv = (LDKUpdateFee*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UpdateFee_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UpdateFee_1get_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUpdateFee* this_ptr_conv = (LDKUpdateFee*)this_ptr;
+       return UpdateFee_get_feerate_per_kw(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUpdateFee* this_ptr_conv = (LDKUpdateFee*)this_ptr;
+       return UpdateFee_set_feerate_per_kw(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jint feerate_per_kw_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKUpdateFee* ret = malloc(sizeof(LDKUpdateFee));
+       *ret = UpdateFee_new(channel_id_arg_conv, feerate_per_kw_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKDataLossProtect this_ptr_conv = *(LDKDataLossProtect*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return DataLossProtect_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1get_1your_1last_1per_1commitment_1secret(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKDataLossProtect* this_ptr_conv = (LDKDataLossProtect*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *DataLossProtect_get_your_last_per_commitment_secret(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1your_1last_1per_1commitment_1secret(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKDataLossProtect* this_ptr_conv = (LDKDataLossProtect*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return DataLossProtect_set_your_last_per_commitment_secret(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1get_1my_1current_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKDataLossProtect* this_ptr_conv = (LDKDataLossProtect*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = DataLossProtect_get_my_current_per_commitment_point(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1my_1current_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKDataLossProtect* this_ptr_conv = (LDKDataLossProtect*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return DataLossProtect_set_my_current_per_commitment_point(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new(JNIEnv * _env, jclass _b, jlong your_last_per_commitment_secret_arg, jlong my_current_per_commitment_point_arg) {
+       LDKThirtyTwoBytes your_last_per_commitment_secret_arg_conv = *(LDKThirtyTwoBytes*)your_last_per_commitment_secret_arg;
+       free((void*)your_last_per_commitment_secret_arg);
+       LDKPublicKey my_current_per_commitment_point_arg_conv = *(LDKPublicKey*)my_current_per_commitment_point_arg;
+       free((void*)my_current_per_commitment_point_arg);
+       LDKDataLossProtect* ret = malloc(sizeof(LDKDataLossProtect));
+       *ret = DataLossProtect_new(your_last_per_commitment_secret_arg_conv, my_current_per_commitment_point_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelReestablish this_ptr_conv = *(LDKChannelReestablish*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return ChannelReestablish_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *ChannelReestablish_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return ChannelReestablish_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1next_1local_1commitment_1number(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       return ChannelReestablish_get_next_local_commitment_number(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_1local_1commitment_1number(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       return ChannelReestablish_set_next_local_commitment_number(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1next_1remote_1commitment_1number(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       return ChannelReestablish_get_next_remote_commitment_number(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_1remote_1commitment_1number(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelReestablish* this_ptr_conv = (LDKChannelReestablish*)this_ptr;
+       return ChannelReestablish_set_next_remote_commitment_number(this_ptr_conv, val);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv = *(LDKAnnouncementSignatures*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return AnnouncementSignatures_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *AnnouncementSignatures_get_channel_id(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return AnnouncementSignatures_set_channel_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       return AnnouncementSignatures_get_short_channel_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       return AnnouncementSignatures_set_short_channel_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = AnnouncementSignatures_get_node_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return AnnouncementSignatures_set_node_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = AnnouncementSignatures_get_bitcoin_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKAnnouncementSignatures* this_ptr_conv = (LDKAnnouncementSignatures*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return AnnouncementSignatures_set_bitcoin_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new(JNIEnv * _env, jclass _b, jlong channel_id_arg, jlong short_channel_id_arg, jlong node_signature_arg, jlong bitcoin_signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_conv = *(LDKThirtyTwoBytes*)channel_id_arg;
+       free((void*)channel_id_arg);
+       LDKSignature node_signature_arg_conv = *(LDKSignature*)node_signature_arg;
+       free((void*)node_signature_arg);
+       LDKSignature bitcoin_signature_arg_conv = *(LDKSignature*)bitcoin_signature_arg;
+       free((void*)bitcoin_signature_arg);
+       LDKAnnouncementSignatures* ret = malloc(sizeof(LDKAnnouncementSignatures));
+       *ret = AnnouncementSignatures_new(channel_id_arg_conv, short_channel_id_arg, node_signature_arg_conv, bitcoin_signature_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetAddress_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)this_ptr;
+       free((void*)this_ptr);
+       return NetAddress_free(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv = *(LDKUnsignedNodeAnnouncement*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UnsignedNodeAnnouncement_free(this_ptr_conv);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1timestamp(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       return UnsignedNodeAnnouncement_get_timestamp(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1timestamp(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       return UnsignedNodeAnnouncement_set_timestamp(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1node_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = UnsignedNodeAnnouncement_get_node_id(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1node_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return UnsignedNodeAnnouncement_set_node_id(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1rgb(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 3);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 3, *UnsignedNodeAnnouncement_get_rgb(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1rgb(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       LDKThreeBytes val_conv = *(LDKThreeBytes*)val;
+       free((void*)val);
+       return UnsignedNodeAnnouncement_set_rgb(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1alias(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UnsignedNodeAnnouncement_get_alias(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1alias(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UnsignedNodeAnnouncement_set_alias(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1addresses(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedNodeAnnouncement* this_ptr_conv = (LDKUnsignedNodeAnnouncement*)this_ptr;
+       LDKCVec_NetAddressZ val_conv = *(LDKCVec_NetAddressZ*)val;
+       free((void*)val);
+       return UnsignedNodeAnnouncement_set_addresses(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKNodeAnnouncement this_ptr_conv = *(LDKNodeAnnouncement*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return NodeAnnouncement_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKNodeAnnouncement* this_ptr_conv = (LDKNodeAnnouncement*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = NodeAnnouncement_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKNodeAnnouncement* this_ptr_conv = (LDKNodeAnnouncement*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return NodeAnnouncement_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKNodeAnnouncement* this_ptr_conv = (LDKNodeAnnouncement*)this_ptr;
+       LDKUnsignedNodeAnnouncement* ret = malloc(sizeof(LDKUnsignedNodeAnnouncement));
+       *ret = NodeAnnouncement_get_contents(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1contents(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKNodeAnnouncement* this_ptr_conv = (LDKNodeAnnouncement*)this_ptr;
+       LDKUnsignedNodeAnnouncement val_conv = *(LDKUnsignedNodeAnnouncement*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
+       return NodeAnnouncement_set_contents(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new(JNIEnv * _env, jclass _b, jlong signature_arg, jlong contents_arg) {
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKUnsignedNodeAnnouncement contents_arg_conv = *(LDKUnsignedNodeAnnouncement*)contents_arg;
+       free((void*)contents_arg);
+       contents_arg_conv._underlying_ref = false;
+       LDKNodeAnnouncement* ret = malloc(sizeof(LDKNodeAnnouncement));
+       *ret = NodeAnnouncement_new(signature_arg_conv, contents_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv = *(LDKUnsignedChannelAnnouncement*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UnsignedChannelAnnouncement_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UnsignedChannelAnnouncement_get_chain_hash(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UnsignedChannelAnnouncement_set_chain_hash(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       return UnsignedChannelAnnouncement_get_short_channel_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       return UnsignedChannelAnnouncement_set_short_channel_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1node_1id_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = UnsignedChannelAnnouncement_get_node_id_1(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1node_1id_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return UnsignedChannelAnnouncement_set_node_id_1(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1node_1id_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = UnsignedChannelAnnouncement_get_node_id_2(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1node_1id_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return UnsignedChannelAnnouncement_set_node_id_2(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1bitcoin_1key_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = UnsignedChannelAnnouncement_get_bitcoin_key_1(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1bitcoin_1key_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return UnsignedChannelAnnouncement_set_bitcoin_key_1(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1bitcoin_1key_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = UnsignedChannelAnnouncement_get_bitcoin_key_2(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1bitcoin_1key_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelAnnouncement* this_ptr_conv = (LDKUnsignedChannelAnnouncement*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv = *(LDKChannelAnnouncement*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return ChannelAnnouncement_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ChannelAnnouncement_get_node_signature_1(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ChannelAnnouncement_set_node_signature_1(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ChannelAnnouncement_get_node_signature_2(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ChannelAnnouncement_set_node_signature_2(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ChannelAnnouncement_get_bitcoin_signature_1(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ChannelAnnouncement_set_bitcoin_signature_1(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ChannelAnnouncement_get_bitcoin_signature_2(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ChannelAnnouncement_set_bitcoin_signature_2(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKUnsignedChannelAnnouncement* ret = malloc(sizeof(LDKUnsignedChannelAnnouncement));
+       *ret = ChannelAnnouncement_get_contents(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1contents(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelAnnouncement* this_ptr_conv = (LDKChannelAnnouncement*)this_ptr;
+       LDKUnsignedChannelAnnouncement val_conv = *(LDKUnsignedChannelAnnouncement*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
+       return ChannelAnnouncement_set_contents(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new(JNIEnv * _env, jclass _b, jlong node_signature_1_arg, jlong node_signature_2_arg, jlong bitcoin_signature_1_arg, jlong bitcoin_signature_2_arg, jlong contents_arg) {
+       LDKSignature node_signature_1_arg_conv = *(LDKSignature*)node_signature_1_arg;
+       free((void*)node_signature_1_arg);
+       LDKSignature node_signature_2_arg_conv = *(LDKSignature*)node_signature_2_arg;
+       free((void*)node_signature_2_arg);
+       LDKSignature bitcoin_signature_1_arg_conv = *(LDKSignature*)bitcoin_signature_1_arg;
+       free((void*)bitcoin_signature_1_arg);
+       LDKSignature bitcoin_signature_2_arg_conv = *(LDKSignature*)bitcoin_signature_2_arg;
+       free((void*)bitcoin_signature_2_arg);
+       LDKUnsignedChannelAnnouncement contents_arg_conv = *(LDKUnsignedChannelAnnouncement*)contents_arg;
+       free((void*)contents_arg);
+       contents_arg_conv._underlying_ref = false;
+       LDKChannelAnnouncement* ret = malloc(sizeof(LDKChannelAnnouncement));
+       *ret = ChannelAnnouncement_new(node_signature_1_arg_conv, node_signature_2_arg_conv, bitcoin_signature_1_arg_conv, bitcoin_signature_2_arg_conv, contents_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv = *(LDKUnsignedChannelUpdate*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return UnsignedChannelUpdate_free(this_ptr_conv);
+}
+
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
+       (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *UnsignedChannelUpdate_get_chain_hash(this_ptr_conv));
+       return ret_arr;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1chain_1hash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
+       return UnsignedChannelUpdate_set_chain_hash(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_short_channel_id(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_short_channel_id(this_ptr_conv, val);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1timestamp(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_timestamp(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1timestamp(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_timestamp(this_ptr_conv, val);
+}
+
+JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1flags(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_flags(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1flags(JNIEnv * _env, jclass _b, jlong this_ptr, jbyte val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_flags(this_ptr_conv, val);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       uint16_t* ret = malloc(sizeof(uint16_t));
+       *ret = UnsignedChannelUpdate_get_cltv_expiry_delta(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
+       return UnsignedChannelUpdate_set_cltv_expiry_delta(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_htlc_minimum_msat(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_htlc_minimum_msat(this_ptr_conv, val);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1fee_1base_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_fee_base_msat(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fee_1base_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_fee_base_msat(this_ptr_conv, val);
+}
+
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1fee_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_get_fee_proportional_millionths(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fee_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+       LDKUnsignedChannelUpdate* this_ptr_conv = (LDKUnsignedChannelUpdate*)this_ptr;
+       return UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr_conv, val);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelUpdate this_ptr_conv = *(LDKChannelUpdate*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return ChannelUpdate_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelUpdate* this_ptr_conv = (LDKChannelUpdate*)this_ptr;
+       LDKSignature* ret = malloc(sizeof(LDKSignature));
+       *ret = ChannelUpdate_get_signature(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelUpdate* this_ptr_conv = (LDKChannelUpdate*)this_ptr;
+       LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
+       return ChannelUpdate_set_signature(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKChannelUpdate* this_ptr_conv = (LDKChannelUpdate*)this_ptr;
+       LDKUnsignedChannelUpdate* ret = malloc(sizeof(LDKUnsignedChannelUpdate));
+       *ret = ChannelUpdate_get_contents(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1contents(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKChannelUpdate* this_ptr_conv = (LDKChannelUpdate*)this_ptr;
+       LDKUnsignedChannelUpdate val_conv = *(LDKUnsignedChannelUpdate*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
+       return ChannelUpdate_set_contents(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new(JNIEnv * _env, jclass _b, jlong signature_arg, jlong contents_arg) {
+       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
+       free((void*)signature_arg);
+       LDKUnsignedChannelUpdate contents_arg_conv = *(LDKUnsignedChannelUpdate*)contents_arg;
+       free((void*)contents_arg);
+       contents_arg_conv._underlying_ref = false;
+       LDKChannelUpdate* ret = malloc(sizeof(LDKChannelUpdate));
+       *ret = ChannelUpdate_new(signature_arg_conv, contents_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorAction_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)this_ptr;
+       free((void*)this_ptr);
+       return ErrorAction_free(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKLightningError this_ptr_conv = *(LDKLightningError*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return LightningError_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1get_1err(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
+       LDKStr* ret = malloc(sizeof(LDKStr));
+       *ret = LightningError_get_err(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1set_1err(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
+       LDKCVec_u8Z val_conv = *(LDKCVec_u8Z*)val;
+       free((void*)val);
+       return LightningError_set_err(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1get_1action(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
+       LDKErrorAction* ret = malloc(sizeof(LDKErrorAction));
+       *ret = LightningError_get_action(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1set_1action(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKLightningError* this_ptr_conv = (LDKLightningError*)this_ptr;
+       LDKErrorAction val_conv = *(LDKErrorAction*)val;
+       free((void*)val);
+       return LightningError_set_action(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1new(JNIEnv * _env, jclass _b, jlong err_arg, jlong action_arg) {
+       LDKCVec_u8Z err_arg_conv = *(LDKCVec_u8Z*)err_arg;
+       free((void*)err_arg);
+       LDKErrorAction action_arg_conv = *(LDKErrorAction*)action_arg;
+       free((void*)action_arg);
+       LDKLightningError* ret = malloc(sizeof(LDKLightningError));
+       *ret = LightningError_new(err_arg_conv, action_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv = *(LDKCommitmentUpdate*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return CommitmentUpdate_free(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1add_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
+       LDKCVec_UpdateAddHTLCZ val_conv = *(LDKCVec_UpdateAddHTLCZ*)val;
+       free((void*)val);
+       return CommitmentUpdate_set_update_add_htlcs(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fulfill_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
+       LDKCVec_UpdateFulfillHTLCZ val_conv = *(LDKCVec_UpdateFulfillHTLCZ*)val;
+       free((void*)val);
+       return CommitmentUpdate_set_update_fulfill_htlcs(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fail_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKCVec_UpdateFailHTLCZ val_conv = *(LDKCVec_UpdateFailHTLCZ*)val;
+       free((void*)val);
        return CommitmentUpdate_set_update_fail_htlcs(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetupdatefailmalformedhtlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fail_1malformed_1htlcs(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKCVec_UpdateFailMalformedHTLCZ val_conv = *(LDKCVec_UpdateFailMalformedHTLCZ*)val;
+       free((void*)val);
        return CommitmentUpdate_set_update_fail_malformed_htlcs(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL CommitmentUpdategetupdatefee(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1get_1update_1fee(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKUpdateFee* ret = malloc(sizeof(LDKUpdateFee));
        *ret = CommitmentUpdate_get_update_fee(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetupdatefee(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fee(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKUpdateFee val_conv = *(LDKUpdateFee*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return CommitmentUpdate_set_update_fee(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL CommitmentUpdategetcommitmentsigned(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1get_1commitment_1signed(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKCommitmentSigned* ret = malloc(sizeof(LDKCommitmentSigned));
        *ret = CommitmentUpdate_get_commitment_signed(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL CommitmentUpdatesetcommitmentsigned(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1commitment_1signed(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKCommitmentUpdate* this_ptr_conv = (LDKCommitmentUpdate*)this_ptr;
        LDKCommitmentSigned val_conv = *(LDKCommitmentSigned*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return CommitmentUpdate_set_commitment_signed(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL CommitmentUpdatenew(JNIEnv * _env, jclass _b, jlong update_add_htlcs_arg, jlong update_fulfill_htlcs_arg, jlong update_fail_htlcs_arg, jlong update_fail_malformed_htlcs_arg, jlong update_fee_arg, jlong commitment_signed_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1new(JNIEnv * _env, jclass _b, jlong update_add_htlcs_arg, jlong update_fulfill_htlcs_arg, jlong update_fail_htlcs_arg, jlong update_fail_malformed_htlcs_arg, jlong update_fee_arg, jlong commitment_signed_arg) {
        LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg_conv = *(LDKCVec_UpdateAddHTLCZ*)update_add_htlcs_arg;
+       free((void*)update_add_htlcs_arg);
        LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg_conv = *(LDKCVec_UpdateFulfillHTLCZ*)update_fulfill_htlcs_arg;
+       free((void*)update_fulfill_htlcs_arg);
        LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg_conv = *(LDKCVec_UpdateFailHTLCZ*)update_fail_htlcs_arg;
+       free((void*)update_fail_htlcs_arg);
        LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg_conv = *(LDKCVec_UpdateFailMalformedHTLCZ*)update_fail_malformed_htlcs_arg;
+       free((void*)update_fail_malformed_htlcs_arg);
        LDKUpdateFee update_fee_arg_conv = *(LDKUpdateFee*)update_fee_arg;
+       free((void*)update_fee_arg);
+       update_fee_arg_conv._underlying_ref = false;
        LDKCommitmentSigned commitment_signed_arg_conv = *(LDKCommitmentSigned*)commitment_signed_arg;
+       free((void*)commitment_signed_arg);
+       commitment_signed_arg_conv._underlying_ref = false;
        LDKCommitmentUpdate* ret = malloc(sizeof(LDKCommitmentUpdate));
        *ret = CommitmentUpdate_new(update_add_htlcs_arg_conv, update_fulfill_htlcs_arg_conv, update_fail_htlcs_arg_conv, update_fail_malformed_htlcs_arg_conv, update_fee_arg_conv, commitment_signed_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL HTLCFailChannelUpdatefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCFailChannelUpdate_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCFailChannelUpdate this_ptr_conv = *(LDKHTLCFailChannelUpdate*)this_ptr;
+       free((void*)this_ptr);
        return HTLCFailChannelUpdate_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelMessageHandlerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)this_ptr;
+       free((void*)this_ptr);
        return ChannelMessageHandler_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RoutingMessageHandlerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRoutingMessageHandler this_ptr_conv = *(LDKRoutingMessageHandler*)this_ptr;
+       free((void*)this_ptr);
        return RoutingMessageHandler_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL AcceptChannelwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKAcceptChannel* obj_conv = (LDKAcceptChannel*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = AcceptChannel_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL AcceptChannelread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKAcceptChannel* ret = malloc(sizeof(LDKAcceptChannel));
        *ret = AcceptChannel_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL AnnouncementSignatureswrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKAnnouncementSignatures* obj_conv = (LDKAnnouncementSignatures*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = AnnouncementSignatures_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL AnnouncementSignaturesread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKAnnouncementSignatures* ret = malloc(sizeof(LDKAnnouncementSignatures));
        *ret = AnnouncementSignatures_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelReestablishwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelReestablish* obj_conv = (LDKChannelReestablish*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelReestablish_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelReestablishread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelReestablish* ret = malloc(sizeof(LDKChannelReestablish));
        *ret = ChannelReestablish_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ClosingSignedwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKClosingSigned* obj_conv = (LDKClosingSigned*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ClosingSigned_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ClosingSignedread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKClosingSigned* ret = malloc(sizeof(LDKClosingSigned));
        *ret = ClosingSigned_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CommitmentSignedwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKCommitmentSigned* obj_conv = (LDKCommitmentSigned*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = CommitmentSigned_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL CommitmentSignedread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKCommitmentSigned* ret = malloc(sizeof(LDKCommitmentSigned));
        *ret = CommitmentSigned_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingCreatedwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKFundingCreated* obj_conv = (LDKFundingCreated*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = FundingCreated_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingCreatedread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKFundingCreated* ret = malloc(sizeof(LDKFundingCreated));
        *ret = FundingCreated_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingSignedwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKFundingSigned* obj_conv = (LDKFundingSigned*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = FundingSigned_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingSignedread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKFundingSigned* ret = malloc(sizeof(LDKFundingSigned));
        *ret = FundingSigned_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingLockedwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKFundingLocked* obj_conv = (LDKFundingLocked*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = FundingLocked_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL FundingLockedread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKFundingLocked* ret = malloc(sizeof(LDKFundingLocked));
        *ret = FundingLocked_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Initwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Init_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKInit* obj_conv = (LDKInit*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = Init_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Initread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Init_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKInit* ret = malloc(sizeof(LDKInit));
        *ret = Init_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL OpenChannelwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKOpenChannel* obj_conv = (LDKOpenChannel*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = OpenChannel_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL OpenChannelread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKOpenChannel* ret = malloc(sizeof(LDKOpenChannel));
        *ret = OpenChannel_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL RevokeAndACKwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKRevokeAndACK* obj_conv = (LDKRevokeAndACK*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = RevokeAndACK_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL RevokeAndACKread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKRevokeAndACK* ret = malloc(sizeof(LDKRevokeAndACK));
        *ret = RevokeAndACK_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Shutdownwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKShutdown* obj_conv = (LDKShutdown*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = Shutdown_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Shutdownread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKShutdown* ret = malloc(sizeof(LDKShutdown));
        *ret = Shutdown_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFailHTLCwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUpdateFailHTLC* obj_conv = (LDKUpdateFailHTLC*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UpdateFailHTLC_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFailHTLCread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUpdateFailHTLC* ret = malloc(sizeof(LDKUpdateFailHTLC));
        *ret = UpdateFailHTLC_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFailMalformedHTLCwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUpdateFailMalformedHTLC* obj_conv = (LDKUpdateFailMalformedHTLC*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UpdateFailMalformedHTLC_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFailMalformedHTLCread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUpdateFailMalformedHTLC* ret = malloc(sizeof(LDKUpdateFailMalformedHTLC));
        *ret = UpdateFailMalformedHTLC_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFeewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUpdateFee* obj_conv = (LDKUpdateFee*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UpdateFee_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFeeread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUpdateFee* ret = malloc(sizeof(LDKUpdateFee));
        *ret = UpdateFee_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFulfillHTLCwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUpdateFulfillHTLC* obj_conv = (LDKUpdateFulfillHTLC*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UpdateFulfillHTLC_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateFulfillHTLCread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUpdateFulfillHTLC* ret = malloc(sizeof(LDKUpdateFulfillHTLC));
        *ret = UpdateFulfillHTLC_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateAddHTLCwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUpdateAddHTLC* obj_conv = (LDKUpdateAddHTLC*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UpdateAddHTLC_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UpdateAddHTLCread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUpdateAddHTLC* ret = malloc(sizeof(LDKUpdateAddHTLC));
        *ret = UpdateAddHTLC_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Pingwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKPing* obj_conv = (LDKPing*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = Ping_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Pingread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKPing* ret = malloc(sizeof(LDKPing));
        *ret = Ping_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Pongwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKPong* obj_conv = (LDKPong*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = Pong_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Pongread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKPong* ret = malloc(sizeof(LDKPong));
        *ret = Pong_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UnsignedChannelAnnouncementwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUnsignedChannelAnnouncement* obj_conv = (LDKUnsignedChannelAnnouncement*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UnsignedChannelAnnouncement_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UnsignedChannelAnnouncementread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUnsignedChannelAnnouncement* ret = malloc(sizeof(LDKUnsignedChannelAnnouncement));
        *ret = UnsignedChannelAnnouncement_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelAnnouncementwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelAnnouncement* obj_conv = (LDKChannelAnnouncement*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelAnnouncement_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelAnnouncementread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelAnnouncement* ret = malloc(sizeof(LDKChannelAnnouncement));
        *ret = ChannelAnnouncement_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1write(JNIEnv * _env, jclass _b, jlong obj) {
+       LDKUnsignedChannelUpdate* obj_conv = (LDKUnsignedChannelUpdate*)obj;
+       LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
+       *ret = UnsignedChannelUpdate_write(obj_conv);
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1read(JNIEnv * _env, jclass _b, jlong ser) {
+       LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
+       LDKUnsignedChannelUpdate* ret = malloc(sizeof(LDKUnsignedChannelUpdate));
+       *ret = UnsignedChannelUpdate_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelUpdatewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelUpdate* obj_conv = (LDKChannelUpdate*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelUpdate_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelUpdateread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelUpdate* ret = malloc(sizeof(LDKChannelUpdate));
        *ret = ChannelUpdate_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ErrorMessagewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKErrorMessage* obj_conv = (LDKErrorMessage*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ErrorMessage_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ErrorMessageread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKErrorMessage* ret = malloc(sizeof(LDKErrorMessage));
        *ret = ErrorMessage_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UnsignedNodeAnnouncementwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKUnsignedNodeAnnouncement* obj_conv = (LDKUnsignedNodeAnnouncement*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = UnsignedNodeAnnouncement_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL UnsignedNodeAnnouncementread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKUnsignedNodeAnnouncement* ret = malloc(sizeof(LDKUnsignedNodeAnnouncement));
        *ret = UnsignedNodeAnnouncement_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NodeAnnouncementwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKNodeAnnouncement* obj_conv = (LDKNodeAnnouncement*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = NodeAnnouncement_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NodeAnnouncementread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKNodeAnnouncement* ret = malloc(sizeof(LDKNodeAnnouncement));
        *ret = NodeAnnouncement_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL MessageHandlerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMessageHandler this_ptr_conv = *(LDKMessageHandler*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return MessageHandler_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL MessageHandlergetchanhandler(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1get_1chan_1handler(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMessageHandler* this_ptr_conv = (LDKMessageHandler*)this_ptr;
        return (long) MessageHandler_get_chan_handler(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL MessageHandlersetchanhandler(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1set_1chan_1handler(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKMessageHandler* this_ptr_conv = (LDKMessageHandler*)this_ptr;
        LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)val;
+       free((void*)val);
        return MessageHandler_set_chan_handler(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL MessageHandlergetroutehandler(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1get_1route_1handler(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKMessageHandler* this_ptr_conv = (LDKMessageHandler*)this_ptr;
        return (long) MessageHandler_get_route_handler(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL MessageHandlersetroutehandler(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1set_1route_1handler(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKMessageHandler* this_ptr_conv = (LDKMessageHandler*)this_ptr;
        LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)val;
+       free((void*)val);
        return MessageHandler_set_route_handler(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL MessageHandlernew(JNIEnv * _env, jclass _b, jlong chan_handler_arg, jlong route_handler_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1new(JNIEnv * _env, jclass _b, jlong chan_handler_arg, jlong route_handler_arg) {
        LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)chan_handler_arg;
+       free((void*)chan_handler_arg);
        LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)route_handler_arg;
+       free((void*)route_handler_arg);
        LDKMessageHandler* ret = malloc(sizeof(LDKMessageHandler));
        *ret = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL SocketDescriptorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKSocketDescriptor this_ptr_conv = *(LDKSocketDescriptor*)this_ptr;
+       free((void*)this_ptr);
        return SocketDescriptor_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL PeerHandleErrorfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKPeerHandleError this_ptr_conv = *(LDKPeerHandleError*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return PeerHandleError_free(this_ptr_conv);
 }
 
-JNIEXPORT jboolean JNICALL PeerHandleErrorgetnoconnectionpossible(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1get_1no_1connection_1possible(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKPeerHandleError* this_ptr_conv = (LDKPeerHandleError*)this_ptr;
        return PeerHandleError_get_no_connection_possible(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL PeerHandleErrorsetnoconnectionpossible(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1set_1no_1connection_1possible(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKPeerHandleError* this_ptr_conv = (LDKPeerHandleError*)this_ptr;
        return PeerHandleError_set_no_connection_possible(this_ptr_conv, va);
 }
 
-JNIEXPORT jlong JNICALL PeerHandleErrornew(JNIEnv * _env, jclass _b, jboolean no_connection_possible_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1new(JNIEnv * _env, jclass _b, jboolean no_connection_possible_arg) {
        LDKPeerHandleError* ret = malloc(sizeof(LDKPeerHandleError));
        *ret = PeerHandleError_new(no_connection_possible_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL PeerManagerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKPeerManager this_ptr_conv = *(LDKPeerManager*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return PeerManager_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL PeerManagernew(JNIEnv * _env, jclass _b, jlong message_handler, jlong our_node_secret, jbyteArray ephemeral_random_data, jlong logger) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new(JNIEnv * _env, jclass _b, jlong message_handler, jlong our_node_secret, jbyteArray ephemeral_random_data, jlong logger) {
        LDKMessageHandler message_handler_conv = *(LDKMessageHandler*)message_handler;
+       free((void*)message_handler);
+       message_handler_conv._underlying_ref = false;
        LDKSecretKey our_node_secret_conv = *(LDKSecretKey*)our_node_secret;
+       free((void*)our_node_secret);
        unsigned char ephemeral_random_data_arr[32];
        (*_env)->GetByteArrayRegion (_env, ephemeral_random_data, 0, 32, ephemeral_random_data_arr);
        unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
        LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
        LDKPeerManager* ret = malloc(sizeof(LDKPeerManager));
        *ret = PeerManager_new(message_handler_conv, our_node_secret_conv, ephemeral_random_data_ref, logger_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL PeerManagergetpeernodeids(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1get_1peer_1node_1ids(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKCVec_PublicKeyZ* ret = malloc(sizeof(LDKCVec_PublicKeyZ));
        *ret = PeerManager_get_peer_node_ids(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL PeerManagernewoutboundconnection(JNIEnv * _env, jclass _b, jlong this_arg, jlong their_node_id, jlong descriptor) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new_1outbound_1connection(JNIEnv * _env, jclass _b, jlong this_arg, jlong their_node_id, jlong descriptor) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKPublicKey their_node_id_conv = *(LDKPublicKey*)their_node_id;
+       free((void*)their_node_id);
        LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)descriptor;
+       free((void*)descriptor);
        LDKCResult_CVec_u8ZPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ));
        *ret = PeerManager_new_outbound_connection(this_arg_conv, their_node_id_conv, descriptor_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL PeerManagernewinboundconnection(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new_1inbound_1connection(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)descriptor;
+       free((void*)descriptor);
        LDKCResult_NonePeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_NonePeerHandleErrorZ));
        *ret = PeerManager_new_inbound_connection(this_arg_conv, descriptor_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL PeerManagerwritebufferspaceavail(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1write_1buffer_1space_1avail(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor;
        LDKCResult_NonePeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_NonePeerHandleErrorZ));
@@ -2279,32 +5244,33 @@ JNIEXPORT jlong JNICALL PeerManagerwritebufferspaceavail(JNIEnv * _env, jclass _
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL PeerManagerreadevent(JNIEnv * _env, jclass _b, jlong this_arg, jlong peer_descriptor, jlong data) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1read_1event(JNIEnv * _env, jclass _b, jlong this_arg, jlong peer_descriptor, jlong data) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKSocketDescriptor* peer_descriptor_conv = (LDKSocketDescriptor*)peer_descriptor;
        LDKu8slice data_conv = *(LDKu8slice*)data;
+       free((void*)data);
        LDKCResult_boolPeerHandleErrorZ* ret = malloc(sizeof(LDKCResult_boolPeerHandleErrorZ));
        *ret = PeerManager_read_event(this_arg_conv, peer_descriptor_conv, data_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL PeerManagerprocessevents(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1process_1events(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        return PeerManager_process_events(this_arg_conv);
 }
 
-JNIEXPORT void JNICALL PeerManagersocketdisconnected(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1socket_1disconnected(JNIEnv * _env, jclass _b, jlong this_arg, jlong descriptor) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor;
        return PeerManager_socket_disconnected(this_arg_conv, descriptor_conv);
 }
 
-JNIEXPORT void JNICALL PeerManagertimertickoccured(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1timer_1tick_1occured(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKPeerManager* this_arg_conv = (LDKPeerManager*)this_arg;
        return PeerManager_timer_tick_occured(this_arg_conv);
 }
 
-JNIEXPORT jlong JNICALL buildcommitmentsecret(JNIEnv * _env, jclass _b, jbyteArray commitment_seed, jlong dx) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_build_1commitment_1secret(JNIEnv * _env, jclass _b, jbyteArray commitment_seed, jlong dx) {
        unsigned char commitment_seed_arr[32];
        (*_env)->GetByteArrayRegion (_env, commitment_seed, 0, 32, commitment_seed_arr);
        unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
@@ -2313,205 +5279,361 @@ JNIEXPORT jlong JNICALL buildcommitmentsecret(JNIEnv * _env, jclass _b, jbyteArr
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL TxCreationKeysfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKTxCreationKeys this_ptr_conv = *(LDKTxCreationKeys*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return TxCreationKeys_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL TxCreationKeysgetpercommitmentpoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = TxCreationKeys_get_per_commitment_point(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL TxCreationKeyssetpercommitmentpoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return TxCreationKeys_set_per_commitment_point(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL TxCreationKeyswrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1revocation_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = TxCreationKeys_get_revocation_key(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1revocation_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return TxCreationKeys_set_revocation_key(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1a_1htlc_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = TxCreationKeys_get_a_htlc_key(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1a_1htlc_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return TxCreationKeys_set_a_htlc_key(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1b_1htlc_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = TxCreationKeys_get_b_htlc_key(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1b_1htlc_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return TxCreationKeys_set_b_htlc_key(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1a_1delayed_1payment_1key(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = TxCreationKeys_get_a_delayed_payment_key(this_ptr_conv);
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1a_1delayed_1payment_1key(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+       LDKTxCreationKeys* this_ptr_conv = (LDKTxCreationKeys*)this_ptr;
+       LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
+       return TxCreationKeys_set_a_delayed_payment_key(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1new(JNIEnv * _env, jclass _b, jlong per_commitment_point_arg, jlong revocation_key_arg, jlong a_htlc_key_arg, jlong b_htlc_key_arg, jlong a_delayed_payment_key_arg) {
+       LDKPublicKey per_commitment_point_arg_conv = *(LDKPublicKey*)per_commitment_point_arg;
+       free((void*)per_commitment_point_arg);
+       LDKPublicKey revocation_key_arg_conv = *(LDKPublicKey*)revocation_key_arg;
+       free((void*)revocation_key_arg);
+       LDKPublicKey a_htlc_key_arg_conv = *(LDKPublicKey*)a_htlc_key_arg;
+       free((void*)a_htlc_key_arg);
+       LDKPublicKey b_htlc_key_arg_conv = *(LDKPublicKey*)b_htlc_key_arg;
+       free((void*)b_htlc_key_arg);
+       LDKPublicKey a_delayed_payment_key_arg_conv = *(LDKPublicKey*)a_delayed_payment_key_arg;
+       free((void*)a_delayed_payment_key_arg);
+       LDKTxCreationKeys* ret = malloc(sizeof(LDKTxCreationKeys));
+       *ret = TxCreationKeys_new(per_commitment_point_arg_conv, revocation_key_arg_conv, a_htlc_key_arg_conv, b_htlc_key_arg_conv, a_delayed_payment_key_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKTxCreationKeys* obj_conv = (LDKTxCreationKeys*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = TxCreationKeys_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL TxCreationKeysread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKTxCreationKeys* ret = malloc(sizeof(LDKTxCreationKeys));
        *ret = TxCreationKeys_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKPreCalculatedTxCreationKeys this_ptr_conv = *(LDKPreCalculatedTxCreationKeys*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return PreCalculatedTxCreationKeys_free(this_ptr_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1new(JNIEnv * _env, jclass _b, jlong keys) {
+       LDKTxCreationKeys keys_conv = *(LDKTxCreationKeys*)keys;
+       free((void*)keys);
+       keys_conv._underlying_ref = false;
+       LDKPreCalculatedTxCreationKeys* ret = malloc(sizeof(LDKPreCalculatedTxCreationKeys));
+       *ret = PreCalculatedTxCreationKeys_new(keys_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1trust_1key_1derivation(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKPreCalculatedTxCreationKeys* this_arg_conv = (LDKPreCalculatedTxCreationKeys*)this_arg;
+       LDKTxCreationKeys* ret = malloc(sizeof(LDKTxCreationKeys));
+       *ret = PreCalculatedTxCreationKeys_trust_key_derivation(this_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1per_1commitment_1point(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKPreCalculatedTxCreationKeys* this_arg_conv = (LDKPreCalculatedTxCreationKeys*)this_arg;
+       LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
+       *ret = PreCalculatedTxCreationKeys_per_commitment_point(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeysfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys this_ptr_conv = *(LDKChannelPublicKeys*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelPublicKeys_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysgetfundingpubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelPublicKeys_get_funding_pubkey(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeyssetfundingpubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1funding_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelPublicKeys_set_funding_pubkey(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysgetrevocationbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelPublicKeys_get_revocation_basepoint(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeyssetrevocationbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1revocation_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelPublicKeys_set_revocation_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysgetpaymentpoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelPublicKeys_get_payment_point(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeyssetpaymentpoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1payment_1point(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelPublicKeys_set_payment_point(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysgetdelayedpaymentbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelPublicKeys_get_delayed_payment_basepoint(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeyssetdelayedpaymentbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1delayed_1payment_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelPublicKeys_set_delayed_payment_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysgethtlcbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelPublicKeys_get_htlc_basepoint(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelPublicKeyssethtlcbasepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1htlc_1basepoint(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelPublicKeys* this_ptr_conv = (LDKChannelPublicKeys*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelPublicKeys_set_htlc_basepoint(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysnew(JNIEnv * _env, jclass _b, jlong funding_pubkey_arg, jlong revocation_basepoint_arg, jlong payment_point_arg, jlong delayed_payment_basepoint_arg, jlong htlc_basepoint_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1new(JNIEnv * _env, jclass _b, jlong funding_pubkey_arg, jlong revocation_basepoint_arg, jlong payment_point_arg, jlong delayed_payment_basepoint_arg, jlong htlc_basepoint_arg) {
        LDKPublicKey funding_pubkey_arg_conv = *(LDKPublicKey*)funding_pubkey_arg;
+       free((void*)funding_pubkey_arg);
        LDKPublicKey revocation_basepoint_arg_conv = *(LDKPublicKey*)revocation_basepoint_arg;
+       free((void*)revocation_basepoint_arg);
        LDKPublicKey payment_point_arg_conv = *(LDKPublicKey*)payment_point_arg;
+       free((void*)payment_point_arg);
        LDKPublicKey delayed_payment_basepoint_arg_conv = *(LDKPublicKey*)delayed_payment_basepoint_arg;
+       free((void*)delayed_payment_basepoint_arg);
        LDKPublicKey htlc_basepoint_arg_conv = *(LDKPublicKey*)htlc_basepoint_arg;
+       free((void*)htlc_basepoint_arg);
        LDKChannelPublicKeys* ret = malloc(sizeof(LDKChannelPublicKeys));
        *ret = ChannelPublicKeys_new(funding_pubkey_arg_conv, revocation_basepoint_arg_conv, payment_point_arg_conv, delayed_payment_basepoint_arg_conv, htlc_basepoint_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeyswrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelPublicKeys* obj_conv = (LDKChannelPublicKeys*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelPublicKeys_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelPublicKeysread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelPublicKeys* ret = malloc(sizeof(LDKChannelPublicKeys));
        *ret = ChannelPublicKeys_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new(JNIEnv * _env, jclass _b, jlong per_commitment_point, jlong a_delayed_payment_base, jlong a_htlc_base, jlong b_revocation_base, jlong b_htlc_base) {
+       LDKPublicKey per_commitment_point_conv = *(LDKPublicKey*)per_commitment_point;
+       free((void*)per_commitment_point);
+       LDKPublicKey a_delayed_payment_base_conv = *(LDKPublicKey*)a_delayed_payment_base;
+       free((void*)a_delayed_payment_base);
+       LDKPublicKey a_htlc_base_conv = *(LDKPublicKey*)a_htlc_base;
+       free((void*)a_htlc_base);
+       LDKPublicKey b_revocation_base_conv = *(LDKPublicKey*)b_revocation_base;
+       free((void*)b_revocation_base);
+       LDKPublicKey b_htlc_base_conv = *(LDKPublicKey*)b_htlc_base;
+       free((void*)b_htlc_base);
+       LDKCResult_TxCreationKeysSecpErrorZ* ret = malloc(sizeof(LDKCResult_TxCreationKeysSecpErrorZ));
+       *ret = TxCreationKeys_derive_new(per_commitment_point_conv, a_delayed_payment_base_conv, a_htlc_base_conv, b_revocation_base_conv, b_htlc_base_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL getrevokeableredeemscript(JNIEnv * _env, jclass _b, jlong revocation_key, jlong to_self_delay, jlong delayed_payment_key) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1revokeable_1redeemscript(JNIEnv * _env, jclass _b, jlong revocation_key, jlong to_self_delay, jlong delayed_payment_key) {
        LDKPublicKey revocation_key_conv = *(LDKPublicKey*)revocation_key;
+       free((void*)revocation_key);
        uint16_t to_self_delay_conv = *(uint16_t*)to_self_delay;
+       free((void*)to_self_delay);
        LDKPublicKey delayed_payment_key_conv = *(LDKPublicKey*)delayed_payment_key;
+       free((void*)delayed_payment_key);
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = get_revokeable_redeemscript(revocation_key_conv, to_self_delay_conv, delayed_payment_key_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL HTLCOutputInCommitmentfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCOutputInCommitment this_ptr_conv = *(LDKHTLCOutputInCommitment*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return HTLCOutputInCommitment_free(this_ptr_conv);
 }
 
-JNIEXPORT jboolean JNICALL HTLCOutputInCommitmentgetoffered(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1offered(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_get_offered(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL HTLCOutputInCommitmentsetoffered(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1offered(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_set_offered(this_ptr_conv, va);
 }
 
-JNIEXPORT jlong JNICALL HTLCOutputInCommitmentgetamountmsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1amount_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_get_amount_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL HTLCOutputInCommitmentsetamountmsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1amount_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_set_amount_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jint JNICALL HTLCOutputInCommitmentgetcltvexpiry(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1cltv_1expiry(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_get_cltv_expiry(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL HTLCOutputInCommitmentsetcltvexpiry(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1cltv_1expiry(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        return HTLCOutputInCommitment_set_cltv_expiry(this_ptr_conv, val);
 }
 
-JNIEXPORT jbyteArray  JNICALL HTLCOutputInCommitmentgetpaymenthash(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1payment_1hash(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *HTLCOutputInCommitment_get_payment_hash(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL HTLCOutputInCommitmentsetpaymenthash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1payment_1hash(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKHTLCOutputInCommitment* this_ptr_conv = (LDKHTLCOutputInCommitment*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
        return HTLCOutputInCommitment_set_payment_hash(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL HTLCOutputInCommitmentwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKHTLCOutputInCommitment* obj_conv = (LDKHTLCOutputInCommitment*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = HTLCOutputInCommitment_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL HTLCOutputInCommitmentread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKHTLCOutputInCommitment* ret = malloc(sizeof(LDKHTLCOutputInCommitment));
        *ret = HTLCOutputInCommitment_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL gethtlcredeemscript(JNIEnv * _env, jclass _b, jlong htlc, jlong keys) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1htlc_1redeemscript(JNIEnv * _env, jclass _b, jlong htlc, jlong keys) {
        LDKHTLCOutputInCommitment* htlc_conv = (LDKHTLCOutputInCommitment*)htlc;
        LDKTxCreationKeys* keys_conv = (LDKTxCreationKeys*)keys;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
@@ -2519,647 +5641,833 @@ JNIEXPORT jlong JNICALL gethtlcredeemscript(JNIEnv * _env, jclass _b, jlong htlc
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL makefundingredeemscript(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_make_1funding_1redeemscript(JNIEnv * _env, jclass _b, jlong a, jlong b) {
        LDKPublicKey a_conv = *(LDKPublicKey*)a;
+       free((void*)a);
        LDKPublicKey b_conv = *(LDKPublicKey*)b;
+       free((void*)b);
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = make_funding_redeemscript(a_conv, b_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL buildhtlctransaction(JNIEnv * _env, jclass _b, jbyteArray prev_hash, jint feerate_per_kw, jlong to_self_delay, jlong htlc, jlong a_delayed_payment_key, jlong revocation_key) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_build_1htlc_1transaction(JNIEnv * _env, jclass _b, jbyteArray prev_hash, jint feerate_per_kw, jlong to_self_delay, jlong htlc, jlong a_delayed_payment_key, jlong revocation_key) {
        unsigned char prev_hash_arr[32];
        (*_env)->GetByteArrayRegion (_env, prev_hash, 0, 32, prev_hash_arr);
        unsigned char (*prev_hash_ref)[32] = &prev_hash_arr;
        uint16_t to_self_delay_conv = *(uint16_t*)to_self_delay;
+       free((void*)to_self_delay);
        LDKHTLCOutputInCommitment* htlc_conv = (LDKHTLCOutputInCommitment*)htlc;
        LDKPublicKey a_delayed_payment_key_conv = *(LDKPublicKey*)a_delayed_payment_key;
+       free((void*)a_delayed_payment_key);
        LDKPublicKey revocation_key_conv = *(LDKPublicKey*)revocation_key;
+       free((void*)revocation_key);
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = build_htlc_transaction(prev_hash_ref, feerate_per_kw, to_self_delay_conv, htlc_conv, a_delayed_payment_key_conv, revocation_key_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL LocalCommitmentTransactionfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKLocalCommitmentTransaction this_ptr_conv = *(LDKLocalCommitmentTransaction*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return LocalCommitmentTransaction_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactiongetunsignedtx(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1unsigned_1tx(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = LocalCommitmentTransaction_get_unsigned_tx(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL LocalCommitmentTransactionsetunsignedtx(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1unsigned_1tx(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
        LDKCVec_u8Z val_conv = *(LDKCVec_u8Z*)val;
+       free((void*)val);
        return LocalCommitmentTransaction_set_unsigned_tx(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactiongettheirsig(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1their_1sig(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
        LDKSignature* ret = malloc(sizeof(LDKSignature));
        *ret = LocalCommitmentTransaction_get_their_sig(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL LocalCommitmentTransactionsettheirsig(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1their_1sig(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
        LDKSignature val_conv = *(LDKSignature*)val;
+       free((void*)val);
        return LocalCommitmentTransaction_set_their_sig(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactiongetlocalkeys(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
-       LDKTxCreationKeys* ret = malloc(sizeof(LDKTxCreationKeys));
-       *ret = LocalCommitmentTransaction_get_local_keys(this_ptr_conv);
-       return (long)ret;
+       return LocalCommitmentTransaction_get_feerate_per_kw(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL LocalCommitmentTransactionsetlocalkeys(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
-       LDKTxCreationKeys val_conv = *(LDKTxCreationKeys*)val;
-       return LocalCommitmentTransaction_set_local_keys(this_ptr_conv, val_conv);
+       return LocalCommitmentTransaction_set_feerate_per_kw(this_ptr_conv, val);
 }
 
-JNIEXPORT jint JNICALL LocalCommitmentTransactiongetfeerateperkw(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1per_1htlc(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
-       return LocalCommitmentTransaction_get_feerate_per_kw(this_ptr_conv);
+       LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ val_conv = *(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ*)val;
+       free((void*)val);
+       return LocalCommitmentTransaction_set_per_htlc(this_ptr_conv, val_conv);
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1new_1missing_1local_1sig(JNIEnv * _env, jclass _b, jlong unsigned_tx, jlong their_sig, jlong our_funding_key, jlong their_funding_key, jlong local_keys, jint feerate_per_kw, jlong htlc_data) {
+       LDKCVec_u8Z unsigned_tx_conv = *(LDKCVec_u8Z*)unsigned_tx;
+       free((void*)unsigned_tx);
+       LDKSignature their_sig_conv = *(LDKSignature*)their_sig;
+       free((void*)their_sig);
+       LDKPublicKey our_funding_key_conv = *(LDKPublicKey*)our_funding_key;
+       free((void*)our_funding_key);
+       LDKPublicKey their_funding_key_conv = *(LDKPublicKey*)their_funding_key;
+       free((void*)their_funding_key);
+       LDKTxCreationKeys local_keys_conv = *(LDKTxCreationKeys*)local_keys;
+       free((void*)local_keys);
+       local_keys_conv._underlying_ref = false;
+       LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data_conv = *(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ*)htlc_data;
+       free((void*)htlc_data);
+       LDKLocalCommitmentTransaction* ret = malloc(sizeof(LDKLocalCommitmentTransaction));
+       *ret = LocalCommitmentTransaction_new_missing_local_sig(unsigned_tx_conv, their_sig_conv, our_funding_key_conv, their_funding_key_conv, local_keys_conv, feerate_per_kw, htlc_data_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
 }
 
-JNIEXPORT void JNICALL LocalCommitmentTransactionsetfeerateperkw(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
-       LDKLocalCommitmentTransaction* this_ptr_conv = (LDKLocalCommitmentTransaction*)this_ptr;
-       return LocalCommitmentTransaction_set_feerate_per_kw(this_ptr_conv, val);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1trust_1key_1derivation(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKLocalCommitmentTransaction* this_arg_conv = (LDKLocalCommitmentTransaction*)this_arg;
+       LDKTxCreationKeys* ret = malloc(sizeof(LDKTxCreationKeys));
+       *ret = LocalCommitmentTransaction_trust_key_derivation(this_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactiontxid(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1txid(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKLocalCommitmentTransaction* this_arg_conv = (LDKLocalCommitmentTransaction*)this_arg;
        LDKThirtyTwoBytes* ret = malloc(sizeof(LDKThirtyTwoBytes));
        *ret = LocalCommitmentTransaction_txid(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactiongetlocalsig(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray funding_key, jlong funding_redeemscript, jlong channel_value_satoshis) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1local_1sig(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray funding_key, jlong funding_redeemscript, jlong channel_value_satoshis) {
        LDKLocalCommitmentTransaction* this_arg_conv = (LDKLocalCommitmentTransaction*)this_arg;
        unsigned char funding_key_arr[32];
        (*_env)->GetByteArrayRegion (_env, funding_key, 0, 32, funding_key_arr);
        unsigned char (*funding_key_ref)[32] = &funding_key_arr;
        LDKu8slice funding_redeemscript_conv = *(LDKu8slice*)funding_redeemscript;
+       free((void*)funding_redeemscript);
        LDKSignature* ret = malloc(sizeof(LDKSignature));
        *ret = LocalCommitmentTransaction_get_local_sig(this_arg_conv, funding_key_ref, funding_redeemscript_conv, channel_value_satoshis);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactionwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1htlc_1sigs(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray htlc_base_key, jlong local_csv) {
+       LDKLocalCommitmentTransaction* this_arg_conv = (LDKLocalCommitmentTransaction*)this_arg;
+       unsigned char htlc_base_key_arr[32];
+       (*_env)->GetByteArrayRegion (_env, htlc_base_key, 0, 32, htlc_base_key_arr);
+       unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
+       uint16_t local_csv_conv = *(uint16_t*)local_csv;
+       free((void*)local_csv);
+       LDKCResult_CVec_SignatureZNoneZ* ret = malloc(sizeof(LDKCResult_CVec_SignatureZNoneZ));
+       *ret = LocalCommitmentTransaction_get_htlc_sigs(this_arg_conv, htlc_base_key_ref, local_csv_conv);
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKLocalCommitmentTransaction* obj_conv = (LDKLocalCommitmentTransaction*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = LocalCommitmentTransaction_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL LocalCommitmentTransactionread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKLocalCommitmentTransaction* ret = malloc(sizeof(LDKLocalCommitmentTransaction));
        *ret = LocalCommitmentTransaction_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL InitFeaturesfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InitFeatures_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKInitFeatures this_ptr_conv = *(LDKInitFeatures*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return InitFeatures_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL NodeFeaturesfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeFeatures this_ptr_conv = *(LDKNodeFeatures*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return NodeFeatures_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL ChannelFeaturesfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelFeatures this_ptr_conv = *(LDKChannelFeatures*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelFeatures_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHopfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHop this_ptr_conv = *(LDKRouteHop*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return RouteHop_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHopgetpubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = RouteHop_get_pubkey(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RouteHopsetpubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1pubkey(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return RouteHop_set_pubkey(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHopgetshortchannelid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_get_short_channel_id(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHopsetshortchannelid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_set_short_channel_id(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL RouteHopgetfeemsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1fee_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_get_fee_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHopsetfeemsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1fee_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_set_fee_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jint JNICALL RouteHopgetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_get_cltv_expiry_delta(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHopsetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKRouteHop* this_ptr_conv = (LDKRouteHop*)this_ptr;
        return RouteHop_set_cltv_expiry_delta(this_ptr_conv, val);
 }
 
-JNIEXPORT void JNICALL Routefree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRoute this_ptr_conv = *(LDKRoute*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return Route_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL Routesetpaths(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1set_1paths(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRoute* this_ptr_conv = (LDKRoute*)this_ptr;
        LDKCVec_CVec_RouteHopZZ val_conv = *(LDKCVec_CVec_RouteHopZZ*)val;
+       free((void*)val);
        return Route_set_paths(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Routenew(JNIEnv * _env, jclass _b, jlong paths_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1new(JNIEnv * _env, jclass _b, jlong paths_arg) {
        LDKCVec_CVec_RouteHopZZ paths_arg_conv = *(LDKCVec_CVec_RouteHopZZ*)paths_arg;
+       free((void*)paths_arg);
        LDKRoute* ret = malloc(sizeof(LDKRoute));
        *ret = Route_new(paths_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Routewrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKRoute* obj_conv = (LDKRoute*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = Route_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Routeread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKRoute* ret = malloc(sizeof(LDKRoute));
        *ret = Route_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RouteHintfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint this_ptr_conv = *(LDKRouteHint*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return RouteHint_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHintgetsrcnodeid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1src_1node_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = RouteHint_get_src_node_id(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RouteHintsetsrcnodeid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1src_1node_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return RouteHint_set_src_node_id(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHintgetshortchannelid(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        return RouteHint_get_short_channel_id(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHintsetshortchannelid(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1short_1channel_1id(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        return RouteHint_set_short_channel_id(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL RouteHintgetfees(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1fees(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        LDKRoutingFees* ret = malloc(sizeof(LDKRoutingFees));
        *ret = RouteHint_get_fees(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RouteHintsetfees(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1fees(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        LDKRoutingFees val_conv = *(LDKRoutingFees*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return RouteHint_set_fees(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHintgetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = RouteHint_get_cltv_expiry_delta(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RouteHintsetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return RouteHint_set_cltv_expiry_delta(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL RouteHintgethtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        return RouteHint_get_htlc_minimum_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RouteHintsethtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKRouteHint* this_ptr_conv = (LDKRouteHint*)this_ptr;
        return RouteHint_set_htlc_minimum_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL RouteHintnew(JNIEnv * _env, jclass _b, jlong src_node_id_arg, jlong short_channel_id_arg, jlong fees_arg, jlong cltv_expiry_delta_arg, jlong htlc_minimum_msat_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1new(JNIEnv * _env, jclass _b, jlong src_node_id_arg, jlong short_channel_id_arg, jlong fees_arg, jlong cltv_expiry_delta_arg, jlong htlc_minimum_msat_arg) {
        LDKPublicKey src_node_id_arg_conv = *(LDKPublicKey*)src_node_id_arg;
+       free((void*)src_node_id_arg);
        LDKRoutingFees fees_arg_conv = *(LDKRoutingFees*)fees_arg;
+       free((void*)fees_arg);
+       fees_arg_conv._underlying_ref = false;
        uint16_t cltv_expiry_delta_arg_conv = *(uint16_t*)cltv_expiry_delta_arg;
+       free((void*)cltv_expiry_delta_arg);
        LDKRouteHint* ret = malloc(sizeof(LDKRouteHint));
        *ret = RouteHint_new(src_node_id_arg_conv, short_channel_id_arg, fees_arg_conv, cltv_expiry_delta_arg_conv, htlc_minimum_msat_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL getroute(JNIEnv * _env, jclass _b, jlong our_node_id, jlong network, jlong target, jlong first_hops, jlong last_hops, jlong final_value_msa, jint final_cltv, jlong logger) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1route(JNIEnv * _env, jclass _b, jlong our_node_id, jlong network, jlong target, jlong first_hops, jlong last_hops, jlong final_value_msa, jint final_cltv, jlong logger) {
        LDKPublicKey our_node_id_conv = *(LDKPublicKey*)our_node_id;
+       free((void*)our_node_id);
        LDKNetworkGraph* network_conv = (LDKNetworkGraph*)network;
        LDKPublicKey target_conv = *(LDKPublicKey*)target;
-       LDKCChannelDetailsSlice* first_hops_conv = (LDKCChannelDetailsSlice*)first_hops;
-       LDKCRouteHintSlice last_hops_conv = *(LDKCRouteHintSlice*)last_hops;
+       free((void*)target);
+       LDKCVec_ChannelDetailsZ* first_hops_conv = (LDKCVec_ChannelDetailsZ*)first_hops;
+       LDKCVec_RouteHintZ last_hops_conv = *(LDKCVec_RouteHintZ*)last_hops;
+       free((void*)last_hops);
        LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
        LDKCResult_RouteLightningErrorZ* ret = malloc(sizeof(LDKCResult_RouteLightningErrorZ));
        *ret = get_route(our_node_id_conv, network_conv, target_conv, first_hops_conv, last_hops_conv, final_value_msa, final_cltv, logger_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NetworkGraphfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNetworkGraph this_ptr_conv = *(LDKNetworkGraph*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return NetworkGraph_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL NetGraphMsgHandlerfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LockedNetworkGraph_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
+       LDKLockedNetworkGraph this_ptr_conv = *(LDKLockedNetworkGraph*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
+       return LockedNetworkGraph_free(this_ptr_conv);
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNetGraphMsgHandler this_ptr_conv = *(LDKNetGraphMsgHandler*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return NetGraphMsgHandler_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL NetGraphMsgHandlernew(JNIEnv * _env, jclass _b, jlong chain_monitor, jlong logger) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1new(JNIEnv * _env, jclass _b, jlong chain_monitor, jlong logger) {
        LDKChainWatchInterface chain_monitor_conv = *(LDKChainWatchInterface*)chain_monitor;
+       free((void*)chain_monitor);
        LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
        LDKNetGraphMsgHandler* ret = malloc(sizeof(LDKNetGraphMsgHandler));
        *ret = NetGraphMsgHandler_new(chain_monitor_conv, logger_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NetGraphMsgHandlerfromnetgraph(JNIEnv * _env, jclass _b, jlong chain_monitor, jlong logger, jlong network_graph) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1from_1net_1graph(JNIEnv * _env, jclass _b, jlong chain_monitor, jlong logger, jlong network_graph) {
        LDKChainWatchInterface chain_monitor_conv = *(LDKChainWatchInterface*)chain_monitor;
+       free((void*)chain_monitor);
        LDKLogger logger_conv = *(LDKLogger*)logger;
+       free((void*)logger);
        LDKNetworkGraph network_graph_conv = *(LDKNetworkGraph*)network_graph;
+       free((void*)network_graph);
+       network_graph_conv._underlying_ref = false;
        LDKNetGraphMsgHandler* ret = malloc(sizeof(LDKNetGraphMsgHandler));
        *ret = NetGraphMsgHandler_from_net_graph(chain_monitor_conv, logger_conv, network_graph_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1read_1locked_1graph(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKNetGraphMsgHandler* this_arg_conv = (LDKNetGraphMsgHandler*)this_arg;
+       LDKLockedNetworkGraph* ret = malloc(sizeof(LDKLockedNetworkGraph));
+       *ret = NetGraphMsgHandler_read_locked_graph(this_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
+       return (long)ret;
+}
+
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LockedNetworkGraph_1graph(JNIEnv * _env, jclass _b, jlong this_arg) {
+       LDKLockedNetworkGraph* this_arg_conv = (LDKLockedNetworkGraph*)this_arg;
+       LDKNetworkGraph* ret = malloc(sizeof(LDKNetworkGraph));
+       *ret = LockedNetworkGraph_graph(this_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NetGraphMsgHandlerasRoutingMessageHandler(JNIEnv * _env, jclass _b, jlong this_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1as_1RoutingMessageHandler(JNIEnv * _env, jclass _b, jlong this_arg) {
        LDKNetGraphMsgHandler* this_arg_conv = (LDKNetGraphMsgHandler*)this_arg;
        LDKRoutingMessageHandler* ret = malloc(sizeof(LDKRoutingMessageHandler));
        *ret = NetGraphMsgHandler_as_RoutingMessageHandler(this_arg_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL DirectionalChannelInfofree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDirectionalChannelInfo this_ptr_conv = *(LDKDirectionalChannelInfo*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return DirectionalChannelInfo_free(this_ptr_conv);
 }
 
-JNIEXPORT jint JNICALL DirectionalChannelInfogetlastupdate(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1last_1update(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_get_last_update(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL DirectionalChannelInfosetlastupdate(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1last_1update(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_set_last_update(this_ptr_conv, val);
 }
 
-JNIEXPORT jboolean JNICALL DirectionalChannelInfogetenabled(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1enabled(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_get_enabled(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL DirectionalChannelInfosetenabled(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1enabled(JNIEnv * _env, jclass _b, jlong this_ptr, jboolean va) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_set_enabled(this_ptr_conv, va);
 }
 
-JNIEXPORT jlong JNICALL DirectionalChannelInfogetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        uint16_t* ret = malloc(sizeof(uint16_t));
        *ret = DirectionalChannelInfo_get_cltv_expiry_delta(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL DirectionalChannelInfosetcltvexpirydelta(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1cltv_1expiry_1delta(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        uint16_t val_conv = *(uint16_t*)val;
+       free((void*)val);
        return DirectionalChannelInfo_set_cltv_expiry_delta(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL DirectionalChannelInfogethtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_get_htlc_minimum_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL DirectionalChannelInfosethtlcminimummsat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1htlc_1minimum_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKDirectionalChannelInfo* this_ptr_conv = (LDKDirectionalChannelInfo*)this_ptr;
        return DirectionalChannelInfo_set_htlc_minimum_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL DirectionalChannelInfowrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKDirectionalChannelInfo* obj_conv = (LDKDirectionalChannelInfo*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = DirectionalChannelInfo_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL DirectionalChannelInforead(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKDirectionalChannelInfo* ret = malloc(sizeof(LDKDirectionalChannelInfo));
        *ret = DirectionalChannelInfo_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelInfofree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelInfo this_ptr_conv = *(LDKChannelInfo*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return ChannelInfo_free(this_ptr_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelInfogetnodeone(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1node_1one(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelInfo_get_node_one(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelInfosetnodeone(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1one(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelInfo_set_node_one(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelInfogetonetotwo(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1one_1to_1two(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKDirectionalChannelInfo* ret = malloc(sizeof(LDKDirectionalChannelInfo));
        *ret = ChannelInfo_get_one_to_two(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelInfosetonetotwo(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1one_1to_1two(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKDirectionalChannelInfo val_conv = *(LDKDirectionalChannelInfo*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return ChannelInfo_set_one_to_two(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelInfogetnodetwo(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1node_1two(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKPublicKey* ret = malloc(sizeof(LDKPublicKey));
        *ret = ChannelInfo_get_node_two(this_ptr_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelInfosetnodetwo(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1two(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKPublicKey val_conv = *(LDKPublicKey*)val;
+       free((void*)val);
        return ChannelInfo_set_node_two(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelInfogettwotoone(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1two_1to_1one(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKDirectionalChannelInfo* ret = malloc(sizeof(LDKDirectionalChannelInfo));
        *ret = ChannelInfo_get_two_to_one(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL ChannelInfosettwotoone(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1two_1to_1one(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKChannelInfo* this_ptr_conv = (LDKChannelInfo*)this_ptr;
        LDKDirectionalChannelInfo val_conv = *(LDKDirectionalChannelInfo*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return ChannelInfo_set_two_to_one(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL ChannelInfowrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKChannelInfo* obj_conv = (LDKChannelInfo*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = ChannelInfo_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL ChannelInforead(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKChannelInfo* ret = malloc(sizeof(LDKChannelInfo));
        *ret = ChannelInfo_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL RoutingFeesfree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRoutingFees this_ptr_conv = *(LDKRoutingFees*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return RoutingFees_free(this_ptr_conv);
 }
 
-JNIEXPORT jint JNICALL RoutingFeesgetbasemsat(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RoutingFees_1get_1base_1msat(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRoutingFees* this_ptr_conv = (LDKRoutingFees*)this_ptr;
        return RoutingFees_get_base_msat(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RoutingFeessetbasemsat(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1set_1base_1msat(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKRoutingFees* this_ptr_conv = (LDKRoutingFees*)this_ptr;
        return RoutingFees_set_base_msat(this_ptr_conv, val);
 }
 
-JNIEXPORT jint JNICALL RoutingFeesgetproportionalmillionths(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RoutingFees_1get_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKRoutingFees* this_ptr_conv = (LDKRoutingFees*)this_ptr;
        return RoutingFees_get_proportional_millionths(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL RoutingFeessetproportionalmillionths(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1set_1proportional_1millionths(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKRoutingFees* this_ptr_conv = (LDKRoutingFees*)this_ptr;
        return RoutingFees_set_proportional_millionths(this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL RoutingFeesnew(JNIEnv * _env, jclass _b, jint base_msat_arg, jint proportional_millionths_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1new(JNIEnv * _env, jclass _b, jint base_msat_arg, jint proportional_millionths_arg) {
        LDKRoutingFees* ret = malloc(sizeof(LDKRoutingFees));
        *ret = RoutingFees_new(base_msat_arg, proportional_millionths_arg);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL RoutingFeesread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKRoutingFees* ret = malloc(sizeof(LDKRoutingFees));
        *ret = RoutingFees_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL RoutingFeeswrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKRoutingFees* obj_conv = (LDKRoutingFees*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = RoutingFees_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementInfofree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeAnnouncementInfo this_ptr_conv = *(LDKNodeAnnouncementInfo*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return NodeAnnouncementInfo_free(this_ptr_conv);
 }
 
-JNIEXPORT jint JNICALL NodeAnnouncementInfogetlastupdate(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1last_1update(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
        return NodeAnnouncementInfo_get_last_update(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementInfosetlastupdate(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1last_1update(JNIEnv * _env, jclass _b, jlong this_ptr, jint val) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
        return NodeAnnouncementInfo_set_last_update(this_ptr_conv, val);
 }
 
-JNIEXPORT jbyteArray  JNICALL NodeAnnouncementInfogetrgb(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1rgb(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 3);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 3, *NodeAnnouncementInfo_get_rgb(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementInfosetrgb(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1rgb(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
        LDKThreeBytes val_conv = *(LDKThreeBytes*)val;
+       free((void*)val);
        return NodeAnnouncementInfo_set_rgb(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jbyteArray  JNICALL NodeAnnouncementInfogetalias(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray  JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1alias(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
-       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 0); // XXX: len 0
+       jbyteArray ret_arr = (*_env)->NewByteArray(_env, 32);
        (*_env)->SetByteArrayRegion(_env, ret_arr, 0, 32, *NodeAnnouncementInfo_get_alias(this_ptr_conv));
        return ret_arr;
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementInfosetalias(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1alias(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
        LDKThirtyTwoBytes val_conv = *(LDKThirtyTwoBytes*)val;
+       free((void*)val);
        return NodeAnnouncementInfo_set_alias(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT void JNICALL NodeAnnouncementInfosetaddresses(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1addresses(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeAnnouncementInfo* this_ptr_conv = (LDKNodeAnnouncementInfo*)this_ptr;
        LDKCVec_NetAddressZ val_conv = *(LDKCVec_NetAddressZ*)val;
+       free((void*)val);
        return NodeAnnouncementInfo_set_addresses(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL NodeAnnouncementInfowrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKNodeAnnouncementInfo* obj_conv = (LDKNodeAnnouncementInfo*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = NodeAnnouncementInfo_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NodeAnnouncementInforead(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKNodeAnnouncementInfo* ret = malloc(sizeof(LDKNodeAnnouncementInfo));
        *ret = NodeAnnouncementInfo_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NodeInfofree(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeInfo this_ptr_conv = *(LDKNodeInfo*)this_ptr;
+       free((void*)this_ptr);
+       this_ptr_conv._underlying_ref = false;
        return NodeInfo_free(this_ptr_conv);
 }
 
-JNIEXPORT void JNICALL NodeInfosetchannels(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1channels(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeInfo* this_ptr_conv = (LDKNodeInfo*)this_ptr;
        LDKCVec_u64Z val_conv = *(LDKCVec_u64Z*)val;
+       free((void*)val);
        return NodeInfo_set_channels(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL NodeInfogetlowestinboundchannelfees(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1get_1lowest_1inbound_1channel_1fees(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeInfo* this_ptr_conv = (LDKNodeInfo*)this_ptr;
        LDKRoutingFees* ret = malloc(sizeof(LDKRoutingFees));
        *ret = NodeInfo_get_lowest_inbound_channel_fees(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NodeInfosetlowestinboundchannelfees(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1lowest_1inbound_1channel_1fees(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeInfo* this_ptr_conv = (LDKNodeInfo*)this_ptr;
        LDKRoutingFees val_conv = *(LDKRoutingFees*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return NodeInfo_set_lowest_inbound_channel_fees(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL NodeInfogetannouncementinfo(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1get_1announcement_1info(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeInfo* this_ptr_conv = (LDKNodeInfo*)this_ptr;
        LDKNodeAnnouncementInfo* ret = malloc(sizeof(LDKNodeAnnouncementInfo));
        *ret = NodeInfo_get_announcement_info(this_ptr_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NodeInfosetannouncementinfo(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1announcement_1info(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
        LDKNodeInfo* this_ptr_conv = (LDKNodeInfo*)this_ptr;
        LDKNodeAnnouncementInfo val_conv = *(LDKNodeAnnouncementInfo*)val;
+       free((void*)val);
+       val_conv._underlying_ref = false;
        return NodeInfo_set_announcement_info(this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL NodeInfonew(JNIEnv * _env, jclass _b, jlong channels_arg, jlong lowest_inbound_channel_fees_arg, jlong announcement_info_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1new(JNIEnv * _env, jclass _b, jlong channels_arg, jlong lowest_inbound_channel_fees_arg, jlong announcement_info_arg) {
        LDKCVec_u64Z channels_arg_conv = *(LDKCVec_u64Z*)channels_arg;
+       free((void*)channels_arg);
        LDKRoutingFees lowest_inbound_channel_fees_arg_conv = *(LDKRoutingFees*)lowest_inbound_channel_fees_arg;
+       free((void*)lowest_inbound_channel_fees_arg);
+       lowest_inbound_channel_fees_arg_conv._underlying_ref = false;
        LDKNodeAnnouncementInfo announcement_info_arg_conv = *(LDKNodeAnnouncementInfo*)announcement_info_arg;
+       free((void*)announcement_info_arg);
+       announcement_info_arg_conv._underlying_ref = false;
        LDKNodeInfo* ret = malloc(sizeof(LDKNodeInfo));
        *ret = NodeInfo_new(channels_arg_conv, lowest_inbound_channel_fees_arg_conv, announcement_info_arg_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NodeInfowrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKNodeInfo* obj_conv = (LDKNodeInfo*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = NodeInfo_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NodeInforead(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKNodeInfo* ret = malloc(sizeof(LDKNodeInfo));
        *ret = NodeInfo_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NetworkGraphwrite(JNIEnv * _env, jclass _b, jlong obj) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1write(JNIEnv * _env, jclass _b, jlong obj) {
        LDKNetworkGraph* obj_conv = (LDKNetworkGraph*)obj;
        LDKCVec_u8Z* ret = malloc(sizeof(LDKCVec_u8Z));
        *ret = NetworkGraph_write(obj_conv);
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NetworkGraphread(JNIEnv * _env, jclass _b, jlong ser) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1read(JNIEnv * _env, jclass _b, jlong ser) {
        LDKu8slice ser_conv = *(LDKu8slice*)ser;
+       free((void*)ser);
        LDKNetworkGraph* ret = malloc(sizeof(LDKNetworkGraph));
        *ret = NetworkGraph_read(ser_conv);
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL NetworkGraphnew(JNIEnv * _env, jclass _b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1new(JNIEnv * _env, jclass _b) {
        LDKNetworkGraph* ret = malloc(sizeof(LDKNetworkGraph));
        *ret = NetworkGraph_new();
+       assert(!ret->_underlying_ref);
+       ret->_underlying_ref = true;
        return (long)ret;
 }
 
-JNIEXPORT void JNICALL NetworkGraphclosechannelfromupdate(JNIEnv * _env, jclass _b, jlong this_arg, jlong short_channel_id, jboolean is_permanent) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1close_1channel_1from_1update(JNIEnv * _env, jclass _b, jlong this_arg, jlong short_channel_id, jboolean is_permanent) {
        LDKNetworkGraph* this_arg_conv = (LDKNetworkGraph*)this_arg;
        return NetworkGraph_close_channel_from_update(this_arg_conv, short_channel_id, is_permanent);
 }
diff --git a/src/main/jni/org_ldk_bindings.h b/src/main/jni/org_ldk_bindings.h
deleted file mode 100644 (file)
index 207160d..0000000
+++ /dev/null
@@ -1,4077 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_ldk_bindings */
-
-#ifndef _Included_org_ldk_bindings
-#define _Included_org_ldk_bindings
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleOutPointScriptZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2TupleOutPointScriptZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleScriptu64Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2TupleScriptu64Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleSecretKeyu832Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2TupleSecretKeyu832Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleSignatureCVecSignatureZZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2TupleSignatureCVecSignatureZZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleTxidu32Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2TupleTxidu32Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2Tupleu64u64Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C2Tupleu64u64Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C3TupleChannelAnnouncementChannelUpdateChannelUpdateZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_C3TupleChannelAnnouncementChannelUpdateChannelUpdateZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleScriptu64ZChainErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultC2TupleScriptu64ZChainErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleScriptu64ZChainErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultC2TupleScriptu64ZChainErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleScriptu64ZChainErrorZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultC2TupleScriptu64ZChainErrorZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleSignatureCVecSignatureZZNoneZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultC2TupleSignatureCVecSignatureZZNoneZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleSignatureCVecSignatureZZNoneZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultC2TupleSignatureCVecSignatureZZNoneZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecSignatureZNoneZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultCVecSignatureZNoneZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecSignatureZNoneZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultCVecSignatureZNoneZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecu8ZPeerHandleErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultCVecu8ZPeerHandleErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecu8ZPeerHandleErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultCVecu8ZPeerHandleErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecu8ZPeerHandleErrorZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultCVecu8ZPeerHandleErrorZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneAPIErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneAPIErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneAPIErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultNoneAPIErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneChannelMonitorUpdateErrZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneChannelMonitorUpdateErrZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneChannelMonitorUpdateErrZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultNoneChannelMonitorUpdateErrZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneMonitorUpdateErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneMonitorUpdateErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneMonitorUpdateErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultNoneMonitorUpdateErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePaymentSendFailureZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNonePaymentSendFailureZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePaymentSendFailureZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultNonePaymentSendFailureZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePeerHandleErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNonePeerHandleErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePeerHandleErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultNonePeerHandleErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultRouteLightningErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultRouteLightningErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultRouteLightningErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultRouteLightningErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultRouteLightningErrorZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultRouteLightningErrorZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultSignatureNoneZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultSignatureNoneZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultSignatureNoneZgood
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultSignatureNoneZgood
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolLightningErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultboolLightningErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolLightningErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultboolLightningErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolLightningErrorZgood
- * Signature: (Z)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultboolLightningErrorZgood
-  (JNIEnv *, jclass, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolPeerHandleErrorZerr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultboolPeerHandleErrorZerr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolPeerHandleErrorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CResultboolPeerHandleErrorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultboolPeerHandleErrorZgood
- * Signature: (Z)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultboolPeerHandleErrorZgood
-  (JNIEnv *, jclass, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecC3TupleChannelAnnouncementChannelUpdateChannelUpdateZZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecC3TupleChannelAnnouncementChannelUpdateChannelUpdateZZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecCVecRouteHopZZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecCVecRouteHopZZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecChannelDetailsZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecChannelDetailsZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecEventZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecEventZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecHTLCUpdateZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecHTLCUpdateZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecMessageSendEventZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecMessageSendEventZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecNetAddressZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecNetAddressZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecNodeAnnouncementZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecNodeAnnouncementZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecPublicKeyZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecPublicKeyZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecRouteHopZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecRouteHopZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecSignatureZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecSignatureZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecSpendableOutputDescriptorZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecSpendableOutputDescriptorZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecTransactionZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecTransactionZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecUpdateAddHTLCZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecUpdateAddHTLCZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecUpdateFailHTLCZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecUpdateFailHTLCZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecUpdateFailMalformedHTLCZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecUpdateFailMalformedHTLCZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecUpdateFulfillHTLCZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecUpdateFulfillHTLCZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecu64Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecu64Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecu8Zfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecu8Zfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CVecusizeZfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CVecusizeZfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleTxidu32Znew
- * Signature: (JI)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2TupleTxidu32Znew
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleScriptu64Znew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2TupleScriptu64Znew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2Tupleu64u64Znew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2Tupleu64u64Znew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleSignatureCVecSignatureZZnew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2TupleSignatureCVecSignatureZZnew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultC2TupleSignatureCVecSignatureZZNoneZerr
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultC2TupleSignatureCVecSignatureZZNoneZerr
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultSignatureNoneZerr
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultSignatureNoneZerr
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultCVecSignatureZNoneZerr
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultCVecSignatureZNoneZerr
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleSecretKeyu832Znew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2TupleSecretKeyu832Znew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneAPIErrorZgood
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneAPIErrorZgood
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePaymentSendFailureZgood
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNonePaymentSendFailureZgood
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneChannelMonitorUpdateErrZgood
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneChannelMonitorUpdateErrZgood
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNoneMonitorUpdateErrorZgood
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNoneMonitorUpdateErrorZgood
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C2TupleOutPointScriptZnew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C2TupleOutPointScriptZnew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    C3TupleChannelAnnouncementChannelUpdateChannelUpdateZnew
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_C3TupleChannelAnnouncementChannelUpdateChannelUpdateZnew
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CResultNonePeerHandleErrorZgood
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CResultNonePeerHandleErrorZgood
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Eventfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Eventfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageSendEventfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MessageSendEventfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageSendEventsProviderfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MessageSendEventsProviderfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    EventsProviderfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_EventsProviderfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    APIErrorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_APIErrorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Levelmax
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Levelmax
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Loggerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Loggerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfigfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeConfigfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfiggetminimumdepth
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_ChannelHandshakeConfiggetminimumdepth
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfigsetminimumdepth
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeConfigsetminimumdepth
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfiggetourtoselfdelay
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeConfiggetourtoselfdelay
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfigsetourtoselfdelay
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeConfigsetourtoselfdelay
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfiggetourhtlcminimummsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeConfiggetourhtlcminimummsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfigsetourhtlcminimummsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeConfigsetourhtlcminimummsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfignew
- * Signature: (IJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeConfignew
-  (JNIEnv *, jclass, jint, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeConfigdefault
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeConfigdefault
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetminfundingsatoshis
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetminfundingsatoshis
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetminfundingsatoshis
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetminfundingsatoshis
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetmaxhtlcminimummsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetmaxhtlcminimummsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetmaxhtlcminimummsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetmaxhtlcminimummsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetminmaxhtlcvalueinflightmsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetminmaxhtlcvalueinflightmsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetminmaxhtlcvalueinflightmsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetminmaxhtlcvalueinflightmsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetmaxchannelreservesatoshis
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetmaxchannelreservesatoshis
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetmaxchannelreservesatoshis
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetmaxchannelreservesatoshis
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetminmaxacceptedhtlcs
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetminmaxacceptedhtlcs
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetminmaxacceptedhtlcs
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetminmaxacceptedhtlcs
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetmindustlimitsatoshis
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetmindustlimitsatoshis
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetmindustlimitsatoshis
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetmindustlimitsatoshis
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetmaxdustlimitsatoshis
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetmaxdustlimitsatoshis
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetmaxdustlimitsatoshis
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetmaxdustlimitsatoshis
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetmaxminimumdepth
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetmaxminimumdepth
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetmaxminimumdepth
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetmaxminimumdepth
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgetforceannouncedchannelpreference
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgetforceannouncedchannelpreference
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssetforceannouncedchannelpreference
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssetforceannouncedchannelpreference
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsgettheirtoselfdelay
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsgettheirtoselfdelay
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitssettheirtoselfdelay
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitssettheirtoselfdelay
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsnew
- * Signature: (JJJJJJJIZJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsnew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jint, jboolean, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelHandshakeLimitsdefault
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelHandshakeLimitsdefault
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelConfigfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfiggetfeeproportionalmillionths
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_ChannelConfiggetfeeproportionalmillionths
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigsetfeeproportionalmillionths
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelConfigsetfeeproportionalmillionths
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfiggetannouncedchannel
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelConfiggetannouncedchannel
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigsetannouncedchannel
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelConfigsetannouncedchannel
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfiggetcommitupfrontshutdownpubkey
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelConfiggetcommitupfrontshutdownpubkey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigsetcommitupfrontshutdownpubkey
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelConfigsetcommitupfrontshutdownpubkey
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfignew
- * Signature: (IZZ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelConfignew
-  (JNIEnv *, jclass, jint, jboolean, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigdefault
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelConfigdefault
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelConfigwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelConfigread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelConfigread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfigfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UserConfigfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfiggetownchannelconfig
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UserConfiggetownchannelconfig
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfigsetownchannelconfig
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UserConfigsetownchannelconfig
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfiggetpeerchannelconfiglimits
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UserConfiggetpeerchannelconfiglimits
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfigsetpeerchannelconfiglimits
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UserConfigsetpeerchannelconfiglimits
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfiggetchanneloptions
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UserConfiggetchanneloptions
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfigsetchanneloptions
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UserConfigsetchanneloptions
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfignew
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UserConfignew
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UserConfigdefault
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UserConfigdefault
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchInterfacefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChainWatchInterfacefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BroadcasterInterfacefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_BroadcasterInterfacefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainListenerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChainListenerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FeeEstimatorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FeeEstimatorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtilfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChainWatchedUtilfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtilnew
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChainWatchedUtilnew
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtilregistertx
- * Signature: (J[BJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChainWatchedUtilregistertx
-  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtilregisteroutpoint
- * Signature: (JJJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChainWatchedUtilregisteroutpoint
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtilwatchall
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChainWatchedUtilwatchall
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchedUtildoesmatchtx
- * Signature: (JJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChainWatchedUtildoesmatchtx
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifierfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_BlockNotifierfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifiernew
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_BlockNotifiernew
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifierregisterlistener
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_BlockNotifierregisterlistener
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifierblockconnected
- * Signature: (JJI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_BlockNotifierblockconnected
-  (JNIEnv *, jclass, jlong, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifierblockconnectedchecked
- * Signature: (J[BIJJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_BlockNotifierblockconnectedchecked
-  (JNIEnv *, jclass, jlong, jbyteArray, jint, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    BlockNotifierblockdisconnected
- * Signature: (J[BI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_BlockNotifierblockdisconnected
-  (JNIEnv *, jclass, jlong, jbyteArray, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchInterfaceUtilfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChainWatchInterfaceUtilfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchInterfaceUtilasChainWatchInterface
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChainWatchInterfaceUtilasChainWatchInterface
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchInterfaceUtilnew
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChainWatchInterfaceUtilnew
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChainWatchInterfaceUtildoesmatchtx
- * Signature: (JJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChainWatchInterfaceUtildoesmatchtx
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_OutPointfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointgettxid
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_OutPointgettxid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointsettxid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_OutPointsettxid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointgetindex
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OutPointgetindex
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointsetindex
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_OutPointsetindex
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointnew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OutPointnew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointtochannelid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OutPointtochannelid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OutPointwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OutPointread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OutPointread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    SpendableOutputDescriptorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_SpendableOutputDescriptorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    SpendableOutputDescriptorwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_SpendableOutputDescriptorwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    SpendableOutputDescriptorread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_SpendableOutputDescriptorread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelKeysfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelKeysfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    KeysInterfacefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_KeysInterfacefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeysfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgetfundingkey
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgetfundingkey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssetfundingkey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssetfundingkey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgetrevocationbasekey
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgetrevocationbasekey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssetrevocationbasekey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssetrevocationbasekey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgetpaymentkey
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgetpaymentkey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssetpaymentkey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssetpaymentkey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgetdelayedpaymentbasekey
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgetdelayedpaymentbasekey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssetdelayedpaymentbasekey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssetdelayedpaymentbasekey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgethtlcbasekey
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgethtlcbasekey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssethtlcbasekey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssethtlcbasekey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysgetcommitmentseed
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_InMemoryChannelKeysgetcommitmentseed
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyssetcommitmentseed
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InMemoryChannelKeyssetcommitmentseed
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysnew
- * Signature: (JJJJJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_InMemoryChannelKeysnew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysasChannelKeys
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_InMemoryChannelKeysasChannelKeys
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeyswrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_InMemoryChannelKeyswrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InMemoryChannelKeysread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_InMemoryChannelKeysread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    KeysManagerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_KeysManagerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    KeysManagernew
- * Signature: ([BJJI)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_KeysManagernew
-  (JNIEnv *, jclass, jbyteArray, jlong, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    KeysManagerderivechannelkeys
- * Signature: (JJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_KeysManagerderivechannelkeys
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    KeysManagerasKeysInterface
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_KeysManagerasKeysInterface
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailsfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetchannelid
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_ChannelDetailsgetchannelid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetchannelid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetchannelid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetremotenetworkid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetremotenetworkid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetremotenetworkid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetremotenetworkid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetcounterpartyfeatures
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetcounterpartyfeatures
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetcounterpartyfeatures
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetcounterpartyfeatures
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetchannelvaluesatoshis
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetchannelvaluesatoshis
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetchannelvaluesatoshis
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetchannelvaluesatoshis
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetuserid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetuserid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetuserid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetuserid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetoutboundcapacitymsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetoutboundcapacitymsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetoutboundcapacitymsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetoutboundcapacitymsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetinboundcapacitymsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelDetailsgetinboundcapacitymsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetinboundcapacitymsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetinboundcapacitymsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailsgetislive
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelDetailsgetislive
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelDetailssetislive
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelDetailssetislive
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PaymentSendFailurefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PaymentSendFailurefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagernew
- * Signature: (JJJJJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagernew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagercreatechannel
- * Signature: (JJJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagercreatechannel
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerlistchannels
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerlistchannels
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerlistusablechannels
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerlistusablechannels
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerclosechannel
- * Signature: (J[B)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerclosechannel
-  (JNIEnv *, jclass, jlong, jbyteArray);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerforceclosechannel
- * Signature: (J[B)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerforceclosechannel
-  (JNIEnv *, jclass, jlong, jbyteArray);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerforcecloseallchannels
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerforcecloseallchannels
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagersendpayment
- * Signature: (JJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagersendpayment
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerfundingtransactiongenerated
- * Signature: (J[BJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerfundingtransactiongenerated
-  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerbroadcastnodeannouncement
- * Signature: (JJJJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerbroadcastnodeannouncement
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerprocesspendinghtlcforwards
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerprocesspendinghtlcforwards
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagertimerchanfreshnesseverymin
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagertimerchanfreshnesseverymin
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerfailhtlcbackwards
- * Signature: (J[BJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelManagerfailhtlcbackwards
-  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerclaimfunds
- * Signature: (JJJJ)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_ChannelManagerclaimfunds
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagergetournodeid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagergetournodeid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerchannelmonitorupdated
- * Signature: (JJJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelManagerchannelmonitorupdated
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerasMessageSendEventsProvider
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerasMessageSendEventsProvider
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerasEventsProvider
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerasEventsProvider
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerasChainListener
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerasChainListener
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelManagerasChannelMessageHandler
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelManagerasChannelMessageHandler
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorUpdatefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelMonitorUpdatefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorUpdategetupdateid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorUpdategetupdateid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorUpdatesetupdateid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelMonitorUpdatesetupdateid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorUpdatewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorUpdatewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorUpdateread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorUpdateread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MonitorUpdateErrorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MonitorUpdateErrorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCUpdatefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCUpdatefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCUpdatewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_HTLCUpdatewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCUpdateread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_HTLCUpdateread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelMonitorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ManyChannelMonitorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ManyChannelMonitorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorupdatemonitor
- * Signature: (JJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorupdatemonitor
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorgetlatestupdateid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorgetlatestupdateid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorgetfundingtxo
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorgetfundingtxo
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorgetandclearpendinghtlcsupdated
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorgetandclearpendinghtlcsupdated
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorgetandclearpendingevents
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorgetandclearpendingevents
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMonitorgetlatestlocalcommitmenttxn
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelMonitorgetlatestlocalcommitmenttxn
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DecodeErrorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DecodeErrorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Initfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Initfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ErrorMessagefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ErrorMessagefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pingfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Pingfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pongfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Pongfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OpenChannelfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_OpenChannelfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AcceptChannelfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_AcceptChannelfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingCreatedfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FundingCreatedfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingSignedfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FundingSignedfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FundingLockedfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedgetchannelid
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_FundingLockedgetchannelid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedsetchannelid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FundingLockedsetchannelid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedgetnextpercommitmentpoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingLockedgetnextpercommitmentpoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedsetnextpercommitmentpoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_FundingLockedsetnextpercommitmentpoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockednew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingLockednew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Shutdownfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Shutdownfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ClosingSignedfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ClosingSignedfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateAddHTLCfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UpdateAddHTLCfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFulfillHTLCfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UpdateFulfillHTLCfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailHTLCfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UpdateFailHTLCfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailMalformedHTLCfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UpdateFailMalformedHTLCfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentSignedfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentSignedfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RevokeAndACKfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RevokeAndACKfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFeefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UpdateFeefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelReestablishfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelReestablishfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AnnouncementSignaturesfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_AnnouncementSignaturesfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetAddressfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NetAddressfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedNodeAnnouncementfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UnsignedNodeAnnouncementfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedNodeAnnouncementgetnodeid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedNodeAnnouncementgetnodeid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedNodeAnnouncementsetnodeid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UnsignedNodeAnnouncementsetnodeid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementgetnodeid1
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementgetnodeid1
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementsetnodeid1
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementsetnodeid1
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementgetnodeid2
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementgetnodeid2
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementsetnodeid2
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementsetnodeid2
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelAnnouncementfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelAnnouncementfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelUpdatefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelUpdatefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ErrorActionfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ErrorActionfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LightningErrorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrorgeterr
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LightningErrorgeterr
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrorseterr
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LightningErrorseterr
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrorgetaction
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LightningErrorgetaction
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrorsetaction
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LightningErrorsetaction
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LightningErrornew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LightningErrornew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetupdateaddhtlcs
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetupdateaddhtlcs
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetupdatefulfillhtlcs
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetupdatefulfillhtlcs
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetupdatefailhtlcs
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetupdatefailhtlcs
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetupdatefailmalformedhtlcs
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetupdatefailmalformedhtlcs
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdategetupdatefee
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CommitmentUpdategetupdatefee
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetupdatefee
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetupdatefee
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdategetcommitmentsigned
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CommitmentUpdategetcommitmentsigned
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatesetcommitmentsigned
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_CommitmentUpdatesetcommitmentsigned
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentUpdatenew
- * Signature: (JJJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CommitmentUpdatenew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCFailChannelUpdatefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCFailChannelUpdatefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelMessageHandlerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelMessageHandlerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingMessageHandlerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RoutingMessageHandlerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AcceptChannelwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_AcceptChannelwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AcceptChannelread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_AcceptChannelread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AnnouncementSignatureswrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_AnnouncementSignatureswrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    AnnouncementSignaturesread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_AnnouncementSignaturesread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelReestablishwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelReestablishwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelReestablishread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelReestablishread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ClosingSignedwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ClosingSignedwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ClosingSignedread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ClosingSignedread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentSignedwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CommitmentSignedwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    CommitmentSignedread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_CommitmentSignedread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingCreatedwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingCreatedwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingCreatedread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingCreatedread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingSignedwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingSignedwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingSignedread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingSignedread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingLockedwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    FundingLockedread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_FundingLockedread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Initwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Initwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Initread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Initread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OpenChannelwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OpenChannelwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    OpenChannelread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_OpenChannelread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RevokeAndACKwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RevokeAndACKwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RevokeAndACKread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RevokeAndACKread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Shutdownwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Shutdownwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Shutdownread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Shutdownread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailHTLCwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFailHTLCwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailHTLCread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFailHTLCread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailMalformedHTLCwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFailMalformedHTLCwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFailMalformedHTLCread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFailMalformedHTLCread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFeewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFeewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFeeread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFeeread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFulfillHTLCwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFulfillHTLCwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateFulfillHTLCread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateFulfillHTLCread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateAddHTLCwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateAddHTLCwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UpdateAddHTLCread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UpdateAddHTLCread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pingwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Pingwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pingread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Pingread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pongwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Pongwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Pongread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Pongread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedChannelAnnouncementread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedChannelAnnouncementread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelAnnouncementwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelAnnouncementwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelAnnouncementread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelAnnouncementread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelUpdatewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelUpdatewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelUpdateread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelUpdateread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ErrorMessagewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ErrorMessagewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ErrorMessageread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ErrorMessageread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedNodeAnnouncementwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedNodeAnnouncementwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    UnsignedNodeAnnouncementread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_UnsignedNodeAnnouncementread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeAnnouncementwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeAnnouncementread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MessageHandlerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlergetchanhandler
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_MessageHandlergetchanhandler
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlersetchanhandler
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MessageHandlersetchanhandler
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlergetroutehandler
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_MessageHandlergetroutehandler
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlersetroutehandler
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_MessageHandlersetroutehandler
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    MessageHandlernew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_MessageHandlernew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    SocketDescriptorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_SocketDescriptorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerHandleErrorfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerHandleErrorfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerHandleErrorgetnoconnectionpossible
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_PeerHandleErrorgetnoconnectionpossible
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerHandleErrorsetnoconnectionpossible
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerHandleErrorsetnoconnectionpossible
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerHandleErrornew
- * Signature: (Z)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerHandleErrornew
-  (JNIEnv *, jclass, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerManagerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagernew
- * Signature: (JJ[BJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagernew
-  (JNIEnv *, jclass, jlong, jlong, jbyteArray, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagergetpeernodeids
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagergetpeernodeids
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagernewoutboundconnection
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagernewoutboundconnection
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagernewinboundconnection
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagernewinboundconnection
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagerwritebufferspaceavail
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagerwritebufferspaceavail
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagerreadevent
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_PeerManagerreadevent
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagerprocessevents
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerManagerprocessevents
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagersocketdisconnected
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerManagersocketdisconnected
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    PeerManagertimertickoccured
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_PeerManagertimertickoccured
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    buildcommitmentsecret
- * Signature: ([BJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_buildcommitmentsecret
-  (JNIEnv *, jclass, jbyteArray, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    TxCreationKeysfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_TxCreationKeysfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    TxCreationKeysgetpercommitmentpoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_TxCreationKeysgetpercommitmentpoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    TxCreationKeyssetpercommitmentpoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_TxCreationKeyssetpercommitmentpoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    TxCreationKeyswrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_TxCreationKeyswrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    TxCreationKeysread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_TxCreationKeysread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeysfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysgetfundingpubkey
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysgetfundingpubkey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyssetfundingpubkey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeyssetfundingpubkey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysgetrevocationbasepoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysgetrevocationbasepoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyssetrevocationbasepoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeyssetrevocationbasepoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysgetpaymentpoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysgetpaymentpoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyssetpaymentpoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeyssetpaymentpoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysgetdelayedpaymentbasepoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysgetdelayedpaymentbasepoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyssetdelayedpaymentbasepoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeyssetdelayedpaymentbasepoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysgethtlcbasepoint
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysgethtlcbasepoint
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyssethtlcbasepoint
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelPublicKeyssethtlcbasepoint
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysnew
- * Signature: (JJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysnew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeyswrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeyswrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelPublicKeysread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelPublicKeysread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    getrevokeableredeemscript
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_getrevokeableredeemscript
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentgetoffered
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentgetoffered
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentsetoffered
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentsetoffered
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentgetamountmsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentgetamountmsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentsetamountmsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentsetamountmsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentgetcltvexpiry
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentgetcltvexpiry
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentsetcltvexpiry
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentsetcltvexpiry
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentgetpaymenthash
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentgetpaymenthash
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentsetpaymenthash
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentsetpaymenthash
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    HTLCOutputInCommitmentread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_HTLCOutputInCommitmentread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    gethtlcredeemscript
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_gethtlcredeemscript
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    makefundingredeemscript
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_makefundingredeemscript
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    buildhtlctransaction
- * Signature: ([BIJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_buildhtlctransaction
-  (JNIEnv *, jclass, jbyteArray, jint, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiongetunsignedtx
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiongetunsignedtx
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionsetunsignedtx
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionsetunsignedtx
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiongettheirsig
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiongettheirsig
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionsettheirsig
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionsettheirsig
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiongetlocalkeys
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiongetlocalkeys
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionsetlocalkeys
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionsetlocalkeys
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiongetfeerateperkw
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiongetfeerateperkw
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionsetfeerateperkw
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionsetfeerateperkw
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiontxid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiontxid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactiongetlocalsig
- * Signature: (J[BJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactiongetlocalsig
-  (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    LocalCommitmentTransactionread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_LocalCommitmentTransactionread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    InitFeaturesfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_InitFeaturesfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeFeaturesfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeFeaturesfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelFeaturesfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelFeaturesfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHopfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopgetpubkey
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHopgetpubkey
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopsetpubkey
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHopsetpubkey
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopgetshortchannelid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHopgetshortchannelid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopsetshortchannelid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHopsetshortchannelid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopgetfeemsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHopgetfeemsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopsetfeemsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHopsetfeemsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopgetcltvexpirydelta
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_RouteHopgetcltvexpirydelta
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHopsetcltvexpirydelta
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHopsetcltvexpirydelta
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Routefree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Routefree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Routesetpaths
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_Routesetpaths
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Routenew
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Routenew
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Routewrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Routewrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    Routeread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_Routeread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintgetsrcnodeid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintgetsrcnodeid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintsetsrcnodeid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintsetsrcnodeid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintgetshortchannelid
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintgetshortchannelid
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintsetshortchannelid
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintsetshortchannelid
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintgetfees
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintgetfees
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintsetfees
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintsetfees
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintgetcltvexpirydelta
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintgetcltvexpirydelta
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintsetcltvexpirydelta
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintsetcltvexpirydelta
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintgethtlcminimummsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintgethtlcminimummsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintsethtlcminimummsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RouteHintsethtlcminimummsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RouteHintnew
- * Signature: (JJJJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RouteHintnew
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    getroute
- * Signature: (JJJJJJIJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_getroute
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jint, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetworkGraphfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NetworkGraphfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetGraphMsgHandlerfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NetGraphMsgHandlerfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetGraphMsgHandlernew
- * Signature: (JJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetGraphMsgHandlernew
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetGraphMsgHandlerfromnetgraph
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetGraphMsgHandlerfromnetgraph
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetGraphMsgHandlerasRoutingMessageHandler
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetGraphMsgHandlerasRoutingMessageHandler
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfofree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DirectionalChannelInfofree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfogetlastupdate
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_DirectionalChannelInfogetlastupdate
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfosetlastupdate
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DirectionalChannelInfosetlastupdate
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfogetenabled
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_ldk_bindings_DirectionalChannelInfogetenabled
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfosetenabled
- * Signature: (JZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DirectionalChannelInfosetenabled
-  (JNIEnv *, jclass, jlong, jboolean);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfogetcltvexpirydelta
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_DirectionalChannelInfogetcltvexpirydelta
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfosetcltvexpirydelta
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DirectionalChannelInfosetcltvexpirydelta
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfogethtlcminimummsat
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_DirectionalChannelInfogethtlcminimummsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfosethtlcminimummsat
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_DirectionalChannelInfosethtlcminimummsat
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInfowrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_DirectionalChannelInfowrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    DirectionalChannelInforead
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_DirectionalChannelInforead
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfofree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelInfofree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfogetnodeone
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInfogetnodeone
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfosetnodeone
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelInfosetnodeone
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfogetonetotwo
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInfogetonetotwo
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfosetonetotwo
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelInfosetonetotwo
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfogetnodetwo
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInfogetnodetwo
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfosetnodetwo
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelInfosetnodetwo
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfogettwotoone
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInfogettwotoone
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfosettwotoone
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_ChannelInfosettwotoone
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInfowrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInfowrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    ChannelInforead
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_ChannelInforead
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeesfree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RoutingFeesfree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeesgetbasemsat
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_RoutingFeesgetbasemsat
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeessetbasemsat
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RoutingFeessetbasemsat
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeesgetproportionalmillionths
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_RoutingFeesgetproportionalmillionths
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeessetproportionalmillionths
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_RoutingFeessetproportionalmillionths
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeesnew
- * Signature: (II)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RoutingFeesnew
-  (JNIEnv *, jclass, jint, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeesread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RoutingFeesread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    RoutingFeeswrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_RoutingFeeswrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfofree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementInfofree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfogetlastupdate
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_org_ldk_bindings_NodeAnnouncementInfogetlastupdate
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfosetlastupdate
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementInfosetlastupdate
-  (JNIEnv *, jclass, jlong, jint);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfogetrgb
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_NodeAnnouncementInfogetrgb
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfosetrgb
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementInfosetrgb
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfogetalias
- * Signature: (J)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_org_ldk_bindings_NodeAnnouncementInfogetalias
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfosetalias
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementInfosetalias
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfosetaddresses
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeAnnouncementInfosetaddresses
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInfowrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeAnnouncementInfowrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeAnnouncementInforead
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeAnnouncementInforead
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfofree
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeInfofree
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfosetchannels
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeInfosetchannels
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfogetlowestinboundchannelfees
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeInfogetlowestinboundchannelfees
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfosetlowestinboundchannelfees
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeInfosetlowestinboundchannelfees
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfogetannouncementinfo
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeInfogetannouncementinfo
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfosetannouncementinfo
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NodeInfosetannouncementinfo
-  (JNIEnv *, jclass, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfonew
- * Signature: (JJJ)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeInfonew
-  (JNIEnv *, jclass, jlong, jlong, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInfowrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeInfowrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NodeInforead
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NodeInforead
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetworkGraphwrite
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetworkGraphwrite
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetworkGraphread
- * Signature: (J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetworkGraphread
-  (JNIEnv *, jclass, jlong);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetworkGraphnew
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_bindings_NetworkGraphnew
-  (JNIEnv *, jclass);
-
-/*
- * Class:     org_ldk_bindings
- * Method:    NetworkGraphclosechannelfromupdate
- * Signature: (JJZ)V
- */
-JNIEXPORT void JNICALL Java_org_ldk_bindings_NetworkGraphclosechannelfromupdate
-  (JNIEnv *, jclass, jlong, jlong, jboolean);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/src/main/jni/org_ldk_impl_bindings.h b/src/main/jni/org_ldk_impl_bindings.h
new file mode 100644 (file)
index 0000000..0f4860c
--- /dev/null
@@ -0,0 +1,6317 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_ldk_impl_bindings */
+
+#ifndef _Included_org_ldk_impl_bindings
+#define _Included_org_ldk_impl_bindings
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKMessageSendEventsProvider_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKEventsProvider_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKEventsProvider;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKLogger_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKLogger;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKChainWatchInterface_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKChainWatchInterface;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChainWatchInterface_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKBroadcasterInterface_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKBroadcasterInterface;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKBroadcasterInterface_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKChainListener_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKChainListener;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChainListener_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKFeeEstimator_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKFeeEstimator;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKFeeEstimator_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKChannelKeys_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKChannelKeys;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKKeysInterface_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKKeysInterface;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKKeysInterface_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKManyChannelMonitor_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKManyChannelMonitor;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKManyChannelMonitor_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKChannelMessageHandler_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKChannelMessageHandler;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKRoutingMessageHandler_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKRoutingMessageHandler;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LDKSocketDescriptor_new
+ * Signature: (Lorg/ldk/impl/bindings/LDKSocketDescriptor;)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new
+  (JNIEnv *, jclass, jobject);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_HTLCOutputInCommitmentSignatureZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_OutPointScriptZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_Scriptu64Z_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Scriptu64Z_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_SignatureCVec_SignatureZZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_Txidu32Z_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Txidu32Z_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_u64u64Z_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_Scriptu64ZChainErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_Scriptu64ZChainErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_Scriptu64ZChainErrorZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1Scriptu64ZChainErrorZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_SignatureZNoneZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_SignatureZNoneZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_u8ZPeerHandleErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_u8ZPeerHandleErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_u8ZPeerHandleErrorZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneAPIErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneAPIErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneChannelMonitorUpdateErrZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneChannelMonitorUpdateErrZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneMonitorUpdateErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneMonitorUpdateErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePaymentSendFailureZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePaymentSendFailureZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePeerHandleErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePeerHandleErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_RouteLightningErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_RouteLightningErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_RouteLightningErrorZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_SignatureNoneZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_SignatureNoneZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_TxCreationKeysSecpErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_TxCreationKeysSecpErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_TxCreationKeysSecpErrorZ_ok
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1ok
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolLightningErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolLightningErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolLightningErrorZ_ok
+ * Signature: (Z)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok
+  (JNIEnv *, jclass, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolPeerHandleErrorZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolPeerHandleErrorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_boolPeerHandleErrorZ_ok
+ * Signature: (Z)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok
+  (JNIEnv *, jclass, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1HTLCOutputInCommitmentSignatureZZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_CVec_RouteHopZZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_ChannelDetailsZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_ChannelMonitorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_EventZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_HTLCOutputInCommitmentZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1HTLCOutputInCommitmentZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_MessageSendEventZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_MonitorEventZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MonitorEventZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_NetAddressZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_NodeAnnouncementZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_PublicKeyZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_RouteHintZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_RouteHopZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_SignatureZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_SpendableOutputDescriptorZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_TransactionZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1TransactionZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_UpdateAddHTLCZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateAddHTLCZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_UpdateFailHTLCZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailHTLCZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_UpdateFailMalformedHTLCZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailMalformedHTLCZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_UpdateFulfillHTLCZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFulfillHTLCZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_u64Z_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_u8Z_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CVec_usizeZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1usizeZ_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxOut_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_Txidu32Z_new
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Txidu32Z_1new
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_Scriptu64Z_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1Scriptu64Z_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_u64u64Z_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_SignatureCVec_SignatureZZ_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1err
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_SignatureNoneZ_err
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1err
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_CVec_SignatureZNoneZ_err
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneAPIErrorZ_ok
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePaymentSendFailureZ_ok
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneChannelMonitorUpdateErrZ_ok
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1ok
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NoneMonitorUpdateErrorZ_ok
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1ok
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_OutPointScriptZ_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CResult_NonePeerHandleErrorZ_ok
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    C2Tuple_HTLCOutputInCommitmentSignatureZ_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Event_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Event_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageSendEvent_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEvent_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageSendEventsProvider_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    EventsProvider_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_EventsProvider_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    APIError_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_APIError_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Level_max
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Level_1max
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Logger_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Logger_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_get_minimum_depth
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1minimum_1depth
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_set_minimum_depth
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1minimum_1depth
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_get_our_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1our_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_set_our_to_self_delay
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1our_1to_1self_1delay
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_get_our_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1our_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_set_our_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1our_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_new
+ * Signature: (IJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1new
+  (JNIEnv *, jclass, jint, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeConfig_default
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1default
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_min_funding_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1funding_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_min_funding_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1funding_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_max_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_max_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_max_channel_reserve_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_max_channel_reserve_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_min_max_accepted_htlcs
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_min_max_accepted_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_min_dust_limit_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_min_dust_limit_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1min_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_max_dust_limit_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_max_dust_limit_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_max_minimum_depth
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1max_1minimum_1depth
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_max_minimum_depth
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1max_1minimum_1depth
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_force_announced_channel_preference
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1force_1announced_1channel_1preference
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_force_announced_channel_preference
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1force_1announced_1channel_1preference
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_get_their_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1their_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_set_their_to_self_delay
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1their_1to_1self_1delay
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_new
+ * Signature: (JJJJJJJIZJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jint, jboolean, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelHandshakeLimits_default
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1default
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_get_fee_proportional_millionths
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1fee_1proportional_1millionths
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_set_fee_proportional_millionths
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1fee_1proportional_1millionths
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_get_announced_channel
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1announced_1channel
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_set_announced_channel
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1announced_1channel
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_get_commit_upfront_shutdown_pubkey
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1commit_1upfront_1shutdown_1pubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_set_commit_upfront_shutdown_pubkey
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1commit_1upfront_1shutdown_1pubkey
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_new
+ * Signature: (IZZ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1new
+  (JNIEnv *, jclass, jint, jboolean, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_default
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1default
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelConfig_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_get_own_channel_config
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1own_1channel_1config
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_set_own_channel_config
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1own_1channel_1config
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_get_peer_channel_config_limits
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1peer_1channel_1config_1limits
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_set_peer_channel_config_limits
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1peer_1channel_1config_1limits
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_get_channel_options
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1channel_1options
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_set_channel_options
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1channel_1options
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UserConfig_default
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1default
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchInterface_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchInterface_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BroadcasterInterface_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainListener_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainListener_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FeeEstimator_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FeeEstimator_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_new
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1new
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_register_tx
+ * Signature: (J[BJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1register_1tx
+  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_register_outpoint
+ * Signature: (JJJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1register_1outpoint
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_watch_all
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1watch_1all
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchedUtil_does_match_tx
+ * Signature: (JJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchedUtil_1does_1match_1tx
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_new
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1new
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_register_listener
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1register_1listener
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_block_connected
+ * Signature: (JJI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1connected
+  (JNIEnv *, jclass, jlong, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_block_connected_checked
+ * Signature: (J[BIJJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1connected_1checked
+  (JNIEnv *, jclass, jlong, jbyteArray, jint, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    BlockNotifier_block_disconnected
+ * Signature: (J[BI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BlockNotifier_1block_1disconnected
+  (JNIEnv *, jclass, jlong, jbyteArray, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchInterfaceUtil_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchInterfaceUtil_as_ChainWatchInterface
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1as_1ChainWatchInterface
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchInterfaceUtil_new
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1new
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChainWatchInterfaceUtil_does_match_tx
+ * Signature: (JJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChainWatchInterfaceUtil_1does_1match_1tx
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_get_txid
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_OutPoint_1get_1txid
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_set_txid
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1txid
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_get_index
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1get_1index
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_set_index
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1index
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_to_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1to_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OutPoint_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    SpendableOutputDescriptor_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SpendableOutputDescriptor_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelKeys_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    KeysInterface_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysInterface_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_funding_key
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1funding_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_funding_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1funding_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_revocation_base_key
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1revocation_1base_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_revocation_base_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1revocation_1base_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_payment_key
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1payment_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_payment_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1payment_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_delayed_payment_base_key
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1delayed_1payment_1base_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_delayed_payment_base_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1delayed_1payment_1base_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_htlc_base_key
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1htlc_1base_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_htlc_base_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1htlc_1base_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_get_commitment_seed
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1commitment_1seed
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_set_commitment_seed
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1commitment_1seed
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_new
+ * Signature: (JJJJJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_remote_pubkeys
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1remote_1pubkeys
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_remote_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1remote_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_local_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1local_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_as_ChannelKeys
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1as_1ChannelKeys
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InMemoryChannelKeys_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    KeysManager_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysManager_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    KeysManager_new
+ * Signature: ([BJJI)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1new
+  (JNIEnv *, jclass, jbyteArray, jlong, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    KeysManager_derive_channel_keys
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1derive_1channel_1keys
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    KeysManager_as_KeysInterface
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1as_1KeysInterface
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_remote_network_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1remote_1network_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_remote_network_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1remote_1network_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_counterparty_features
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1counterparty_1features
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_counterparty_features
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1counterparty_1features
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_channel_value_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1channel_1value_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_channel_value_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1channel_1value_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_user_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1user_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_user_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1user_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_outbound_capacity_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1outbound_1capacity_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_outbound_capacity_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1outbound_1capacity_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_inbound_capacity_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1inbound_1capacity_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_inbound_capacity_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1inbound_1capacity_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_get_is_live
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1is_1live
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelDetails_set_is_live
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1is_1live
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PaymentSendFailure_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentSendFailure_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_new
+ * Signature: (JJJJJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_create_channel
+ * Signature: (JJJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1create_1channel
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_list_channels
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1list_1channels
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_list_usable_channels
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1list_1usable_1channels
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_close_channel
+ * Signature: (J[B)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1close_1channel
+  (JNIEnv *, jclass, jlong, jbyteArray);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_force_close_channel
+ * Signature: (J[B)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1force_1close_1channel
+  (JNIEnv *, jclass, jlong, jbyteArray);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_force_close_all_channels
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1force_1close_1all_1channels
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_send_payment
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1payment
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_funding_transaction_generated
+ * Signature: (J[BJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1funding_1transaction_1generated
+  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_broadcast_node_announcement
+ * Signature: (JJJJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1broadcast_1node_1announcement
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_process_pending_htlc_forwards
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1process_1pending_1htlc_1forwards
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_timer_chan_freshness_every_min
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1timer_1chan_1freshness_1every_1min
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_fail_htlc_backwards
+ * Signature: (J[BJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1fail_1htlc_1backwards
+  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_claim_funds
+ * Signature: (JJJJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1claim_1funds
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_get_our_node_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1get_1our_1node_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_channel_monitor_updated
+ * Signature: (JJJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1channel_1monitor_1updated
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_as_MessageSendEventsProvider
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1MessageSendEventsProvider
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_as_EventsProvider
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1EventsProvider
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_as_ChainListener
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1ChainListener
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManager_as_ChannelMessageHandler
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1as_1ChannelMessageHandler
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_keys_manager
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1keys_1manager
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_keys_manager
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1keys_1manager
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_fee_estimator
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1fee_1estimator
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_fee_estimator
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1fee_1estimator
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_monitor
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1monitor
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_monitor
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1monitor
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_tx_broadcaster
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1tx_1broadcaster
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_tx_broadcaster
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1tx_1broadcaster
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_logger
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1logger
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_logger
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1logger
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_get_default_config
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1get_1default_1config
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_set_default_config
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1set_1default_1config
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelManagerReadArgs_new
+ * Signature: (JJJJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManagerReadArgs_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitorUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitorUpdate_get_update_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1get_1update_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitorUpdate_set_update_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1set_1update_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitorUpdate_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitorUpdate_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MonitorUpdateError_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MonitorUpdateError_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MonitorEvent_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MonitorEvent_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCUpdate_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCUpdate_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ManyChannelMonitor_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ManyChannelMonitor_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_update_monitor
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1update_1monitor
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_get_latest_update_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1latest_1update_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_get_funding_txo
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1funding_1txo
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_get_and_clear_pending_monitor_events
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1and_1clear_1pending_1monitor_1events
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_get_and_clear_pending_events
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1and_1clear_1pending_1events
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMonitor_get_latest_local_commitment_txn
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1get_1latest_1local_1commitment_1txn
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DecodeError_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DecodeError_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Init_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Init_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_get_data
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1get_1data
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_set_data
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1data
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_get_ponglen
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1get_1ponglen
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_set_ponglen
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1set_1ponglen
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_get_byteslen
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1get_1byteslen
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_set_byteslen
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1set_1byteslen
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_get_byteslen
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1get_1byteslen
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_set_byteslen
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1set_1byteslen
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_new
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1new
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_chain_hash
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1chain_1hash
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_chain_hash
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1chain_1hash
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_temporary_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_temporary_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_funding_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1funding_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_funding_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1funding_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_push_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1push_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_push_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1push_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_dust_limit_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_dust_limit_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_max_htlc_value_in_flight_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_max_htlc_value_in_flight_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_channel_reserve_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_channel_reserve_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_feerate_per_kw
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_feerate_per_kw
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_to_self_delay
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1to_1self_1delay
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_max_accepted_htlcs
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_max_accepted_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_funding_pubkey
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1funding_1pubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_funding_pubkey
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1funding_1pubkey
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_revocation_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_revocation_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_payment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1payment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_payment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1payment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_delayed_payment_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_delayed_payment_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_htlc_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_htlc_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_first_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1first_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_first_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1first_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_get_channel_flags
+ * Signature: (J)B
+ */
+JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1channel_1flags
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_set_channel_flags
+ * Signature: (JB)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1flags
+  (JNIEnv *, jclass, jlong, jbyte);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_temporary_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_temporary_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_dust_limit_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_dust_limit_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1dust_1limit_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_max_htlc_value_in_flight_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_max_htlc_value_in_flight_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1max_1htlc_1value_1in_1flight_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_channel_reserve_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_channel_reserve_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1channel_1reserve_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_minimum_depth
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1minimum_1depth
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_minimum_depth
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1minimum_1depth
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_to_self_delay
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1to_1self_1delay
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_to_self_delay
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1to_1self_1delay
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_max_accepted_htlcs
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_max_accepted_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1max_1accepted_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_funding_pubkey
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1funding_1pubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_funding_pubkey
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1funding_1pubkey
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_revocation_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_revocation_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_payment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1payment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_payment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1payment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_delayed_payment_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_delayed_payment_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_htlc_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_htlc_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_get_first_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1first_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_set_first_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1first_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_get_temporary_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_set_temporary_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1temporary_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_get_funding_txid
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1funding_1txid
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_set_funding_txid
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1txid
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_get_funding_output_index
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1funding_1output_1index
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_set_funding_output_index
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1output_1index
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_new
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingLocked_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_get_next_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1get_1next_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_set_next_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1next_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_Shutdown_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_get_scriptpubkey
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1get_1scriptpubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_set_scriptpubkey
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1scriptpubkey
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_get_fee_satoshis
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1fee_1satoshis
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_set_fee_satoshis
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1fee_1satoshis
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_get_htlc_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1htlc_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_set_htlc_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1htlc_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_get_amount_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1amount_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_set_amount_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1amount_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_get_payment_hash
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1payment_1hash
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_set_payment_hash
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1payment_1hash
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_get_cltv_expiry
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1cltv_1expiry
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_set_cltv_expiry
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1cltv_1expiry
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_get_htlc_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1htlc_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_set_htlc_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1htlc_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_get_payment_preimage
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1payment_1preimage
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_set_payment_preimage
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1payment_1preimage
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_get_htlc_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1get_1htlc_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_set_htlc_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1htlc_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_get_htlc_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1htlc_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_set_htlc_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1htlc_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_get_failure_code
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1failure_1code
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_set_failure_code
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1failure_1code
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_set_htlc_signatures
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1htlc_1signatures
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_get_per_commitment_secret
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1per_1commitment_1secret
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_set_per_commitment_secret
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1per_1commitment_1secret
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_get_next_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1next_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_set_next_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1next_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UpdateFee_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_get_feerate_per_kw
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UpdateFee_1get_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_set_feerate_per_kw
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_new
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1new
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_get_your_last_per_commitment_secret
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1get_1your_1last_1per_1commitment_1secret
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_set_your_last_per_commitment_secret
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1your_1last_1per_1commitment_1secret
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_get_my_current_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1get_1my_1current_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_set_my_current_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1my_1current_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DataLossProtect_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_get_next_local_commitment_number
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1next_1local_1commitment_1number
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_set_next_local_commitment_number
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_1local_1commitment_1number
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_get_next_remote_commitment_number
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1next_1remote_1commitment_1number
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_set_next_remote_commitment_number
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_1remote_1commitment_1number
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_get_channel_id
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_set_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_get_short_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1short_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_set_short_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1short_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_get_node_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_set_node_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1node_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_get_bitcoin_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_set_bitcoin_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1bitcoin_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_new
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetAddress_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetAddress_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_get_timestamp
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1timestamp
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_set_timestamp
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1timestamp
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_get_node_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1node_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_set_node_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1node_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_get_rgb
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1rgb
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_set_rgb
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1rgb
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_get_alias
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1alias
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_set_alias
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1alias
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_set_addresses
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_1addresses
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_get_contents
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1contents
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_set_contents
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1contents
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_chain_hash
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1chain_1hash
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_chain_hash
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1chain_1hash
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_short_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1short_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_short_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1short_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_node_id_1
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1node_1id_11
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_node_id_1
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1node_1id_11
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_node_id_2
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1node_1id_12
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_node_id_2
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1node_1id_12
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_bitcoin_key_1
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1bitcoin_1key_11
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_bitcoin_key_1
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1bitcoin_1key_11
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_get_bitcoin_key_2
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1bitcoin_1key_12
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_set_bitcoin_key_2
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1set_1bitcoin_1key_12
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_get_node_signature_1
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_set_node_signature_1
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_11
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_get_node_signature_2
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_set_node_signature_2
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_12
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_get_bitcoin_signature_1
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_set_bitcoin_signature_1
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_11
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_get_bitcoin_signature_2
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_set_bitcoin_signature_2
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_12
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_get_contents
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1contents
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_set_contents
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1contents
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_new
+ * Signature: (JJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_chain_hash
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1chain_1hash
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_chain_hash
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1chain_1hash
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_short_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1short_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_short_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1short_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_timestamp
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1timestamp
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_timestamp
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1timestamp
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_flags
+ * Signature: (J)B
+ */
+JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1flags
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_flags
+ * Signature: (JB)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1flags
+  (JNIEnv *, jclass, jlong, jbyte);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_cltv_expiry_delta
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_cltv_expiry_delta
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_fee_base_msat
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1fee_1base_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_fee_base_msat
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fee_1base_1msat
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_get_fee_proportional_millionths
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1fee_1proportional_1millionths
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_set_fee_proportional_millionths
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fee_1proportional_1millionths
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_get_signature
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_set_signature
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1signature
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_get_contents
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1contents
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_set_contents
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1contents
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorAction_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorAction_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_get_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1get_1err
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_set_err
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1set_1err
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_get_action
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1get_1action
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_set_action
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1set_1action
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LightningError_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_update_add_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1add_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_update_fulfill_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fulfill_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_update_fail_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fail_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_update_fail_malformed_htlcs
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fail_1malformed_1htlcs
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_get_update_fee
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1get_1update_1fee
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_update_fee
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1fee
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_get_commitment_signed
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1get_1commitment_1signed
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_set_commitment_signed
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1commitment_1signed
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentUpdate_new
+ * Signature: (JJJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCFailChannelUpdate_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCFailChannelUpdate_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelMessageHandler_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingMessageHandler_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AcceptChannel_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    AnnouncementSignatures_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelReestablish_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ClosingSigned_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    CommitmentSigned_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingCreated_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingSigned_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    FundingLocked_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Init_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Init_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Init_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Init_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    OpenChannel_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RevokeAndACK_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Shutdown_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailHTLC_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFailMalformedHTLC_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFee_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateFulfillHTLC_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UpdateAddHTLC_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Ping_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Pong_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelAnnouncement_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelAnnouncement_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedChannelUpdate_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelUpdate_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ErrorMessage_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    UnsignedNodeAnnouncement_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncement_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_get_chan_handler
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1get_1chan_1handler
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_set_chan_handler
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1set_1chan_1handler
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_get_route_handler
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1get_1route_1handler
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_set_route_handler
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageHandler_1set_1route_1handler
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    MessageHandler_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageHandler_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    SocketDescriptor_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerHandleError_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerHandleError_get_no_connection_possible
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1get_1no_1connection_1possible
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerHandleError_set_no_connection_possible
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1set_1no_1connection_1possible
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerHandleError_new
+ * Signature: (Z)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1new
+  (JNIEnv *, jclass, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_new
+ * Signature: (JJ[BJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new
+  (JNIEnv *, jclass, jlong, jlong, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_get_peer_node_ids
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1get_1peer_1node_1ids
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_new_outbound_connection
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new_1outbound_1connection
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_new_inbound_connection
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new_1inbound_1connection
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_write_buffer_space_avail
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1write_1buffer_1space_1avail
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_read_event
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1read_1event
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_process_events
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1process_1events
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_socket_disconnected
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1socket_1disconnected
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PeerManager_timer_tick_occured
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1timer_1tick_1occured
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    build_commitment_secret
+ * Signature: ([BJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_build_1commitment_1secret
+  (JNIEnv *, jclass, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_get_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_set_per_commitment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_get_revocation_key
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1revocation_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_set_revocation_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1revocation_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_get_a_htlc_key
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1a_1htlc_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_set_a_htlc_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1a_1htlc_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_get_b_htlc_key
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1b_1htlc_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_set_b_htlc_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1b_1htlc_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_get_a_delayed_payment_key
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1a_1delayed_1payment_1key
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_set_a_delayed_payment_key
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1a_1delayed_1payment_1key
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_new
+ * Signature: (JJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PreCalculatedTxCreationKeys_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PreCalculatedTxCreationKeys_new
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1new
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PreCalculatedTxCreationKeys_trust_key_derivation
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1trust_1key_1derivation
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    PreCalculatedTxCreationKeys_per_commitment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PreCalculatedTxCreationKeys_1per_1commitment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_get_funding_pubkey
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1funding_1pubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_set_funding_pubkey
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1funding_1pubkey
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_get_revocation_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_set_revocation_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1revocation_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_get_payment_point
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1payment_1point
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_set_payment_point
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1payment_1point
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_get_delayed_payment_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_set_delayed_payment_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1delayed_1payment_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_get_htlc_basepoint
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_set_htlc_basepoint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1htlc_1basepoint
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_new
+ * Signature: (JJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelPublicKeys_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    TxCreationKeys_derive_new
+ * Signature: (JJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    get_revokeable_redeemscript
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1revokeable_1redeemscript
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_get_offered
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1offered
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_set_offered
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1offered
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_get_amount_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1amount_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_set_amount_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1amount_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_get_cltv_expiry
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1cltv_1expiry
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_set_cltv_expiry
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1cltv_1expiry
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_get_payment_hash
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1payment_1hash
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_set_payment_hash
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1payment_1hash
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    HTLCOutputInCommitment_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    get_htlc_redeemscript
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1htlc_1redeemscript
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    make_funding_redeemscript
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_make_1funding_1redeemscript
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    build_htlc_transaction
+ * Signature: ([BIJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_build_1htlc_1transaction
+  (JNIEnv *, jclass, jbyteArray, jint, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_get_unsigned_tx
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1unsigned_1tx
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_set_unsigned_tx
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1unsigned_1tx
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_get_their_sig
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1their_1sig
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_set_their_sig
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1their_1sig
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_get_feerate_per_kw
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_set_feerate_per_kw
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1feerate_1per_1kw
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_set_per_htlc
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1set_1per_1htlc
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_new_missing_local_sig
+ * Signature: (JJJJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1new_1missing_1local_1sig
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jint, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_trust_key_derivation
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1trust_1key_1derivation
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_txid
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1txid
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_get_local_sig
+ * Signature: (J[BJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1local_1sig
+  (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_get_htlc_sigs
+ * Signature: (J[BJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1get_1htlc_1sigs
+  (JNIEnv *, jclass, jlong, jbyteArray, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LocalCommitmentTransaction_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LocalCommitmentTransaction_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    InitFeatures_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InitFeatures_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeFeatures_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelFeatures_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_get_pubkey
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1pubkey
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_set_pubkey
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1pubkey
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_get_short_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1short_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_set_short_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1short_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_get_fee_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1fee_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_set_fee_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1fee_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_get_cltv_expiry_delta
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHop_set_cltv_expiry_delta
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Route_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Route_set_paths
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1set_1paths
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Route_new
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1new
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Route_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    Route_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_get_src_node_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1src_1node_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_set_src_node_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1src_1node_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_get_short_channel_id
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1short_1channel_1id
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_set_short_channel_id
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1short_1channel_1id
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_get_fees
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1fees
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_set_fees
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1fees
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_get_cltv_expiry_delta
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_set_cltv_expiry_delta
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_get_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_set_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RouteHint_new
+ * Signature: (JJJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    get_route
+ * Signature: (JJJJJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1route
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong, jlong, jint, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetworkGraph_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LockedNetworkGraph_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LockedNetworkGraph_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetGraphMsgHandler_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetGraphMsgHandler_new
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1new
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetGraphMsgHandler_from_net_graph
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1from_1net_1graph
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetGraphMsgHandler_read_locked_graph
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1read_1locked_1graph
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    LockedNetworkGraph_graph
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LockedNetworkGraph_1graph
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetGraphMsgHandler_as_RoutingMessageHandler
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1as_1RoutingMessageHandler
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_get_last_update
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1last_1update
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_set_last_update
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1last_1update
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_get_enabled
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1enabled
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_set_enabled
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1enabled
+  (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_get_cltv_expiry_delta
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_set_cltv_expiry_delta
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1cltv_1expiry_1delta
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_get_htlc_minimum_msat
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_set_htlc_minimum_msat
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1htlc_1minimum_1msat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    DirectionalChannelInfo_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_get_node_one
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1node_1one
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_set_node_one
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1one
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_get_one_to_two
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1one_1to_1two
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_set_one_to_two
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1one_1to_1two
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_get_node_two
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1node_1two
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_set_node_two
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1two
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_get_two_to_one
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1get_1two_1to_1one
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_set_two_to_one
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1two_1to_1one
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    ChannelInfo_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_get_base_msat
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RoutingFees_1get_1base_1msat
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_set_base_msat
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1set_1base_1msat
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_get_proportional_millionths
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_RoutingFees_1get_1proportional_1millionths
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_set_proportional_millionths
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1set_1proportional_1millionths
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_new
+ * Signature: (II)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1new
+  (JNIEnv *, jclass, jint, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    RoutingFees_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_get_last_update
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1last_1update
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_set_last_update
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1last_1update
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_get_rgb
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1rgb
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_set_rgb
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1rgb
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_get_alias
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1alias
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_set_alias
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1alias
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_set_addresses
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1addresses
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeAnnouncementInfo_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1free
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_set_channels
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1channels
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_get_lowest_inbound_channel_fees
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1get_1lowest_1inbound_1channel_1fees
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_set_lowest_inbound_channel_fees
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1lowest_1inbound_1channel_1fees
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_get_announcement_info
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1get_1announcement_1info
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_set_announcement_info
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1announcement_1info
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_new
+ * Signature: (JJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1new
+  (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NodeInfo_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetworkGraph_write
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1write
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetworkGraph_read
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1read
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetworkGraph_new
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1new
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    NetworkGraph_close_channel_from_update
+ * Signature: (JJZ)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetworkGraph_1close_1channel_1from_1update
+  (JNIEnv *, jclass, jlong, jlong, jboolean);
+
+#ifdef __cplusplus
+}
+#endif
+#endif