Update auto-generated bindings
[ldk-java] / src / main / java / org / ldk / impl / bindings.java
index 99196cc49864297734bbf46e371f0c16a890201c..16990f075e78ab576154c36f8657755cfe87f39a 100644 (file)
@@ -33,10 +33,17 @@ public class bindings {
        static { LDKAccessError.values(); /* Force enum statics to run */ }
        static { LDKChannelMonitorUpdateErr.values(); /* Force enum statics to run */ }
        static { LDKConfirmationTarget.values(); /* Force enum statics to run */ }
+       static { LDKIOError.values(); /* Force enum statics to run */ }
        static { LDKLevel.values(); /* Force enum statics to run */ }
        static { LDKNetwork.values(); /* Force enum statics to run */ }
        static { LDKSecp256k1Error.values(); /* Force enum statics to run */ }
        public static native long LDKCVec_u8Z_new(byte[] elems);
+       public static native boolean LDKCResult_ChannelConfigDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_OutPointDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_OutPointDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_OutPointDecodeErrorZ_get_err(long arg);
        public static native boolean LDKCResult_SecretKeyErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_SecretKeyErrorZ_get_ok(long arg);
        public static native LDKSecp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg);
@@ -52,6 +59,19 @@ public class bindings {
        public static native boolean LDKCResult_TxCreationKeysErrorZ_result_ok(long arg);
        public static native long LDKCResult_TxCreationKeysErrorZ_get_ok(long arg);
        public static native LDKSecp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg);
+       public static class LDKCOption_u32Z {
+               private LDKCOption_u32Z() {}
+               public final static class Some extends LDKCOption_u32Z {
+                       public int some;
+                       Some(int some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_u32Z {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_u32Z.init(); }
+       public static native LDKCOption_u32Z LDKCOption_u32Z_ref_from_ptr(long ptr);
        public static native boolean LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long arg);
@@ -76,6 +96,191 @@ public class bindings {
        public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg);
        public static native byte[][] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg);
        public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg);
+       public static native boolean LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_NoneMonitorUpdateErrorZ_result_ok(long arg);
+       public static native void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg);
+       public static native long LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg);
+       public static native long LDKC2Tuple_OutPointScriptZ_new(long a, byte[] b);
+       public static native long LDKC2Tuple_OutPointScriptZ_get_a(long ptr);
+       public static native byte[] LDKC2Tuple_OutPointScriptZ_get_b(long ptr);
+       public static native long LDKC2Tuple_u32ScriptZ_new(int a, byte[] b);
+       public static native int LDKC2Tuple_u32ScriptZ_get_a(long ptr);
+       public static native byte[] LDKC2Tuple_u32ScriptZ_get_b(long ptr);
+       public static native long LDKCVec_C2Tuple_u32ScriptZZ_new(long[] elems);
+       public static native long LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(byte[] a, long[] b);
+       public static native byte[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long ptr);
+       public static native long[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long ptr);
+       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_new(long[] elems);
+       public static class LDKMonitorEvent {
+               private LDKMonitorEvent() {}
+               public final static class HTLCEvent extends LDKMonitorEvent {
+                       public long htlc_event;
+                       HTLCEvent(long htlc_event) { this.htlc_event = htlc_event; }
+               }
+               public final static class CommitmentTxBroadcasted extends LDKMonitorEvent {
+                       public long commitment_tx_broadcasted;
+                       CommitmentTxBroadcasted(long commitment_tx_broadcasted) { this.commitment_tx_broadcasted = commitment_tx_broadcasted; }
+               }
+               static native void init();
+       }
+       static { LDKMonitorEvent.init(); }
+       public static native LDKMonitorEvent LDKMonitorEvent_ref_from_ptr(long ptr);
+       public static native long LDKCVec_MonitorEventZ_new(long[] elems);
+       public static class LDKSpendableOutputDescriptor {
+               private LDKSpendableOutputDescriptor() {}
+               public final static class StaticOutput extends LDKSpendableOutputDescriptor {
+                       public long outpoint;
+                       public long output;
+                       StaticOutput(long outpoint, long output) { this.outpoint = outpoint; this.output = output; }
+               }
+               public final static class DelayedPaymentOutput extends LDKSpendableOutputDescriptor {
+                       public long delayed_payment_output;
+                       DelayedPaymentOutput(long delayed_payment_output) { this.delayed_payment_output = delayed_payment_output; }
+               }
+               public final static class StaticPaymentOutput extends LDKSpendableOutputDescriptor {
+                       public long static_payment_output;
+                       StaticPaymentOutput(long static_payment_output) { this.static_payment_output = static_payment_output; }
+               }
+               static native void init();
+       }
+       static { LDKSpendableOutputDescriptor.init(); }
+       public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr);
+       public static native long LDKCVec_SpendableOutputDescriptorZ_new(long[] elems);
+       public static class LDKEvent {
+               private LDKEvent() {}
+               public final static class FundingGenerationReady extends LDKEvent {
+                       public byte[] temporary_channel_id;
+                       public long channel_value_satoshis;
+                       public byte[] output_script;
+                       public long user_channel_id;
+                       FundingGenerationReady(byte[] temporary_channel_id, long channel_value_satoshis, byte[] output_script, long user_channel_id) { this.temporary_channel_id = temporary_channel_id; this.channel_value_satoshis = channel_value_satoshis; this.output_script = output_script; this.user_channel_id = user_channel_id; }
+               }
+               public final static class PaymentReceived extends LDKEvent {
+                       public byte[] payment_hash;
+                       public byte[] payment_secret;
+                       public long amt;
+                       PaymentReceived(byte[] payment_hash, byte[] payment_secret, long amt) { this.payment_hash = payment_hash; this.payment_secret = payment_secret; this.amt = amt; }
+               }
+               public final static class PaymentSent extends LDKEvent {
+                       public byte[] payment_preimage;
+                       PaymentSent(byte[] payment_preimage) { this.payment_preimage = payment_preimage; }
+               }
+               public final static class PaymentFailed extends LDKEvent {
+                       public byte[] payment_hash;
+                       public boolean rejected_by_dest;
+                       PaymentFailed(byte[] payment_hash, boolean rejected_by_dest) { this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; }
+               }
+               public final static class PendingHTLCsForwardable extends LDKEvent {
+                       public long time_forwardable;
+                       PendingHTLCsForwardable(long time_forwardable) { this.time_forwardable = time_forwardable; }
+               }
+               public final static class SpendableOutputs extends LDKEvent {
+                       public long[] outputs;
+                       SpendableOutputs(long[] outputs) { this.outputs = outputs; }
+               }
+               static native void init();
+       }
+       static { LDKEvent.init(); }
+       public static native LDKEvent LDKEvent_ref_from_ptr(long ptr);
+       public static native long LDKCVec_EventZ_new(long[] elems);
+       public static native long LDKC2Tuple_usizeTransactionZ_new(long a, byte[] b);
+       public static native long LDKC2Tuple_usizeTransactionZ_get_a(long ptr);
+       public static native byte[] LDKC2Tuple_usizeTransactionZ_get_b(long ptr);
+       public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(long[] elems);
+       public static native long LDKC2Tuple_u32TxOutZ_new(int a, long b);
+       public static native int LDKC2Tuple_u32TxOutZ_get_a(long ptr);
+       public static native long LDKC2Tuple_u32TxOutZ_get_b(long ptr);
+       public static native long LDKCVec_C2Tuple_u32TxOutZZ_new(long[] elems);
+       public static native long LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(byte[] a, long[] b);
+       public static native byte[] LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(long ptr);
+       public static native long[] LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(long ptr);
+       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_new(long[] elems);
+       public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg);
+       public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg);
+       public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg);
+       public static native long LDKC2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, byte[][] b);
+       public static native byte[] LDKC2Tuple_SignatureCVec_SignatureZZ_get_a(long ptr);
+       public static native byte[][] LDKC2Tuple_SignatureCVec_SignatureZZ_get_b(long ptr);
+       public static native boolean LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok(long arg);
+       public static native long LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(long arg);
+       public static native void LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(long arg);
+       public static native boolean LDKCResult_SignatureNoneZ_result_ok(long arg);
+       public static native byte[] LDKCResult_SignatureNoneZ_get_ok(long arg);
+       public static native void LDKCResult_SignatureNoneZ_get_err(long arg);
+       public interface LDKBaseSign {
+                byte[] get_per_commitment_point(long idx);
+                byte[] release_commitment_secret(long idx);
+                byte[] channel_keys_id();
+                long sign_counterparty_commitment(long commitment_tx);
+                long sign_holder_commitment_and_htlcs(long commitment_tx);
+                long sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, long htlc);
+                long sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, long htlc);
+                long sign_closing_transaction(byte[] closing_tx);
+                long sign_channel_announcement(long msg);
+                void ready_channel(long channel_parameters);
+       }
+       public static native long LDKBaseSign_new(LDKBaseSign impl, long pubkeys);
+       // LDKPublicKey BaseSign_get_per_commitment_point LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
+       public static native byte[] BaseSign_get_per_commitment_point(long this_arg, long idx);
+       // LDKThirtyTwoBytes BaseSign_release_commitment_secret LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
+       public static native byte[] BaseSign_release_commitment_secret(long this_arg, long idx);
+       // LDKThirtyTwoBytes BaseSign_channel_keys_id LDKBaseSign *NONNULL_PTR this_arg
+       public static native byte[] BaseSign_channel_keys_id(long this_arg);
+       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_counterparty_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx
+       public static native long BaseSign_sign_counterparty_commitment(long this_arg, long commitment_tx);
+       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_holder_commitment_and_htlcs LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx
+       public static native long BaseSign_sign_holder_commitment_and_htlcs(long this_arg, long commitment_tx);
+       // LDKCResult_SignatureNoneZ BaseSign_sign_justice_transaction LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
+       public static native long BaseSign_sign_justice_transaction(long this_arg, byte[] justice_tx, long input, long amount, byte[] per_commitment_key, long htlc);
+       // LDKCResult_SignatureNoneZ BaseSign_sign_counterparty_htlc_transaction LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
+       public static native long BaseSign_sign_counterparty_htlc_transaction(long this_arg, byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, long htlc);
+       // LDKCResult_SignatureNoneZ BaseSign_sign_closing_transaction LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction closing_tx
+       public static native long BaseSign_sign_closing_transaction(long this_arg, byte[] closing_tx);
+       // LDKCResult_SignatureNoneZ BaseSign_sign_channel_announcement LDKBaseSign *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg
+       public static native long BaseSign_sign_channel_announcement(long this_arg, long msg);
+       // void BaseSign_ready_channel LDKBaseSign *NONNULL_PTR this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters
+       public static native void BaseSign_ready_channel(long this_arg, long channel_parameters);
+       // LDKChannelPublicKeys BaseSign_get_pubkeys LDKBaseSign *NONNULL_PTR this_arg
+       public static native long BaseSign_get_pubkeys(long this_arg);
+       public interface LDKSign {
+                byte[] write();
+       }
+       public static native long LDKSign_new(LDKSign impl, LDKBaseSign BaseSign, long pubkeys);
+       // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
+       public static native byte[] Sign_write(long this_arg);
+       public static native long LDKC2Tuple_BlockHashChannelMonitorZ_new(byte[] a, long b);
+       public static native byte[] LDKC2Tuple_BlockHashChannelMonitorZ_get_a(long ptr);
+       public static native long LDKC2Tuple_BlockHashChannelMonitorZ_get_b(long ptr);
+       public static native boolean LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long arg);
+       public static native long LDKCVec_RouteHopZ_new(long[] elems);
+       public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_RouteDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_RouteDecodeErrorZ_get_err(long arg);
+       public static class LDKCOption_u64Z {
+               private LDKCOption_u64Z() {}
+               public final static class Some extends LDKCOption_u64Z {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_u64Z {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_u64Z.init(); }
+       public static native LDKCOption_u64Z LDKCOption_u64Z_ref_from_ptr(long ptr);
+       public static native long LDKCVec_ChannelDetailsZ_new(long[] elems);
+       public static native long LDKCVec_RouteHintZ_new(long[] elems);
+       public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg);
+       public static native long LDKCResult_RouteLightningErrorZ_get_ok(long arg);
+       public static native long LDKCResult_RouteLightningErrorZ_get_err(long arg);
        public static class LDKErrorAction {
                private LDKErrorAction() {}
                public final static class DisconnectPeer extends LDKErrorAction {
@@ -202,6 +407,11 @@ public class bindings {
                        public long msg;
                        SendShortIdsQuery(byte[] node_id, long msg) { this.node_id = node_id; this.msg = msg; }
                }
+               public final static class SendReplyChannelRange extends LDKMessageSendEvent {
+                       public byte[] node_id;
+                       public long msg;
+                       SendReplyChannelRange(byte[] node_id, long msg) { this.node_id = node_id; this.msg = msg; }
+               }
                static native void init();
        }
        static { LDKMessageSendEvent.init(); }
@@ -228,21 +438,22 @@ public class bindings {
        public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg);
        public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg);
        public static native long LDKCResult_boolPeerHandleErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_InitFeaturesDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_InvoiceFeaturesDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelConfigDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_TxOutAccessErrorZ_result_ok(long arg);
+       public static native long LDKCResult_TxOutAccessErrorZ_get_ok(long arg);
+       public static native LDKAccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg);
+       public static class LDKCOption_C2Tuple_usizeTransactionZZ {
+               private LDKCOption_C2Tuple_usizeTransactionZZ() {}
+               public final static class Some extends LDKCOption_C2Tuple_usizeTransactionZZ {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_C2Tuple_usizeTransactionZZ {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_C2Tuple_usizeTransactionZZ.init(); }
+       public static native LDKCOption_C2Tuple_usizeTransactionZZ LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(long ptr);
        public static native boolean LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(long arg);
@@ -291,306 +502,18 @@ public class bindings {
        public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg);
-       public static native long LDKC2Tuple_usizeTransactionZ_new(long a, byte[] b);
-       public static native long LDKC2Tuple_usizeTransactionZ_get_a(long ptr);
-       public static native byte[] LDKC2Tuple_usizeTransactionZ_get_b(long ptr);
-       public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(long[] elems);
-       public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg);
-       public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg);
-       public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg);
-       public static class LDKMonitorEvent {
-               private LDKMonitorEvent() {}
-               public final static class HTLCEvent extends LDKMonitorEvent {
-                       HTLCEvent() { }
-               }
-               public final static class CommitmentTxBroadcasted extends LDKMonitorEvent {
-                       CommitmentTxBroadcasted() { }
-               }
-               static native void init();
-       }
-       static { LDKMonitorEvent.init(); }
-       public static native LDKMonitorEvent LDKMonitorEvent_ref_from_ptr(long ptr);
-       public static native long LDKCVec_MonitorEventZ_new(long[] elems);
-       public static class LDKSpendableOutputDescriptor {
-               private LDKSpendableOutputDescriptor() {}
-               public final static class StaticOutput extends LDKSpendableOutputDescriptor {
-                       public long outpoint;
-                       public long output;
-                       StaticOutput(long outpoint, long output) { this.outpoint = outpoint; this.output = output; }
-               }
-               public final static class DelayedPaymentOutput extends LDKSpendableOutputDescriptor {
-                       DelayedPaymentOutput() { }
-               }
-               public final static class StaticPaymentOutput extends LDKSpendableOutputDescriptor {
-                       StaticPaymentOutput() { }
-               }
-               static native void init();
-       }
-       static { LDKSpendableOutputDescriptor.init(); }
-       public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr);
-       public static native long LDKCVec_SpendableOutputDescriptorZ_new(long[] elems);
-       public static class LDKEvent {
-               private LDKEvent() {}
-               public final static class FundingGenerationReady extends LDKEvent {
-                       public byte[] temporary_channel_id;
-                       public long channel_value_satoshis;
-                       public byte[] output_script;
-                       public long user_channel_id;
-                       FundingGenerationReady(byte[] temporary_channel_id, long channel_value_satoshis, byte[] output_script, long user_channel_id) { this.temporary_channel_id = temporary_channel_id; this.channel_value_satoshis = channel_value_satoshis; this.output_script = output_script; this.user_channel_id = user_channel_id; }
-               }
-               public final static class FundingBroadcastSafe extends LDKEvent {
-                       public long funding_txo;
-                       public long user_channel_id;
-                       FundingBroadcastSafe(long funding_txo, long user_channel_id) { this.funding_txo = funding_txo; this.user_channel_id = user_channel_id; }
-               }
-               public final static class PaymentReceived extends LDKEvent {
-                       public byte[] payment_hash;
-                       public byte[] payment_secret;
-                       public long amt;
-                       PaymentReceived(byte[] payment_hash, byte[] payment_secret, long amt) { this.payment_hash = payment_hash; this.payment_secret = payment_secret; this.amt = amt; }
-               }
-               public final static class PaymentSent extends LDKEvent {
-                       public byte[] payment_preimage;
-                       PaymentSent(byte[] payment_preimage) { this.payment_preimage = payment_preimage; }
-               }
-               public final static class PaymentFailed extends LDKEvent {
-                       public byte[] payment_hash;
-                       public boolean rejected_by_dest;
-                       PaymentFailed(byte[] payment_hash, boolean rejected_by_dest) { this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; }
-               }
-               public final static class PendingHTLCsForwardable extends LDKEvent {
-                       public long time_forwardable;
-                       PendingHTLCsForwardable(long time_forwardable) { this.time_forwardable = time_forwardable; }
-               }
-               public final static class SpendableOutputs extends LDKEvent {
-                       public long[] outputs;
-                       SpendableOutputs(long[] outputs) { this.outputs = outputs; }
-               }
-               static native void init();
-       }
-       static { LDKEvent.init(); }
-       public static native LDKEvent LDKEvent_ref_from_ptr(long ptr);
-       public static native long LDKCVec_EventZ_new(long[] elems);
-       public static native boolean LDKCResult_OutPointDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_OutPointDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_OutPointDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneMonitorUpdateErrorZ_result_ok(long arg);
-       public static native void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg);
-       public static native long LDKC2Tuple_OutPointScriptZ_new(long a, byte[] b);
-       public static native long LDKC2Tuple_OutPointScriptZ_get_a(long ptr);
-       public static native byte[] LDKC2Tuple_OutPointScriptZ_get_b(long ptr);
-       public static native long LDKC2Tuple_u32ScriptZ_new(int a, byte[] b);
-       public static native int LDKC2Tuple_u32ScriptZ_get_a(long ptr);
-       public static native byte[] LDKC2Tuple_u32ScriptZ_get_b(long ptr);
-       public static native long LDKCVec_C2Tuple_u32ScriptZZ_new(long[] elems);
-       public static native long LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(byte[] a, long[] b);
-       public static native byte[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long ptr);
-       public static native long[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long ptr);
-       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_new(long[] elems);
-       public static native long LDKC2Tuple_u32TxOutZ_new(int a, long b);
-       public static native int LDKC2Tuple_u32TxOutZ_get_a(long ptr);
-       public static native long LDKC2Tuple_u32TxOutZ_get_b(long ptr);
-       public static native long LDKCVec_C2Tuple_u32TxOutZZ_new(long[] elems);
-       public static native long LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(byte[] a, long[] b);
-       public static native byte[] LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(long ptr);
-       public static native long[] LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(long ptr);
-       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_new(long[] elems);
-       public static native long LDKC2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, byte[][] b);
-       public static native byte[] LDKC2Tuple_SignatureCVec_SignatureZZ_get_a(long ptr);
-       public static native byte[][] LDKC2Tuple_SignatureCVec_SignatureZZ_get_b(long ptr);
-       public static native boolean LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok(long arg);
-       public static native long LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(long arg);
-       public static native void LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_SignatureNoneZ_result_ok(long arg);
-       public static native byte[] LDKCResult_SignatureNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SignatureNoneZ_get_err(long arg);
-       public interface LDKSign {
-                byte[] get_per_commitment_point(long idx);
-                byte[] release_commitment_secret(long idx);
-                byte[] channel_keys_id();
-                long sign_counterparty_commitment(long commitment_tx);
-                long sign_holder_commitment_and_htlcs(long commitment_tx);
-                long sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, long htlc);
-                long sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, long htlc);
-                long sign_closing_transaction(byte[] closing_tx);
-                long sign_channel_announcement(long msg);
-                void ready_channel(long channel_parameters);
-                byte[] write();
-       }
-       public static native long LDKSign_new(LDKSign impl, long pubkeys);
-       // LDKPublicKey Sign_get_per_commitment_point LDKSign *NONNULL_PTR this_arg, uint64_t idx
-       public static native byte[] Sign_get_per_commitment_point(long this_arg, long idx);
-       // LDKThirtyTwoBytes Sign_release_commitment_secret LDKSign *NONNULL_PTR this_arg, uint64_t idx
-       public static native byte[] Sign_release_commitment_secret(long this_arg, long idx);
-       // LDKThirtyTwoBytes Sign_channel_keys_id LDKSign *NONNULL_PTR this_arg
-       public static native byte[] Sign_channel_keys_id(long this_arg);
-       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ Sign_sign_counterparty_commitment LDKSign *NONNULL_PTR this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx
-       public static native long Sign_sign_counterparty_commitment(long this_arg, long commitment_tx);
-       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ Sign_sign_holder_commitment_and_htlcs LDKSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx
-       public static native long Sign_sign_holder_commitment_and_htlcs(long this_arg, long commitment_tx);
-       // LDKCResult_SignatureNoneZ Sign_sign_justice_transaction LDKSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
-       public static native long Sign_sign_justice_transaction(long this_arg, byte[] justice_tx, long input, long amount, byte[] per_commitment_key, long htlc);
-       // LDKCResult_SignatureNoneZ Sign_sign_counterparty_htlc_transaction LDKSign *NONNULL_PTR this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
-       public static native long Sign_sign_counterparty_htlc_transaction(long this_arg, byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, long htlc);
-       // LDKCResult_SignatureNoneZ Sign_sign_closing_transaction LDKSign *NONNULL_PTR this_arg, struct LDKTransaction closing_tx
-       public static native long Sign_sign_closing_transaction(long this_arg, byte[] closing_tx);
-       // LDKCResult_SignatureNoneZ Sign_sign_channel_announcement LDKSign *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg
-       public static native long Sign_sign_channel_announcement(long this_arg, long msg);
-       // void Sign_ready_channel LDKSign *NONNULL_PTR this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters
-       public static native void Sign_ready_channel(long this_arg, long channel_parameters);
-       // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
-       public static native byte[] Sign_write(long this_arg);
-       // LDKChannelPublicKeys Sign_get_pubkeys LDKSign *NONNULL_PTR this_arg
-       public static native long Sign_get_pubkeys(long this_arg);
-       public static native long LDKC2Tuple_BlockHashChannelMonitorZ_new(byte[] a, long b);
-       public static native byte[] LDKC2Tuple_BlockHashChannelMonitorZ_get_a(long ptr);
-       public static native long LDKC2Tuple_BlockHashChannelMonitorZ_get_b(long ptr);
-       public static native boolean LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TxOutAccessErrorZ_result_ok(long arg);
-       public static native long LDKCResult_TxOutAccessErrorZ_get_ok(long arg);
-       public static native LDKAccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg);
-       public static class LDKAPIError {
-               private LDKAPIError() {}
-               public final static class APIMisuseError extends LDKAPIError {
-                       public byte[] err;
-                       APIMisuseError(byte[] err) { this.err = err; }
-               }
-               public final static class FeeRateTooHigh extends LDKAPIError {
-                       public byte[] err;
-                       public int feerate;
-                       FeeRateTooHigh(byte[] err, int feerate) { this.err = err; this.feerate = feerate; }
-               }
-               public final static class RouteError extends LDKAPIError {
-                       public String err;
-                       RouteError(String err) { this.err = err; }
-               }
-               public final static class ChannelUnavailable extends LDKAPIError {
-                       public byte[] err;
-                       ChannelUnavailable(byte[] err) { this.err = err; }
-               }
-               public final static class MonitorUpdateFailed extends LDKAPIError {
-                       MonitorUpdateFailed() { }
-               }
-               static native void init();
-       }
-       static { LDKAPIError.init(); }
-       public static native LDKAPIError LDKAPIError_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_NoneAPIErrorZ_result_ok(long arg);
-       public static native void LDKCResult_NoneAPIErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NoneAPIErrorZ_get_err(long arg);
-       public static native long LDKCVec_CResult_NoneAPIErrorZZ_new(long[] elems);
-       public static native long LDKCVec_APIErrorZ_new(long[] elems);
-       public static native long LDKCVec_ChannelDetailsZ_new(long[] elems);
-       public static class LDKPaymentSendFailure {
-               private LDKPaymentSendFailure() {}
-               public final static class ParameterError extends LDKPaymentSendFailure {
-                       ParameterError() { }
-               }
-               public final static class PathParameterError extends LDKPaymentSendFailure {
-                       PathParameterError() { }
-               }
-               public final static class AllFailedRetrySafe extends LDKPaymentSendFailure {
-                       AllFailedRetrySafe() { }
-               }
-               public final static class PartialFailure extends LDKPaymentSendFailure {
-                       PartialFailure() { }
-               }
-               static native void init();
-       }
-       static { LDKPaymentSendFailure.init(); }
-       public static native LDKPaymentSendFailure LDKPaymentSendFailure_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg);
-       public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
-       public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
-       public static native long LDKCVec_ChannelMonitorZ_new(long[] elems);
-       public interface LDKWatch {
-                long watch_channel(long funding_txo, long monitor);
-                long update_channel(long funding_txo, long update);
-                long[] release_pending_monitor_events();
-       }
-       public static native long LDKWatch_new(LDKWatch impl);
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_watch_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor
-       public static native long Watch_watch_channel(long this_arg, long funding_txo, long monitor);
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_update_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update
-       public static native long Watch_update_channel(long this_arg, long funding_txo, long update);
-       // LDKCVec_MonitorEventZ Watch_release_pending_monitor_events LDKWatch *NONNULL_PTR this_arg
-       public static native long[] Watch_release_pending_monitor_events(long this_arg);
-       public interface LDKBroadcasterInterface {
-                void broadcast_transaction(byte[] tx);
-       }
-       public static native long LDKBroadcasterInterface_new(LDKBroadcasterInterface impl);
-       // void BroadcasterInterface_broadcast_transaction LDKBroadcasterInterface *NONNULL_PTR this_arg, struct LDKTransaction tx
-       public static native void BroadcasterInterface_broadcast_transaction(long this_arg, byte[] tx);
-       public static native boolean LDKCResult_SignDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_SignDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_SignDecodeErrorZ_get_err(long arg);
-       public interface LDKKeysInterface {
-                byte[] get_node_secret();
-                byte[] get_destination_script();
-                byte[] get_shutdown_pubkey();
-                long get_channel_signer(boolean inbound, long channel_value_satoshis);
-                byte[] get_secure_random_bytes();
-                long read_chan_signer(byte[] reader);
-       }
-       public static native long LDKKeysInterface_new(LDKKeysInterface impl);
-       // LDKSecretKey KeysInterface_get_node_secret LDKKeysInterface *NONNULL_PTR this_arg
-       public static native byte[] KeysInterface_get_node_secret(long this_arg);
-       // LDKCVec_u8Z KeysInterface_get_destination_script LDKKeysInterface *NONNULL_PTR this_arg
-       public static native byte[] KeysInterface_get_destination_script(long this_arg);
-       // LDKPublicKey KeysInterface_get_shutdown_pubkey LDKKeysInterface *NONNULL_PTR this_arg
-       public static native byte[] KeysInterface_get_shutdown_pubkey(long this_arg);
-       // LDKSign KeysInterface_get_channel_signer LDKKeysInterface *NONNULL_PTR this_arg, bool inbound, uint64_t channel_value_satoshis
-       public static native long KeysInterface_get_channel_signer(long this_arg, boolean inbound, long channel_value_satoshis);
-       // LDKThirtyTwoBytes KeysInterface_get_secure_random_bytes LDKKeysInterface *NONNULL_PTR this_arg
-       public static native byte[] KeysInterface_get_secure_random_bytes(long this_arg);
-       // LDKCResult_SignDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface *NONNULL_PTR this_arg, struct LDKu8slice reader
-       public static native long KeysInterface_read_chan_signer(long this_arg, byte[] reader);
-       public interface LDKFeeEstimator {
-                int get_est_sat_per_1000_weight(LDKConfirmationTarget confirmation_target);
-       }
-       public static native long LDKFeeEstimator_new(LDKFeeEstimator impl);
-       // uint32_t FeeEstimator_get_est_sat_per_1000_weight LDKFeeEstimator *NONNULL_PTR this_arg, enum LDKConfirmationTarget confirmation_target
-       public static native int FeeEstimator_get_est_sat_per_1000_weight(long this_arg, LDKConfirmationTarget confirmation_target);
-       public interface LDKLogger {
-                void log(String record);
-       }
-       public static native long LDKLogger_new(LDKLogger impl);
-       public static native long LDKC2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b);
-       public static native byte[] LDKC2Tuple_BlockHashChannelManagerZ_get_a(long ptr);
-       public static native long LDKC2Tuple_BlockHashChannelManagerZ_get_b(long ptr);
-       public static native boolean LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_CVec_CVec_u8ZZNoneZ_result_ok(long arg);
-       public static native byte[][] LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(long arg);
-       public static native void LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_InMemorySignerDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_TxOutZ_new(long[] elems);
-       public static native boolean LDKCResult_TransactionNoneZ_result_ok(long arg);
-       public static native byte[] LDKCResult_TransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TransactionNoneZ_get_err(long arg);
-       public static native long LDKCVec_RouteHopZ_new(long[] elems);
-       public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg);
-       public static native long LDKCResult_RouteDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_RouteHintZ_new(long[] elems);
-       public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg);
-       public static native long LDKCResult_RouteLightningErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteLightningErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_InitFeaturesDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_InvoiceFeaturesDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(long arg);
        public static native boolean LDKCResult_NetAddressu8Z_result_ok(long arg);
        public static native long LDKCResult_NetAddressu8Z_get_ok(long arg);
        public static native byte LDKCResult_NetAddressu8Z_get_err(long arg);
@@ -694,24 +617,159 @@ public class bindings {
        public static native boolean LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg);
-       public interface LDKMessageSendEventsProvider {
-                long[] get_and_clear_pending_msg_events();
-       }
-       public static native long LDKMessageSendEventsProvider_new(LDKMessageSendEventsProvider impl);
-       // LDKCVec_MessageSendEventZ MessageSendEventsProvider_get_and_clear_pending_msg_events LDKMessageSendEventsProvider *NONNULL_PTR this_arg
-       public static native long[] MessageSendEventsProvider_get_and_clear_pending_msg_events(long this_arg);
-       public interface LDKEventsProvider {
-                long[] get_and_clear_pending_events();
-       }
-       public static native long LDKEventsProvider_new(LDKEventsProvider impl);
-       // LDKCVec_EventZ EventsProvider_get_and_clear_pending_events LDKEventsProvider *NONNULL_PTR this_arg
-       public static native long[] EventsProvider_get_and_clear_pending_events(long this_arg);
-       public interface LDKAccess {
-                long get_utxo(byte[] genesis_hash, long short_channel_id);
+       public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_SignDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_SignDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_SignDecodeErrorZ_get_err(long arg);
+       public static native boolean LDKCResult_CVec_CVec_u8ZZNoneZ_result_ok(long arg);
+       public static native byte[][] LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(long arg);
+       public static native void LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(long arg);
+       public static native boolean LDKCResult_InMemorySignerDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_err(long arg);
+       public static native long LDKCVec_TxOutZ_new(long[] elems);
+       public static native boolean LDKCResult_TransactionNoneZ_result_ok(long arg);
+       public static native byte[] LDKCResult_TransactionNoneZ_get_ok(long arg);
+       public static native void LDKCResult_TransactionNoneZ_get_err(long arg);
+       public static native boolean LDKCResult_NoneErrorZ_result_ok(long arg);
+       public static native void LDKCResult_NoneErrorZ_get_ok(long arg);
+       public static native LDKIOError LDKCResult_NoneErrorZ_get_err(long arg);
+       public static native long LDKCVec_C2Tuple_BlockHashChannelMonitorZZ_new(long[] elems);
+       public static native boolean LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_result_ok(long arg);
+       public static native long[] LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(long arg);
+       public static native LDKIOError LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(long arg);
+       public static class LDKAPIError {
+               private LDKAPIError() {}
+               public final static class APIMisuseError extends LDKAPIError {
+                       public byte[] err;
+                       APIMisuseError(byte[] err) { this.err = err; }
+               }
+               public final static class FeeRateTooHigh extends LDKAPIError {
+                       public byte[] err;
+                       public int feerate;
+                       FeeRateTooHigh(byte[] err, int feerate) { this.err = err; this.feerate = feerate; }
+               }
+               public final static class RouteError extends LDKAPIError {
+                       public String err;
+                       RouteError(String err) { this.err = err; }
+               }
+               public final static class ChannelUnavailable extends LDKAPIError {
+                       public byte[] err;
+                       ChannelUnavailable(byte[] err) { this.err = err; }
+               }
+               public final static class MonitorUpdateFailed extends LDKAPIError {
+                       MonitorUpdateFailed() { }
+               }
+               static native void init();
        }
-       public static native long LDKAccess_new(LDKAccess impl);
-       // LDKCResult_TxOutAccessErrorZ Access_get_utxo LDKAccess *NONNULL_PTR this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id
-       public static native long Access_get_utxo(long this_arg, byte[] genesis_hash, long short_channel_id);
+       static { LDKAPIError.init(); }
+       public static native LDKAPIError LDKAPIError_ref_from_ptr(long ptr);
+       public static native boolean LDKCResult_NoneAPIErrorZ_result_ok(long arg);
+       public static native void LDKCResult_NoneAPIErrorZ_get_ok(long arg);
+       public static native long LDKCResult_NoneAPIErrorZ_get_err(long arg);
+       public static native long LDKCVec_CResult_NoneAPIErrorZZ_new(long[] elems);
+       public static native long LDKCVec_APIErrorZ_new(long[] elems);
+       public static class LDKPaymentSendFailure {
+               private LDKPaymentSendFailure() {}
+               public final static class ParameterError extends LDKPaymentSendFailure {
+                       public long parameter_error;
+                       ParameterError(long parameter_error) { this.parameter_error = parameter_error; }
+               }
+               public final static class PathParameterError extends LDKPaymentSendFailure {
+                       public long[] path_parameter_error;
+                       PathParameterError(long[] path_parameter_error) { this.path_parameter_error = path_parameter_error; }
+               }
+               public final static class AllFailedRetrySafe extends LDKPaymentSendFailure {
+                       public long[] all_failed_retry_safe;
+                       AllFailedRetrySafe(long[] all_failed_retry_safe) { this.all_failed_retry_safe = all_failed_retry_safe; }
+               }
+               public final static class PartialFailure extends LDKPaymentSendFailure {
+                       public long[] partial_failure;
+                       PartialFailure(long[] partial_failure) { this.partial_failure = partial_failure; }
+               }
+               static native void init();
+       }
+       static { LDKPaymentSendFailure.init(); }
+       public static native LDKPaymentSendFailure LDKPaymentSendFailure_ref_from_ptr(long ptr);
+       public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg);
+       public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
+       public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
+       public static native long LDKCVec_ChannelMonitorZ_new(long[] elems);
+       public interface LDKWatch {
+                long watch_channel(long funding_txo, long monitor);
+                long update_channel(long funding_txo, long update);
+                long[] release_pending_monitor_events();
+       }
+       public static native long LDKWatch_new(LDKWatch impl);
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_watch_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor
+       public static native long Watch_watch_channel(long this_arg, long funding_txo, long monitor);
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_update_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update
+       public static native long Watch_update_channel(long this_arg, long funding_txo, long update);
+       // LDKCVec_MonitorEventZ Watch_release_pending_monitor_events LDKWatch *NONNULL_PTR this_arg
+       public static native long[] Watch_release_pending_monitor_events(long this_arg);
+       public interface LDKBroadcasterInterface {
+                void broadcast_transaction(byte[] tx);
+       }
+       public static native long LDKBroadcasterInterface_new(LDKBroadcasterInterface impl);
+       // void BroadcasterInterface_broadcast_transaction LDKBroadcasterInterface *NONNULL_PTR this_arg, struct LDKTransaction tx
+       public static native void BroadcasterInterface_broadcast_transaction(long this_arg, byte[] tx);
+       public interface LDKKeysInterface {
+                byte[] get_node_secret();
+                byte[] get_destination_script();
+                byte[] get_shutdown_pubkey();
+                long get_channel_signer(boolean inbound, long channel_value_satoshis);
+                byte[] get_secure_random_bytes();
+                long read_chan_signer(byte[] reader);
+       }
+       public static native long LDKKeysInterface_new(LDKKeysInterface impl);
+       // LDKSecretKey KeysInterface_get_node_secret LDKKeysInterface *NONNULL_PTR this_arg
+       public static native byte[] KeysInterface_get_node_secret(long this_arg);
+       // LDKCVec_u8Z KeysInterface_get_destination_script LDKKeysInterface *NONNULL_PTR this_arg
+       public static native byte[] KeysInterface_get_destination_script(long this_arg);
+       // LDKPublicKey KeysInterface_get_shutdown_pubkey LDKKeysInterface *NONNULL_PTR this_arg
+       public static native byte[] KeysInterface_get_shutdown_pubkey(long this_arg);
+       // LDKSign KeysInterface_get_channel_signer LDKKeysInterface *NONNULL_PTR this_arg, bool inbound, uint64_t channel_value_satoshis
+       public static native long KeysInterface_get_channel_signer(long this_arg, boolean inbound, long channel_value_satoshis);
+       // LDKThirtyTwoBytes KeysInterface_get_secure_random_bytes LDKKeysInterface *NONNULL_PTR this_arg
+       public static native byte[] KeysInterface_get_secure_random_bytes(long this_arg);
+       // LDKCResult_SignDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface *NONNULL_PTR this_arg, struct LDKu8slice reader
+       public static native long KeysInterface_read_chan_signer(long this_arg, byte[] reader);
+       public interface LDKFeeEstimator {
+                int get_est_sat_per_1000_weight(LDKConfirmationTarget confirmation_target);
+       }
+       public static native long LDKFeeEstimator_new(LDKFeeEstimator impl);
+       // uint32_t FeeEstimator_get_est_sat_per_1000_weight LDKFeeEstimator *NONNULL_PTR this_arg, enum LDKConfirmationTarget confirmation_target
+       public static native int FeeEstimator_get_est_sat_per_1000_weight(long this_arg, LDKConfirmationTarget confirmation_target);
+       public interface LDKLogger {
+                void log(String record);
+       }
+       public static native long LDKLogger_new(LDKLogger impl);
+       public static native long LDKC2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b);
+       public static native byte[] LDKC2Tuple_BlockHashChannelManagerZ_get_a(long ptr);
+       public static native long LDKC2Tuple_BlockHashChannelManagerZ_get_b(long ptr);
+       public static native boolean LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(long arg);
+       public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long arg);
+       public interface LDKMessageSendEventsProvider {
+                long[] get_and_clear_pending_msg_events();
+       }
+       public static native long LDKMessageSendEventsProvider_new(LDKMessageSendEventsProvider impl);
+       // LDKCVec_MessageSendEventZ MessageSendEventsProvider_get_and_clear_pending_msg_events LDKMessageSendEventsProvider *NONNULL_PTR this_arg
+       public static native long[] MessageSendEventsProvider_get_and_clear_pending_msg_events(long this_arg);
+       public interface LDKEventsProvider {
+                long[] get_and_clear_pending_events();
+       }
+       public static native long LDKEventsProvider_new(LDKEventsProvider impl);
+       // LDKCVec_EventZ EventsProvider_get_and_clear_pending_events LDKEventsProvider *NONNULL_PTR this_arg
+       public static native long[] EventsProvider_get_and_clear_pending_events(long this_arg);
+       public interface LDKAccess {
+                long get_utxo(byte[] genesis_hash, long short_channel_id);
+       }
+       public static native long LDKAccess_new(LDKAccess impl);
+       // LDKCResult_TxOutAccessErrorZ Access_get_utxo LDKAccess *NONNULL_PTR this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id
+       public static native long Access_get_utxo(long this_arg, byte[] genesis_hash, long short_channel_id);
        public interface LDKListen {
                 void block_connected(byte[] block, int height);
                 void block_disconnected(byte[] header, int height);
@@ -723,13 +781,13 @@ public class bindings {
        public static native void Listen_block_disconnected(long this_arg, byte[] header, int height);
        public interface LDKFilter {
                 void register_tx(byte[] txid, byte[] script_pubkey);
-                void register_output(long outpoint, byte[] script_pubkey);
+                long register_output(long output);
        }
        public static native long LDKFilter_new(LDKFilter impl);
        // void Filter_register_tx LDKFilter *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey
        public static native void Filter_register_tx(long this_arg, byte[] txid, byte[] script_pubkey);
-       // void Filter_register_output LDKFilter *NONNULL_PTR this_arg, const struct LDKOutPoint *NONNULL_PTR outpoint, struct LDKu8slice script_pubkey
-       public static native void Filter_register_output(long this_arg, long outpoint, byte[] script_pubkey);
+       // LDKCOption_C2Tuple_usizeTransactionZZ Filter_register_output LDKFilter *NONNULL_PTR this_arg, struct LDKWatchedOutput output
+       public static native long Filter_register_output(long this_arg, long output);
        public interface LDKPersist {
                 long persist_new_channel(long id, long data);
                 long update_persisted_channel(long id, long update, long data);
@@ -758,6 +816,7 @@ public class bindings {
                 void peer_disconnected(byte[] their_node_id, boolean no_connection_possible);
                 void peer_connected(byte[] their_node_id, long msg);
                 void handle_channel_reestablish(byte[] their_node_id, long msg);
+                void handle_channel_update(byte[] their_node_id, long msg);
                 void handle_error(byte[] their_node_id, long msg);
        }
        public static native long LDKChannelMessageHandler_new(LDKChannelMessageHandler impl, LDKMessageSendEventsProvider MessageSendEventsProvider);
@@ -797,6 +856,8 @@ public class bindings {
        public static native void ChannelMessageHandler_peer_connected(long this_arg, byte[] their_node_id, long msg);
        // void ChannelMessageHandler_handle_channel_reestablish LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg
        public static native void ChannelMessageHandler_handle_channel_reestablish(long this_arg, byte[] their_node_id, long msg);
+       // void ChannelMessageHandler_handle_channel_update LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg
+       public static native void ChannelMessageHandler_handle_channel_update(long this_arg, byte[] their_node_id, long msg);
        // void ChannelMessageHandler_handle_error LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg
        public static native void ChannelMessageHandler_handle_error(long this_arg, byte[] their_node_id, long msg);
        public interface LDKRoutingMessageHandler {
@@ -854,6 +915,22 @@ public class bindings {
        public static native void TxOut_free(long _res);
        // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
        public static native long TxOut_clone(long orig);
+       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
+       public static native long CResult_ChannelConfigDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelConfigDecodeErrorZ_err(long e);
+       // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
+       public static native void CResult_ChannelConfigDecodeErrorZ_free(long _res);
+       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ChannelConfigDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
+       public static native long CResult_OutPointDecodeErrorZ_ok(long o);
+       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_OutPointDecodeErrorZ_err(long e);
+       // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
+       public static native void CResult_OutPointDecodeErrorZ_free(long _res);
+       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_OutPointDecodeErrorZ_clone(long orig);
        // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
        public static native long CResult_SecretKeyErrorZ_ok(byte[] o);
        // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
@@ -888,6 +965,14 @@ public class bindings {
        public static native long CResult_TxCreationKeysErrorZ_err(LDKSecp256k1Error e);
        // void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
        public static native void CResult_TxCreationKeysErrorZ_free(long _res);
+       // struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
+       public static native long COption_u32Z_some(int o);
+       // struct LDKCOption_u32Z COption_u32Z_none(void);
+       public static native long COption_u32Z_none();
+       // void COption_u32Z_free(struct LDKCOption_u32Z _res);
+       public static native void COption_u32Z_free(long _res);
+       // struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
+       public static native long COption_u32Z_clone(long orig);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(long o);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
@@ -952,172 +1037,6 @@ public class bindings {
        public static native void CResult_CVec_SignatureZNoneZ_free(long _res);
        // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
        public static native long CResult_CVec_SignatureZNoneZ_clone(long orig);
-       // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
-       public static native void CVec_MessageSendEventZ_free(long[] _res);
-       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
-       public static native long CResult_boolLightningErrorZ_ok(boolean o);
-       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
-       public static native long CResult_boolLightningErrorZ_err(long e);
-       // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
-       public static native void CResult_boolLightningErrorZ_free(long _res);
-       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
-       public static native long CResult_boolLightningErrorZ_clone(long orig);
-       // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
-       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(long orig);
-       // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
-       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c);
-       // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
-       public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long _res);
-       // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
-       public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long[] _res);
-       // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
-       public static native void CVec_NodeAnnouncementZ_free(long[] _res);
-       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
-       public static native long CResult_NoneLightningErrorZ_ok();
-       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
-       public static native long CResult_NoneLightningErrorZ_err(long e);
-       // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
-       public static native void CResult_NoneLightningErrorZ_free(long _res);
-       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NoneLightningErrorZ_clone(long orig);
-       // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
-       public static native void CVec_PublicKeyZ_free(byte[][] _res);
-       // void CVec_u8Z_free(struct LDKCVec_u8Z _res);
-       public static native void CVec_u8Z_free(byte[] _res);
-       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
-       public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(byte[] o);
-       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
-       public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long e);
-       // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
-       public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res);
-       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
-       public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone(long orig);
-       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
-       public static native long CResult_NonePeerHandleErrorZ_ok();
-       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
-       public static native long CResult_NonePeerHandleErrorZ_err(long e);
-       // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
-       public static native void CResult_NonePeerHandleErrorZ_free(long _res);
-       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NonePeerHandleErrorZ_clone(long orig);
-       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
-       public static native long CResult_boolPeerHandleErrorZ_ok(boolean o);
-       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
-       public static native long CResult_boolPeerHandleErrorZ_err(long e);
-       // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
-       public static native void CResult_boolPeerHandleErrorZ_free(long _res);
-       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
-       public static native long CResult_boolPeerHandleErrorZ_clone(long orig);
-       // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
-       public static native long CResult_InitFeaturesDecodeErrorZ_ok(long o);
-       // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_InitFeaturesDecodeErrorZ_err(long e);
-       // void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
-       public static native void CResult_InitFeaturesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
-       public static native long CResult_NodeFeaturesDecodeErrorZ_ok(long o);
-       // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_NodeFeaturesDecodeErrorZ_err(long e);
-       // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
-       public static native void CResult_NodeFeaturesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
-       public static native long CResult_ChannelFeaturesDecodeErrorZ_ok(long o);
-       // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_ChannelFeaturesDecodeErrorZ_err(long e);
-       // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
-       public static native void CResult_ChannelFeaturesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
-       public static native long CResult_InvoiceFeaturesDecodeErrorZ_ok(long o);
-       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_InvoiceFeaturesDecodeErrorZ_err(long e);
-       // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
-       public static native void CResult_InvoiceFeaturesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
-       public static native long CResult_ChannelConfigDecodeErrorZ_ok(long o);
-       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_ChannelConfigDecodeErrorZ_err(long e);
-       // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
-       public static native void CResult_ChannelConfigDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_ChannelConfigDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
-       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_ok(long o);
-       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_err(long e);
-       // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
-       public static native void CResult_DirectionalChannelInfoDecodeErrorZ_free(long _res);
-       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
-       public static native long CResult_ChannelInfoDecodeErrorZ_ok(long o);
-       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_ChannelInfoDecodeErrorZ_err(long e);
-       // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
-       public static native void CResult_ChannelInfoDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_ChannelInfoDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
-       public static native long CResult_RoutingFeesDecodeErrorZ_ok(long o);
-       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_RoutingFeesDecodeErrorZ_err(long e);
-       // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
-       public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_RoutingFeesDecodeErrorZ_clone(long orig);
-       // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
-       public static native void CVec_NetAddressZ_free(long[] _res);
-       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
-       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_ok(long o);
-       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_err(long e);
-       // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
-       public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res);
-       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig);
-       // void CVec_u64Z_free(struct LDKCVec_u64Z _res);
-       public static native void CVec_u64Z_free(long[] _res);
-       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
-       public static native long CResult_NodeInfoDecodeErrorZ_ok(long o);
-       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_NodeInfoDecodeErrorZ_err(long e);
-       // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
-       public static native void CResult_NodeInfoDecodeErrorZ_free(long _res);
-       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
-       public static native long CResult_NetworkGraphDecodeErrorZ_ok(long o);
-       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_NetworkGraphDecodeErrorZ_err(long e);
-       // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
-       public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res);
-       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NetworkGraphDecodeErrorZ_clone(long orig);
-       // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
-       public static native long C2Tuple_usizeTransactionZ_new(long a, byte[] b);
-       // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
-       public static native void C2Tuple_usizeTransactionZ_free(long _res);
-       // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
-       public static native void CVec_C2Tuple_usizeTransactionZZ_free(long[] _res);
-       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
-       public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
-       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
-       public static native long CResult_NoneChannelMonitorUpdateErrZ_err(LDKChannelMonitorUpdateErr e);
-       // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
-       public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long _res);
-       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
-       public static native long CResult_NoneChannelMonitorUpdateErrZ_clone(long orig);
-       // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
-       public static native void CVec_MonitorEventZ_free(long[] _res);
-       // void CVec_EventZ_free(struct LDKCVec_EventZ _res);
-       public static native void CVec_EventZ_free(long[] _res);
-       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
-       public static native long CResult_OutPointDecodeErrorZ_ok(long o);
-       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_OutPointDecodeErrorZ_err(long e);
-       // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
-       public static native void CResult_OutPointDecodeErrorZ_free(long _res);
-       // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_OutPointDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
@@ -1142,14 +1061,10 @@ public class bindings {
        public static native void CResult_NoneMonitorUpdateErrorZ_free(long _res);
        // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneMonitorUpdateErrorZ_clone(long orig);
-       // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
-       public static native long C2Tuple_OutPointScriptZ_clone(long orig);
        // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
        public static native long C2Tuple_OutPointScriptZ_new(long a, byte[] b);
        // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
        public static native void C2Tuple_OutPointScriptZ_free(long _res);
-       // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
-       public static native long C2Tuple_u32ScriptZ_clone(long orig);
        // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
        public static native long C2Tuple_u32ScriptZ_new(int a, byte[] b);
        // void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
@@ -1162,8 +1077,18 @@ public class bindings {
        public static native void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(long _res);
        // void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
        public static native void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(long[] _res);
+       // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
+       public static native void CVec_MonitorEventZ_free(long[] _res);
+       // void CVec_EventZ_free(struct LDKCVec_EventZ _res);
+       public static native void CVec_EventZ_free(long[] _res);
        // void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
        public static native void CVec_TransactionZ_free(byte[][] _res);
+       // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
+       public static native long C2Tuple_usizeTransactionZ_new(long a, byte[] b);
+       // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
+       public static native void C2Tuple_usizeTransactionZ_free(long _res);
+       // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
+       public static native void CVec_C2Tuple_usizeTransactionZZ_free(long[] _res);
        // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
        public static native long C2Tuple_u32TxOutZ_clone(long orig);
        // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
@@ -1178,124 +1103,26 @@ public class bindings {
        public static native void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(long _res);
        // void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res);
        public static native void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(long[] _res);
-       // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
-       public static native long C2Tuple_BlockHashChannelMonitorZ_new(byte[] a, long b);
-       // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
-       public static native void C2Tuple_BlockHashChannelMonitorZ_free(long _res);
-       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
-       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(long o);
-       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(long e);
-       // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
-       public static native void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(long _res);
-       // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
-       public static native void CVec_SpendableOutputDescriptorZ_free(long[] _res);
-       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
-       public static native long CResult_TxOutAccessErrorZ_ok(long o);
-       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
-       public static native long CResult_TxOutAccessErrorZ_err(LDKAccessError e);
-       // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
-       public static native void CResult_TxOutAccessErrorZ_free(long _res);
-       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
-       public static native long CResult_TxOutAccessErrorZ_clone(long orig);
-       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
-       public static native long CResult_NoneAPIErrorZ_ok();
-       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
-       public static native long CResult_NoneAPIErrorZ_err(long e);
-       // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
-       public static native void CResult_NoneAPIErrorZ_free(long _res);
-       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NoneAPIErrorZ_clone(long orig);
-       // void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
-       public static native void CVec_CResult_NoneAPIErrorZZ_free(long[] _res);
-       // void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
-       public static native void CVec_APIErrorZ_free(long[] _res);
-       // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
-       public static native void CVec_ChannelDetailsZ_free(long[] _res);
-       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
-       public static native long CResult_NonePaymentSendFailureZ_ok();
-       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
-       public static native long CResult_NonePaymentSendFailureZ_err(long e);
-       // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
-       public static native void CResult_NonePaymentSendFailureZ_free(long _res);
-       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
-       public static native long CResult_NonePaymentSendFailureZ_clone(long orig);
-       // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
-       public static native void CVec_ChannelMonitorZ_free(long[] _res);
-       // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
-       public static native long C2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b);
-       // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
-       public static native void C2Tuple_BlockHashChannelManagerZ_free(long _res);
-       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
-       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(long o);
-       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(long e);
-       // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
-       public static native void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(long _res);
-       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
-       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_ok(long o);
-       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_err(long e);
-       // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
-       public static native void CResult_SpendableOutputDescriptorDecodeErrorZ_free(long _res);
-       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone(long orig);
-       // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
-       public static native long C2Tuple_SignatureCVec_SignatureZZ_clone(long orig);
-       // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
-       public static native long C2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, byte[][] b);
-       // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
-       public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long _res);
-       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
-       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(long o);
-       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
-       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
-       // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
-       public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long _res);
-       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
-       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(long orig);
-       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
-       public static native long CResult_SignatureNoneZ_ok(byte[] o);
-       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
-       public static native long CResult_SignatureNoneZ_err();
-       // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
-       public static native void CResult_SignatureNoneZ_free(long _res);
-       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
-       public static native long CResult_SignatureNoneZ_clone(long orig);
-       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
-       public static native long CResult_SignDecodeErrorZ_ok(long o);
-       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_SignDecodeErrorZ_err(long e);
-       // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
-       public static native void CResult_SignDecodeErrorZ_free(long _res);
-       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_SignDecodeErrorZ_clone(long orig);
-       // void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
-       public static native void CVec_CVec_u8ZZ_free(byte[][] _res);
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
-       public static native long CResult_CVec_CVec_u8ZZNoneZ_ok(byte[][] o);
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
-       public static native long CResult_CVec_CVec_u8ZZNoneZ_err();
-       // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
-       public static native void CResult_CVec_CVec_u8ZZNoneZ_free(long _res);
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
-       public static native long CResult_CVec_CVec_u8ZZNoneZ_clone(long orig);
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
-       public static native long CResult_InMemorySignerDecodeErrorZ_ok(long o);
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_InMemorySignerDecodeErrorZ_err(long e);
-       // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
-       public static native void CResult_InMemorySignerDecodeErrorZ_free(long _res);
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_InMemorySignerDecodeErrorZ_clone(long orig);
-       // void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
-       public static native void CVec_TxOutZ_free(long[] _res);
-       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
-       public static native long CResult_TransactionNoneZ_ok(byte[] o);
-       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
-       public static native long CResult_TransactionNoneZ_err();
-       // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
-       public static native void CResult_TransactionNoneZ_free(long _res);
+       // void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
+       public static native void CVec_TxidZ_free(byte[][] _res);
+       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
+       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_err(LDKChannelMonitorUpdateErr e);
+       // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
+       public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long _res);
+       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_clone(long orig);
+       // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
+       public static native long C2Tuple_BlockHashChannelMonitorZ_new(byte[] a, long b);
+       // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
+       public static native void C2Tuple_BlockHashChannelMonitorZ_free(long _res);
+       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
+       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(long e);
+       // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
+       public static native void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(long _res);
        // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
        public static native void CVec_RouteHopZ_free(long[] _res);
        // void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
@@ -1308,6 +1135,16 @@ public class bindings {
        public static native void CResult_RouteDecodeErrorZ_free(long _res);
        // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteDecodeErrorZ_clone(long orig);
+       // struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
+       public static native long COption_u64Z_some(long o);
+       // struct LDKCOption_u64Z COption_u64Z_none(void);
+       public static native long COption_u64Z_none();
+       // void COption_u64Z_free(struct LDKCOption_u64Z _res);
+       public static native void COption_u64Z_free(long _res);
+       // struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
+       public static native long COption_u64Z_clone(long orig);
+       // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
+       public static native void CVec_ChannelDetailsZ_free(long[] _res);
        // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
        public static native void CVec_RouteHintZ_free(long[] _res);
        // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
@@ -1318,6 +1155,154 @@ public class bindings {
        public static native void CResult_RouteLightningErrorZ_free(long _res);
        // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteLightningErrorZ_clone(long orig);
+       // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
+       public static native void CVec_MessageSendEventZ_free(long[] _res);
+       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
+       public static native long CResult_boolLightningErrorZ_ok(boolean o);
+       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
+       public static native long CResult_boolLightningErrorZ_err(long e);
+       // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
+       public static native void CResult_boolLightningErrorZ_free(long _res);
+       // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
+       public static native long CResult_boolLightningErrorZ_clone(long orig);
+       // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(long orig);
+       // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c);
+       // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
+       public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long _res);
+       // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
+       public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long[] _res);
+       // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
+       public static native void CVec_NodeAnnouncementZ_free(long[] _res);
+       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
+       public static native long CResult_NoneLightningErrorZ_ok();
+       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
+       public static native long CResult_NoneLightningErrorZ_err(long e);
+       // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
+       public static native void CResult_NoneLightningErrorZ_free(long _res);
+       // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NoneLightningErrorZ_clone(long orig);
+       // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
+       public static native void CVec_PublicKeyZ_free(byte[][] _res);
+       // void CVec_u8Z_free(struct LDKCVec_u8Z _res);
+       public static native void CVec_u8Z_free(byte[] _res);
+       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(byte[] o);
+       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long e);
+       // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
+       public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res);
+       // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone(long orig);
+       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
+       public static native long CResult_NonePeerHandleErrorZ_ok();
+       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
+       public static native long CResult_NonePeerHandleErrorZ_err(long e);
+       // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
+       public static native void CResult_NonePeerHandleErrorZ_free(long _res);
+       // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NonePeerHandleErrorZ_clone(long orig);
+       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
+       public static native long CResult_boolPeerHandleErrorZ_ok(boolean o);
+       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
+       public static native long CResult_boolPeerHandleErrorZ_err(long e);
+       // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
+       public static native void CResult_boolPeerHandleErrorZ_free(long _res);
+       // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
+       public static native long CResult_boolPeerHandleErrorZ_clone(long orig);
+       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
+       public static native long CResult_TxOutAccessErrorZ_ok(long o);
+       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
+       public static native long CResult_TxOutAccessErrorZ_err(LDKAccessError e);
+       // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
+       public static native void CResult_TxOutAccessErrorZ_free(long _res);
+       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
+       public static native long CResult_TxOutAccessErrorZ_clone(long orig);
+       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
+       public static native long COption_C2Tuple_usizeTransactionZZ_some(long o);
+       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
+       public static native long COption_C2Tuple_usizeTransactionZZ_none();
+       // void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
+       public static native void COption_C2Tuple_usizeTransactionZZ_free(long _res);
+       // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
+       public static native void CVec_SpendableOutputDescriptorZ_free(long[] _res);
+       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
+       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_err(long e);
+       // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
+       public static native void CResult_DirectionalChannelInfoDecodeErrorZ_free(long _res);
+       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
+       public static native long CResult_ChannelInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelInfoDecodeErrorZ_err(long e);
+       // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
+       public static native void CResult_ChannelInfoDecodeErrorZ_free(long _res);
+       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ChannelInfoDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
+       public static native long CResult_RoutingFeesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_RoutingFeesDecodeErrorZ_err(long e);
+       // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
+       public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res);
+       // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_RoutingFeesDecodeErrorZ_clone(long orig);
+       // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
+       public static native void CVec_NetAddressZ_free(long[] _res);
+       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_err(long e);
+       // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
+       public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res);
+       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig);
+       // void CVec_u64Z_free(struct LDKCVec_u64Z _res);
+       public static native void CVec_u64Z_free(long[] _res);
+       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
+       public static native long CResult_NodeInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_NodeInfoDecodeErrorZ_err(long e);
+       // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
+       public static native void CResult_NodeInfoDecodeErrorZ_free(long _res);
+       // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
+       public static native long CResult_NetworkGraphDecodeErrorZ_ok(long o);
+       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_NetworkGraphDecodeErrorZ_err(long e);
+       // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
+       public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res);
+       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NetworkGraphDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
+       public static native long CResult_InitFeaturesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_InitFeaturesDecodeErrorZ_err(long e);
+       // void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
+       public static native void CResult_InitFeaturesDecodeErrorZ_free(long _res);
+       // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
+       public static native long CResult_NodeFeaturesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_NodeFeaturesDecodeErrorZ_err(long e);
+       // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
+       public static native void CResult_NodeFeaturesDecodeErrorZ_free(long _res);
+       // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
+       public static native long CResult_ChannelFeaturesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelFeaturesDecodeErrorZ_err(long e);
+       // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
+       public static native void CResult_ChannelFeaturesDecodeErrorZ_free(long _res);
+       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
+       public static native long CResult_InvoiceFeaturesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_InvoiceFeaturesDecodeErrorZ_err(long e);
+       // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
+       public static native void CResult_InvoiceFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o);
        public static native long CResult_NetAddressu8Z_ok(long o);
        // struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e);
@@ -1590,6 +1575,116 @@ public class bindings {
        public static native void CResult_GossipTimestampFilterDecodeErrorZ_free(long _res);
        // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_ok(long o);
+       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_err(long e);
+       // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
+       public static native void CResult_SpendableOutputDescriptorDecodeErrorZ_free(long _res);
+       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone(long orig);
+       // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
+       public static native long C2Tuple_SignatureCVec_SignatureZZ_clone(long orig);
+       // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
+       public static native long C2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, byte[][] b);
+       // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
+       public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long _res);
+       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(long o);
+       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+       // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
+       public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long _res);
+       // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(long orig);
+       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
+       public static native long CResult_SignatureNoneZ_ok(byte[] o);
+       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
+       public static native long CResult_SignatureNoneZ_err();
+       // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
+       public static native void CResult_SignatureNoneZ_free(long _res);
+       // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
+       public static native long CResult_SignatureNoneZ_clone(long orig);
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
+       public static native long CResult_SignDecodeErrorZ_ok(long o);
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_SignDecodeErrorZ_err(long e);
+       // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
+       public static native void CResult_SignDecodeErrorZ_free(long _res);
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_SignDecodeErrorZ_clone(long orig);
+       // void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
+       public static native void CVec_CVec_u8ZZ_free(byte[][] _res);
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
+       public static native long CResult_CVec_CVec_u8ZZNoneZ_ok(byte[][] o);
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
+       public static native long CResult_CVec_CVec_u8ZZNoneZ_err();
+       // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
+       public static native void CResult_CVec_CVec_u8ZZNoneZ_free(long _res);
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
+       public static native long CResult_CVec_CVec_u8ZZNoneZ_clone(long orig);
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
+       public static native long CResult_InMemorySignerDecodeErrorZ_ok(long o);
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_InMemorySignerDecodeErrorZ_err(long e);
+       // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
+       public static native void CResult_InMemorySignerDecodeErrorZ_free(long _res);
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_InMemorySignerDecodeErrorZ_clone(long orig);
+       // void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
+       public static native void CVec_TxOutZ_free(long[] _res);
+       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
+       public static native long CResult_TransactionNoneZ_ok(byte[] o);
+       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
+       public static native long CResult_TransactionNoneZ_err();
+       // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
+       public static native void CResult_TransactionNoneZ_free(long _res);
+       // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
+       public static native long CResult_NoneErrorZ_ok();
+       // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
+       public static native long CResult_NoneErrorZ_err(LDKIOError e);
+       // void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
+       public static native void CResult_NoneErrorZ_free(long _res);
+       // void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
+       public static native void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(long[] _res);
+       // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
+       public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(long[] o);
+       // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
+       public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(LDKIOError e);
+       // void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
+       public static native void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(long _res);
+       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
+       public static native long CResult_NoneAPIErrorZ_ok();
+       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
+       public static native long CResult_NoneAPIErrorZ_err(long e);
+       // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
+       public static native void CResult_NoneAPIErrorZ_free(long _res);
+       // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
+       public static native long CResult_NoneAPIErrorZ_clone(long orig);
+       // void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
+       public static native void CVec_CResult_NoneAPIErrorZZ_free(long[] _res);
+       // void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
+       public static native void CVec_APIErrorZ_free(long[] _res);
+       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
+       public static native long CResult_NonePaymentSendFailureZ_ok();
+       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
+       public static native long CResult_NonePaymentSendFailureZ_err(long e);
+       // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
+       public static native void CResult_NonePaymentSendFailureZ_free(long _res);
+       // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
+       public static native long CResult_NonePaymentSendFailureZ_clone(long orig);
+       // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
+       public static native void CVec_ChannelMonitorZ_free(long[] _res);
+       // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
+       public static native long C2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b);
+       // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
+       public static native void C2Tuple_BlockHashChannelManagerZ_free(long _res);
+       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
+       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(long e);
+       // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
+       public static native void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(long _res);
        // void Event_free(struct LDKEvent this_ptr);
        public static native void Event_free(long this_ptr);
        // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
@@ -1688,6 +1783,10 @@ public class bindings {
        public static native int ChannelConfig_get_fee_proportional_millionths(long this_ptr);
        // void ChannelConfig_set_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
        public static native void ChannelConfig_set_fee_proportional_millionths(long this_ptr, int val);
+       // uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       public static native short ChannelConfig_get_cltv_expiry_delta(long this_ptr);
+       // void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
+       public static native void ChannelConfig_set_cltv_expiry_delta(long this_ptr, short val);
        // bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
        public static native boolean ChannelConfig_get_announced_channel(long this_ptr);
        // void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
@@ -1696,8 +1795,8 @@ public class bindings {
        public static native boolean ChannelConfig_get_commit_upfront_shutdown_pubkey(long this_ptr);
        // void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
        public static native void ChannelConfig_set_commit_upfront_shutdown_pubkey(long this_ptr, boolean val);
-       // MUST_USE_RES struct 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 struct LDKChannelConfig ChannelConfig_new(uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg);
+       public static native long ChannelConfig_new(int fee_proportional_millionths_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg);
        // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
        public static native long ChannelConfig_clone(long orig);
        // MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
@@ -1736,6 +1835,22 @@ public class bindings {
        public static native void Watch_free(long this_ptr);
        // void Filter_free(struct LDKFilter this_ptr);
        public static native void Filter_free(long this_ptr);
+       // void WatchedOutput_free(struct LDKWatchedOutput this_obj);
+       public static native void WatchedOutput_free(long this_obj);
+       // struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       public static native byte[] WatchedOutput_get_block_hash(long this_ptr);
+       // void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       public static native void WatchedOutput_set_block_hash(long this_ptr, byte[] val);
+       // struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       public static native long WatchedOutput_get_outpoint(long this_ptr);
+       // void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       public static native void WatchedOutput_set_outpoint(long this_ptr, long val);
+       // struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       public static native byte[] WatchedOutput_get_script_pubkey(long this_ptr);
+       // void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
+       public static native void WatchedOutput_set_script_pubkey(long this_ptr, byte[] val);
+       // MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
+       public static native long WatchedOutput_new(byte[] block_hash_arg, long outpoint_arg, byte[] script_pubkey_arg);
        // void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
        public static native void BroadcasterInterface_free(long this_ptr);
        // enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
@@ -1746,8 +1861,16 @@ public class bindings {
        public static native void ChainMonitor_free(long this_obj);
        // void ChainMonitor_block_connected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
        public static native void ChainMonitor_block_connected(long this_arg, byte[] header, long[] txdata, int height);
+       // void ChainMonitor_transactions_confirmed(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
+       public static native void ChainMonitor_transactions_confirmed(long this_arg, byte[] header, long[] txdata, int height);
+       // void ChainMonitor_update_best_block(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height);
+       public static native void ChainMonitor_update_best_block(long this_arg, byte[] header, int height);
        // void ChainMonitor_block_disconnected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
        public static native void ChainMonitor_block_disconnected(long this_arg, byte[] header, int disconnected_height);
+       // void ChainMonitor_transaction_unconfirmed(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*txid)[32]);
+       public static native void ChainMonitor_transaction_unconfirmed(long this_arg, byte[] txid);
+       // MUST_USE_RES struct LDKCVec_TxidZ ChainMonitor_get_relevant_txids(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       public static native byte[][] ChainMonitor_get_relevant_txids(long this_arg);
        // MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKFilter *chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
        public static native long ChainMonitor_new(long chain_source, long broadcaster, long logger, long feeest, long persister);
        // struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
@@ -1810,6 +1933,14 @@ public class bindings {
        public static native long[] ChannelMonitor_block_connected(long this_arg, byte[] header, long[] txdata, int height, long broadcaster, long fee_estimator, long logger);
        // void ChannelMonitor_block_disconnected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
        public static native void ChannelMonitor_block_disconnected(long this_arg, byte[] header, int height, long broadcaster, long fee_estimator, long logger);
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_transactions_confirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       public static native long[] ChannelMonitor_transactions_confirmed(long this_arg, byte[] header, long[] txdata, int height, long broadcaster, long fee_estimator, long logger);
+       // void ChannelMonitor_transaction_unconfirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       public static native void ChannelMonitor_transaction_unconfirmed(long this_arg, byte[] txid, long broadcaster, long fee_estimator, long logger);
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_update_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       public static native long[] ChannelMonitor_update_best_block(long this_arg, byte[] header, int height, long broadcaster, long fee_estimator, long logger);
+       // MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       public static native byte[][] ChannelMonitor_get_relevant_txids(long this_arg);
        // void Persist_free(struct LDKPersist this_ptr);
        public static native void Persist_free(long this_ptr);
        // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
@@ -1894,6 +2025,8 @@ public class bindings {
        public static native byte[] SpendableOutputDescriptor_write(long obj);
        // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
        public static native long SpendableOutputDescriptor_read(byte[] ser);
+       // void BaseSign_free(struct LDKBaseSign this_ptr);
+       public static native void BaseSign_free(long this_ptr);
        // struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
        public static native long Sign_clone(long orig);
        // void Sign_free(struct LDKSign this_ptr);
@@ -1946,6 +2079,8 @@ public class bindings {
        public static native long InMemorySigner_sign_counterparty_payment_input(long this_arg, byte[] spend_tx, long input_idx, long descriptor);
        // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_dynamic_p2wsh_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR descriptor);
        public static native long InMemorySigner_sign_dynamic_p2wsh_input(long this_arg, byte[] spend_tx, long input_idx, long descriptor);
+       // struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       public static native long InMemorySigner_as_BaseSign(long this_arg);
        // struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
        public static native long InMemorySigner_as_Sign(long this_arg);
        // struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
@@ -1970,22 +2105,34 @@ public class bindings {
        public static native LDKNetwork ChainParameters_get_network(long this_ptr);
        // void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
        public static native void ChainParameters_set_network(long this_ptr, LDKNetwork val);
-       // const uint8_t (*ChainParameters_get_latest_hash(const struct LDKChainParameters *NONNULL_PTR this_ptr))[32];
-       public static native byte[] ChainParameters_get_latest_hash(long this_ptr);
-       // void ChainParameters_set_latest_hash(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       public static native void ChainParameters_set_latest_hash(long this_ptr, byte[] val);
-       // uintptr_t ChainParameters_get_latest_height(const struct LDKChainParameters *NONNULL_PTR this_ptr);
-       public static native long ChainParameters_get_latest_height(long this_ptr);
-       // void ChainParameters_set_latest_height(struct LDKChainParameters *NONNULL_PTR this_ptr, uintptr_t val);
-       public static native void ChainParameters_set_latest_height(long this_ptr, long val);
-       // MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKThirtyTwoBytes latest_hash_arg, uintptr_t latest_height_arg);
-       public static native long ChainParameters_new(LDKNetwork network_arg, byte[] latest_hash_arg, long latest_height_arg);
+       // struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
+       public static native long ChainParameters_get_best_block(long this_ptr);
+       // void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
+       public static native void ChainParameters_set_best_block(long this_ptr, long val);
+       // MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
+       public static native long ChainParameters_new(LDKNetwork network_arg, long best_block_arg);
+       // void BestBlock_free(struct LDKBestBlock this_obj);
+       public static native void BestBlock_free(long this_obj);
+       // struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
+       public static native long BestBlock_clone(long orig);
+       // MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
+       public static native long BestBlock_from_genesis(LDKNetwork network);
+       // MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
+       public static native long BestBlock_new(byte[] block_hash, int height);
+       // MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
+       public static native byte[] BestBlock_block_hash(long this_arg);
+       // MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
+       public static native int BestBlock_height(long this_arg);
        // void ChannelDetails_free(struct LDKChannelDetails this_obj);
        public static native void ChannelDetails_free(long this_obj);
        // const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
        public static native byte[] ChannelDetails_get_channel_id(long this_ptr);
        // void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
        public static native void ChannelDetails_set_channel_id(long this_ptr, byte[] val);
+       // struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       public static native long ChannelDetails_get_short_channel_id(long this_ptr);
+       // void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void ChannelDetails_set_short_channel_id(long this_ptr, long val);
        // struct LDKPublicKey ChannelDetails_get_remote_network_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
        public static native byte[] ChannelDetails_get_remote_network_id(long this_ptr);
        // void ChannelDetails_set_remote_network_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKPublicKey val);
@@ -2022,6 +2169,8 @@ public class bindings {
        public static native long PaymentSendFailure_clone(long orig);
        // MUST_USE_RES struct LDKChannelManager ChannelManager_new(struct LDKFeeEstimator fee_est, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKKeysInterface keys_manager, struct LDKUserConfig config, struct LDKChainParameters params);
        public static native long ChannelManager_new(long fee_est, long chain_monitor, long tx_broadcaster, long logger, long keys_manager, long config, long params);
+       // MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       public static native long ChannelManager_get_current_default_configuration(long this_arg);
        // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_create_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_id, struct LDKUserConfig override_config);
        public static native long ChannelManager_create_channel(long this_arg, byte[] their_network_key, long channel_value_satoshis, long push_msat, long user_id, long override_config);
        // MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
@@ -2036,14 +2185,14 @@ public class bindings {
        public static native void ChannelManager_force_close_all_channels(long this_arg);
        // MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
        public static native long ChannelManager_send_payment(long this_arg, long route, byte[] payment_hash, byte[] payment_secret);
-       // void ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKOutPoint funding_txo);
-       public static native void ChannelManager_funding_transaction_generated(long this_arg, byte[] temporary_channel_id, long funding_txo);
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction);
+       public static native long ChannelManager_funding_transaction_generated(long this_arg, byte[] temporary_channel_id, byte[] funding_transaction);
        // void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
        public static native void ChannelManager_broadcast_node_announcement(long this_arg, byte[] rgb, byte[] alias, long[] addresses);
        // void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native void ChannelManager_process_pending_htlc_forwards(long this_arg);
-       // void ChannelManager_timer_chan_freshness_every_min(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       public static native void ChannelManager_timer_chan_freshness_every_min(long this_arg);
+       // void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       public static native void ChannelManager_timer_tick_occurred(long this_arg);
        // MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32], struct LDKThirtyTwoBytes payment_secret);
        public static native boolean ChannelManager_fail_htlc_backwards(long this_arg, byte[] payment_hash, byte[] payment_secret);
        // MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret, uint64_t expected_amount);
@@ -2058,10 +2207,16 @@ public class bindings {
        public static native long ChannelManager_as_EventsProvider(long this_arg);
        // struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native long ChannelManager_as_Listen(long this_arg);
-       // void ChannelManager_block_connected(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
-       public static native void ChannelManager_block_connected(long this_arg, byte[] header, long[] txdata, int height);
-       // void ChannelManager_block_disconnected(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80]);
-       public static native void ChannelManager_block_disconnected(long this_arg, byte[] header);
+       // void ChannelManager_transactions_confirmed(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKCVec_C2Tuple_usizeTransactionZZ txdata);
+       public static native void ChannelManager_transactions_confirmed(long this_arg, byte[] header, int height, long[] txdata);
+       // void ChannelManager_update_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height);
+       public static native void ChannelManager_update_best_block(long this_arg, byte[] header, int height);
+       // MUST_USE_RES struct LDKCVec_TxidZ ChannelManager_get_relevant_txids(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       public static native byte[][] ChannelManager_get_relevant_txids(long this_arg);
+       // void ChannelManager_transaction_unconfirmed(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*txid)[32]);
+       public static native void ChannelManager_transaction_unconfirmed(long this_arg, byte[] txid);
+       // MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
+       public static native boolean ChannelManager_await_persistable_update_timeout(long this_arg, long max_wait);
        // void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native void ChannelManager_await_persistable_update(long this_arg);
        // struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
@@ -2940,6 +3095,8 @@ public class bindings {
        public static native long ReplyShortChannelIdsEnd_read(byte[] ser);
        // struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
        public static native byte[] ReplyShortChannelIdsEnd_write(long obj);
+       // MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
+       public static native int QueryChannelRange_end_blocknum(long this_arg);
        // struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
        public static native long QueryChannelRange_read(byte[] ser);
        // struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
@@ -3110,6 +3267,12 @@ public class bindings {
        public static native byte[] HTLCOutputInCommitment_get_payment_hash(long this_ptr);
        // void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
        public static native void HTLCOutputInCommitment_set_payment_hash(long this_ptr, byte[] val);
+       // struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
+       public static native long HTLCOutputInCommitment_get_transaction_output_index(long this_ptr);
+       // void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
+       public static native void HTLCOutputInCommitment_set_transaction_output_index(long this_ptr, long val);
+       // MUST_USE_RES struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_new(bool offered_arg, uint64_t amount_msat_arg, uint32_t cltv_expiry_arg, struct LDKThirtyTwoBytes payment_hash_arg, struct LDKCOption_u32Z transaction_output_index_arg);
+       public static native long HTLCOutputInCommitment_new(boolean offered_arg, long amount_msat_arg, int cltv_expiry_arg, byte[] payment_hash_arg, long transaction_output_index_arg);
        // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
        public static native long HTLCOutputInCommitment_clone(long orig);
        // struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
@@ -3366,6 +3529,16 @@ public class bindings {
        public static native short RouteHint_get_cltv_expiry_delta(long this_ptr);
        // void RouteHint_set_cltv_expiry_delta(struct LDKRouteHint *NONNULL_PTR this_ptr, uint16_t val);
        public static native void RouteHint_set_cltv_expiry_delta(long this_ptr, short val);
+       // struct LDKCOption_u64Z RouteHint_get_htlc_minimum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
+       public static native long RouteHint_get_htlc_minimum_msat(long this_ptr);
+       // void RouteHint_set_htlc_minimum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void RouteHint_set_htlc_minimum_msat(long this_ptr, long val);
+       // struct LDKCOption_u64Z RouteHint_get_htlc_maximum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
+       public static native long RouteHint_get_htlc_maximum_msat(long this_ptr);
+       // void RouteHint_set_htlc_maximum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void RouteHint_set_htlc_maximum_msat(long this_ptr, long val);
+       // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, struct LDKCOption_u64Z htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg);
+       public static native long RouteHint_new(byte[] src_node_id_arg, long short_channel_id_arg, long fees_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg, long htlc_maximum_msat_arg);
        // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
        public static native long RouteHint_clone(long orig);
        // struct LDKCResult_RouteLightningErrorZ get_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey payee, struct LDKInvoiceFeatures payee_features, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger);
@@ -3410,6 +3583,10 @@ public class bindings {
        public static native long DirectionalChannelInfo_get_htlc_minimum_msat(long this_ptr);
        // void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
        public static native void DirectionalChannelInfo_set_htlc_minimum_msat(long this_ptr, long val);
+       // struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       public static native long DirectionalChannelInfo_get_htlc_maximum_msat(long this_ptr);
+       // void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void DirectionalChannelInfo_set_htlc_maximum_msat(long this_ptr, long val);
        // struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
        public static native long DirectionalChannelInfo_get_fees(long this_ptr);
        // void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
@@ -3418,6 +3595,8 @@ public class bindings {
        public static native long DirectionalChannelInfo_get_last_update_message(long this_ptr);
        // void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
        public static native void DirectionalChannelInfo_set_last_update_message(long this_ptr, long val);
+       // MUST_USE_RES struct LDKDirectionalChannelInfo DirectionalChannelInfo_new(uint32_t last_update_arg, bool enabled_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
+       public static native long DirectionalChannelInfo_new(int last_update_arg, boolean enabled_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg, long htlc_maximum_msat_arg, long fees_arg, long last_update_message_arg);
        // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
        public static native long DirectionalChannelInfo_clone(long orig);
        // struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
@@ -3446,10 +3625,16 @@ public class bindings {
        public static native long ChannelInfo_get_two_to_one(long this_ptr);
        // void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
        public static native void ChannelInfo_set_two_to_one(long this_ptr, long val);
+       // struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       public static native long ChannelInfo_get_capacity_sats(long this_ptr);
+       // void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void ChannelInfo_set_capacity_sats(long this_ptr, long val);
        // struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
        public static native long ChannelInfo_get_announcement_message(long this_ptr);
        // void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
        public static native void ChannelInfo_set_announcement_message(long this_ptr, long val);
+       // MUST_USE_RES struct LDKChannelInfo ChannelInfo_new(struct LDKChannelFeatures features_arg, struct LDKPublicKey node_one_arg, struct LDKDirectionalChannelInfo one_to_two_arg, struct LDKPublicKey node_two_arg, struct LDKDirectionalChannelInfo two_to_one_arg, struct LDKCOption_u64Z capacity_sats_arg, struct LDKChannelAnnouncement announcement_message_arg);
+       public static native long ChannelInfo_new(long features_arg, byte[] node_one_arg, long one_to_two_arg, byte[] node_two_arg, long two_to_one_arg, long capacity_sats_arg, long announcement_message_arg);
        // struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
        public static native long ChannelInfo_clone(long orig);
        // struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
@@ -3546,4 +3731,16 @@ public class bindings {
        public static native long NetworkGraph_update_channel(long this_arg, long msg);
        // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
        public static native long NetworkGraph_update_channel_unsigned(long this_arg, long msg);
+       // void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
+       public static native void FilesystemPersister_free(long this_obj);
+       // MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKCVec_u8Z path_to_channel_data);
+       public static native long FilesystemPersister_new(byte[] path_to_channel_data);
+       // MUST_USE_RES struct LDKCVec_u8Z FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
+       public static native byte[] FilesystemPersister_get_data_dir(long this_arg);
+       // MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKCVec_u8Z data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
+       public static native long FilesystemPersister_persist_manager(byte[] data_dir, long manager);
+       // MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
+       public static native long FilesystemPersister_read_channelmonitors(long this_arg, long keys_manager);
+       // struct LDKPersist FilesystemPersister_as_Persist(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
+       public static native long FilesystemPersister_as_Persist(long this_arg);
 }