[Java] Update auto-generated bindings
[ldk-java] / src / main / java / org / ldk / impl / bindings.java
index 5e7973047e3e2482b320fd72abe0c35c2f51c6e1..24f7337728558bb42cd608e6e95cb2f4c47d839b 100644 (file)
@@ -67,6 +67,7 @@ public class bindings {
        public static native long new_empty_slice_vec();
 
        static { AccessError.values(); /* Force enum statics to run */ }
+       static { COption_NoneZ.values(); /* Force enum statics to run */ }
        static { ChannelMonitorUpdateErr.values(); /* Force enum statics to run */ }
        static { ConfirmationTarget.values(); /* Force enum statics to run */ }
        static { CreationError.values(); /* Force enum statics to run */ }
@@ -74,23 +75,71 @@ public class bindings {
        static { IOError.values(); /* Force enum statics to run */ }
        static { Level.values(); /* Force enum statics to run */ }
        static { Network.values(); /* Force enum statics to run */ }
+       static { Recipient.values(); /* Force enum statics to run */ }
        static { Secp256k1Error.values(); /* Force enum statics to run */ }
        static { SemanticError.values(); /* Force enum statics to run */ }
        static { SiPrefix.values(); /* Force enum statics to run */ }
+       public static class LDKBech32Error {
+               private LDKBech32Error() {}
+               public final static class MissingSeparator extends LDKBech32Error {
+                       MissingSeparator() { }
+               }
+               public final static class InvalidChecksum extends LDKBech32Error {
+                       InvalidChecksum() { }
+               }
+               public final static class InvalidLength extends LDKBech32Error {
+                       InvalidLength() { }
+               }
+               public final static class InvalidChar extends LDKBech32Error {
+                       public int invalid_char;
+                       InvalidChar(int invalid_char) { this.invalid_char = invalid_char; }
+               }
+               public final static class InvalidData extends LDKBech32Error {
+                       public byte invalid_data;
+                       InvalidData(byte invalid_data) { this.invalid_data = invalid_data; }
+               }
+               public final static class InvalidPadding extends LDKBech32Error {
+                       InvalidPadding() { }
+               }
+               public final static class MixedCase extends LDKBech32Error {
+                       MixedCase() { }
+               }
+               static native void init();
+       }
+       static { LDKBech32Error.init(); }
+       public static native LDKBech32Error LDKBech32Error_ref_from_ptr(long ptr);
        // struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing)
        public static native byte[] TxOut_get_script_pubkey(long thing);
        // uint64_t TxOut_get_value (struct LDKTxOut* thing)
        public static native long TxOut_get_value(long thing);
-       public static native byte[] LDKCResult_SecretKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg);
-       public static native byte[] LDKCResult_PublicKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_PublicKeyErrorZ_get_err(long arg);
-       public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_TxCreationKeysErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg);
+       // void CResult_NoneNoneZ_get_ok(LDKCResult_NoneNoneZ *NONNULL_PTR owner);
+       public static native void CResult_NoneNoneZ_get_ok(long owner);
+       // void CResult_NoneNoneZ_get_err(LDKCResult_NoneNoneZ *NONNULL_PTR owner);
+       public static native void CResult_NoneNoneZ_get_err(long owner);
+       // struct LDKCounterpartyCommitmentSecrets CResult_CounterpartyCommitmentSecretsDecodeErrorZ_get_ok(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_CounterpartyCommitmentSecretsDecodeErrorZ_get_err(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_get_err(long owner);
+       // struct LDKSecretKey CResult_SecretKeyErrorZ_get_ok(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_SecretKeyErrorZ_get_ok(long owner);
+       // enum LDKSecp256k1Error CResult_SecretKeyErrorZ_get_err(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner);
+       public static native Secp256k1Error CResult_SecretKeyErrorZ_get_err(long owner);
+       // struct LDKPublicKey CResult_PublicKeyErrorZ_get_ok(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PublicKeyErrorZ_get_ok(long owner);
+       // enum LDKSecp256k1Error CResult_PublicKeyErrorZ_get_err(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner);
+       public static native Secp256k1Error CResult_PublicKeyErrorZ_get_err(long owner);
+       // struct LDKTxCreationKeys CResult_TxCreationKeysDecodeErrorZ_get_ok(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_TxCreationKeysDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_TxCreationKeysDecodeErrorZ_get_err(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_TxCreationKeysDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelPublicKeys CResult_ChannelPublicKeysDecodeErrorZ_get_ok(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelPublicKeysDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelPublicKeysDecodeErrorZ_get_err(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelPublicKeysDecodeErrorZ_get_err(long owner);
+       // struct LDKTxCreationKeys CResult_TxCreationKeysErrorZ_get_ok(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner);
+       public static native long CResult_TxCreationKeysErrorZ_get_ok(long owner);
+       // enum LDKSecp256k1Error CResult_TxCreationKeysErrorZ_get_err(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner);
+       public static native Secp256k1Error CResult_TxCreationKeysErrorZ_get_err(long owner);
        public static class LDKCOption_u32Z {
                private LDKCOption_u32Z() {}
                public final static class Some extends LDKCOption_u32Z {
@@ -104,36 +153,66 @@ public class bindings {
        }
        static { LDKCOption_u32Z.init(); }
        public static native LDKCOption_u32Z LDKCOption_u32Z_ref_from_ptr(long ptr);
-       public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_TrustedClosingTransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TrustedClosingTransactionNoneZ_get_err(long arg);
-       public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(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 long LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ShutdownScriptDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(long arg);
-       public static native long LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(long arg);
-       public static native void LDKCResult_NoneErrorZ_get_ok(long arg);
-       public static native IOError LDKCResult_NoneErrorZ_get_err(long arg);
-       public static native long LDKCResult_RouteHopDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteHopDecodeErrorZ_get_err(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 LDKCResult_RouteParametersDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteParametersDecodeErrorZ_get_err(long arg);
+       // struct LDKHTLCOutputInCommitment CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long owner);
+       // struct LDKCounterpartyChannelTransactionParameters CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelTransactionParameters CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelTransactionParametersDecodeErrorZ_get_err(long owner);
+       // struct LDKHolderCommitmentTransaction CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(long owner);
+       // struct LDKBuiltCommitmentTransaction CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long owner);
+       // struct LDKTrustedClosingTransaction *CResult_TrustedClosingTransactionNoneZ_get_ok(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner);
+       public static native long CResult_TrustedClosingTransactionNoneZ_get_ok(long owner);
+       // void CResult_TrustedClosingTransactionNoneZ_get_err(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner);
+       public static native void CResult_TrustedClosingTransactionNoneZ_get_err(long owner);
+       // struct LDKCommitmentTransaction CResult_CommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CommitmentTransactionDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_CommitmentTransactionDecodeErrorZ_get_err(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CommitmentTransactionDecodeErrorZ_get_err(long owner);
+       // struct LDKTrustedCommitmentTransaction *CResult_TrustedCommitmentTransactionNoneZ_get_ok(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner);
+       public static native long CResult_TrustedCommitmentTransactionNoneZ_get_ok(long owner);
+       // void CResult_TrustedCommitmentTransactionNoneZ_get_err(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner);
+       public static native void CResult_TrustedCommitmentTransactionNoneZ_get_err(long owner);
+       // struct LDKCVec_SignatureZ CResult_CVec_SignatureZNoneZ_get_ok(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner);
+       public static native byte[][] CResult_CVec_SignatureZNoneZ_get_ok(long owner);
+       // void CResult_CVec_SignatureZNoneZ_get_err(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner);
+       public static native void CResult_CVec_SignatureZNoneZ_get_err(long owner);
+       // struct LDKShutdownScript CResult_ShutdownScriptDecodeErrorZ_get_ok(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownScriptDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ShutdownScriptDecodeErrorZ_get_err(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownScriptDecodeErrorZ_get_err(long owner);
+       // struct LDKShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(long owner);
+       // struct LDKInvalidShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(long owner);
+       // void CResult_NoneErrorZ_get_ok(LDKCResult_NoneErrorZ *NONNULL_PTR owner);
+       public static native void CResult_NoneErrorZ_get_ok(long owner);
+       // enum LDKIOError CResult_NoneErrorZ_get_err(LDKCResult_NoneErrorZ *NONNULL_PTR owner);
+       public static native IOError CResult_NoneErrorZ_get_err(long owner);
+       // struct LDKRouteHop CResult_RouteHopDecodeErrorZ_get_ok(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHopDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RouteHopDecodeErrorZ_get_err(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHopDecodeErrorZ_get_err(long owner);
+       // struct LDKRoute CResult_RouteDecodeErrorZ_get_ok(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RouteDecodeErrorZ_get_err(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteDecodeErrorZ_get_err(long owner);
+       // struct LDKRouteParameters CResult_RouteParametersDecodeErrorZ_get_ok(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteParametersDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RouteParametersDecodeErrorZ_get_err(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteParametersDecodeErrorZ_get_err(long owner);
        public static class LDKCOption_u64Z {
                private LDKCOption_u64Z() {}
                public final static class Some extends LDKCOption_u64Z {
@@ -147,22 +226,34 @@ public class bindings {
        }
        static { LDKCOption_u64Z.init(); }
        public static native LDKCOption_u64Z LDKCOption_u64Z_ref_from_ptr(long ptr);
-       public static native long LDKCResult_PayeeDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_PayeeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_RouteHintDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteHintDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_RouteHintHopDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RouteHintHopDecodeErrorZ_get_err(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 long LDKCResult_TxOutAccessErrorZ_get_ok(long arg);
-       public static native AccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg);
-       // uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_usizeTransactionZ_get_a(long tuple);
-       // struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_usizeTransactionZ_get_b(long tuple);
-       public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg);
-       public static native ChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg);
+       // struct LDKPaymentParameters CResult_PaymentParametersDecodeErrorZ_get_ok(LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentParametersDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_PaymentParametersDecodeErrorZ_get_err(LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentParametersDecodeErrorZ_get_err(long owner);
+       // struct LDKRouteHint CResult_RouteHintDecodeErrorZ_get_ok(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHintDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RouteHintDecodeErrorZ_get_err(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHintDecodeErrorZ_get_err(long owner);
+       // struct LDKRouteHintHop CResult_RouteHintHopDecodeErrorZ_get_ok(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHintHopDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RouteHintHopDecodeErrorZ_get_err(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteHintHopDecodeErrorZ_get_err(long owner);
+       // struct LDKRoute CResult_RouteLightningErrorZ_get_ok(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteLightningErrorZ_get_ok(long owner);
+       // struct LDKLightningError CResult_RouteLightningErrorZ_get_err(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RouteLightningErrorZ_get_err(long owner);
+       // struct LDKTxOut CResult_TxOutAccessErrorZ_get_ok(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner);
+       public static native long CResult_TxOutAccessErrorZ_get_ok(long owner);
+       // enum LDKAccessError CResult_TxOutAccessErrorZ_get_err(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner);
+       public static native AccessError CResult_TxOutAccessErrorZ_get_err(long owner);
+       // uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner);
+       public static native long C2Tuple_usizeTransactionZ_get_a(long owner);
+       // struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_usizeTransactionZ_get_b(long owner);
+       // void CResult_NoneChannelMonitorUpdateErrZ_get_ok(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner);
+       public static native void CResult_NoneChannelMonitorUpdateErrZ_get_ok(long owner);
+       // enum LDKChannelMonitorUpdateErr CResult_NoneChannelMonitorUpdateErrZ_get_err(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner);
+       public static native ChannelMonitorUpdateErr CResult_NoneChannelMonitorUpdateErrZ_get_err(long owner);
        public static class LDKMonitorEvent {
                private LDKMonitorEvent() {}
                public final static class HTLCEvent extends LDKMonitorEvent {
@@ -202,8 +293,8 @@ public class bindings {
        public static class LDKClosureReason {
                private LDKClosureReason() {}
                public final static class CounterpartyForceClosed extends LDKClosureReason {
-                       public String peer_msg;
-                       CounterpartyForceClosed(String peer_msg) { this.peer_msg = peer_msg; }
+                       public java.lang.String peer_msg;
+                       CounterpartyForceClosed(java.lang.String peer_msg) { this.peer_msg = peer_msg; }
                }
                public final static class HolderForceClosed extends LDKClosureReason {
                        HolderForceClosed() { }
@@ -214,9 +305,12 @@ public class bindings {
                public final static class CommitmentTxConfirmed extends LDKClosureReason {
                        CommitmentTxConfirmed() { }
                }
+               public final static class FundingTimedOut extends LDKClosureReason {
+                       FundingTimedOut() { }
+               }
                public final static class ProcessingError extends LDKClosureReason {
-                       public String err;
-                       ProcessingError(String err) { this.err = err; }
+                       public java.lang.String err;
+                       ProcessingError(java.lang.String err) { this.err = err; }
                }
                public final static class DisconnectedPeer extends LDKClosureReason {
                        DisconnectedPeer() { }
@@ -241,8 +335,10 @@ public class bindings {
        }
        static { LDKCOption_ClosureReasonZ.init(); }
        public static native LDKCOption_ClosureReasonZ LDKCOption_ClosureReasonZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_err(long arg);
+       // struct LDKCOption_ClosureReasonZ CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_COption_ClosureReasonZDecodeErrorZ_get_err(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_get_err(long owner);
        public static class LDKNetworkUpdate {
                private LDKNetworkUpdate() {}
                public final static class ChannelUpdateMessage extends LDKNetworkUpdate {
@@ -300,8 +396,7 @@ public class bindings {
                public final static class InvoicePayment extends LDKPaymentPurpose {
                        public byte[] payment_preimage;
                        public byte[] payment_secret;
-                       public long user_payment_id;
-                       InvoicePayment(byte[] payment_preimage, byte[] payment_secret, long user_payment_id) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; this.user_payment_id = user_payment_id; }
+                       InvoicePayment(byte[] payment_preimage, byte[] payment_secret) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; }
                }
                public final static class SpontaneousPayment extends LDKPaymentPurpose {
                        public byte[] spontaneous_payment;
@@ -344,6 +439,11 @@ public class bindings {
                        public long retry;
                        PaymentPathFailed(byte[] payment_id, byte[] payment_hash, boolean rejected_by_dest, long network_update, boolean all_paths_failed, long[] path, long short_channel_id, long retry) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; this.network_update = network_update; this.all_paths_failed = all_paths_failed; this.path = path; this.short_channel_id = short_channel_id; this.retry = retry; }
                }
+               public final static class PaymentFailed extends LDKEvent {
+                       public byte[] payment_id;
+                       public byte[] payment_hash;
+                       PaymentFailed(byte[] payment_id, byte[] payment_hash) { this.payment_id = payment_id; this.payment_hash = payment_hash; }
+               }
                public final static class PendingHTLCsForwardable extends LDKEvent {
                        public long time_forwardable;
                        PendingHTLCsForwardable(long time_forwardable) { this.time_forwardable = time_forwardable; }
@@ -368,6 +468,20 @@ public class bindings {
                        public byte[] transaction;
                        DiscardFunding(byte[] channel_id, byte[] transaction) { this.channel_id = channel_id; this.transaction = transaction; }
                }
+               public final static class PaymentPathSuccessful extends LDKEvent {
+                       public byte[] payment_id;
+                       public byte[] payment_hash;
+                       public long[] path;
+                       PaymentPathSuccessful(byte[] payment_id, byte[] payment_hash, long[] path) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.path = path; }
+               }
+               public final static class OpenChannelRequest extends LDKEvent {
+                       public byte[] temporary_channel_id;
+                       public byte[] counterparty_node_id;
+                       public long funding_satoshis;
+                       public long push_msat;
+                       public long channel_type;
+                       OpenChannelRequest(byte[] temporary_channel_id, byte[] counterparty_node_id, long funding_satoshis, long push_msat, long channel_type) { this.temporary_channel_id = temporary_channel_id; this.counterparty_node_id = counterparty_node_id; this.funding_satoshis = funding_satoshis; this.push_msat = push_msat; this.channel_type = channel_type; }
+               }
                static native void init();
        }
        static { LDKEvent.init(); }
@@ -385,8 +499,10 @@ public class bindings {
        }
        static { LDKCOption_EventZ.init(); }
        public static native LDKCOption_EventZ LDKCOption_EventZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_COption_EventZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_COption_EventZDecodeErrorZ_get_err(long arg);
+       // struct LDKCOption_EventZ CResult_COption_EventZDecodeErrorZ_get_ok(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_EventZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_COption_EventZDecodeErrorZ_get_err(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_EventZDecodeErrorZ_get_err(long owner);
        public static class LDKErrorAction {
                private LDKErrorAction() {}
                public final static class DisconnectPeer extends LDKErrorAction {
@@ -397,13 +513,21 @@ public class bindings {
                        IgnoreError() { }
                }
                public final static class IgnoreAndLog extends LDKErrorAction {
-                       public Level ignore_and_log;
-                       IgnoreAndLog(Level ignore_and_log) { this.ignore_and_log = ignore_and_log; }
+                       public org.ldk.enums.Level ignore_and_log;
+                       IgnoreAndLog(org.ldk.enums.Level ignore_and_log) { this.ignore_and_log = ignore_and_log; }
+               }
+               public final static class IgnoreDuplicateGossip extends LDKErrorAction {
+                       IgnoreDuplicateGossip() { }
                }
                public final static class SendErrorMessage extends LDKErrorAction {
                        public long msg;
                        SendErrorMessage(long msg) { this.msg = msg; }
                }
+               public final static class SendWarningMessage extends LDKErrorAction {
+                       public long msg;
+                       public org.ldk.enums.Level log_level;
+                       SendWarningMessage(long msg, org.ldk.enums.Level log_level) { this.msg = msg; this.log_level = log_level; }
+               }
                static native void init();
        }
        static { LDKErrorAction.init(); }
@@ -503,44 +627,93 @@ public class bindings {
                        public long msg;
                        SendReplyChannelRange(byte[] node_id, long msg) { this.node_id = node_id; this.msg = msg; }
                }
+               public final static class SendGossipTimestampFilter extends LDKMessageSendEvent {
+                       public byte[] node_id;
+                       public long msg;
+                       SendGossipTimestampFilter(byte[] node_id, long msg) { this.node_id = node_id; this.msg = msg; }
+               }
                static native void init();
        }
        static { LDKMessageSendEvent.init(); }
        public static native LDKMessageSendEvent LDKMessageSendEvent_ref_from_ptr(long ptr);
-       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_err(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 long LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(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 long LDKCResult_ScoringParametersDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ScoringParametersDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ScorerDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ScorerDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(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 void LDKCResult_NoneNoneZ_get_ok(long arg);
-       public static native void LDKCResult_NoneNoneZ_get_err(long arg);
-       // struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_SignatureCVec_SignatureZZ_get_a(long tuple);
-       // struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
-       public static native byte[][] C2Tuple_SignatureCVec_SignatureZZ_get_b(long tuple);
-       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 byte[] LDKCResult_SignatureNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SignatureNoneZ_get_err(long arg);
+       // struct LDKFixedPenaltyScorer CResult_FixedPenaltyScorerDecodeErrorZ_get_ok(LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_FixedPenaltyScorerDecodeErrorZ_get_err(LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_get_err(long owner);
+       // struct LDKScoringParameters CResult_ScoringParametersDecodeErrorZ_get_ok(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ScoringParametersDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ScoringParametersDecodeErrorZ_get_err(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ScoringParametersDecodeErrorZ_get_err(long owner);
+       // struct LDKScorer *CResult_ScorerDecodeErrorZ_get_ok(LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ScorerDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ScorerDecodeErrorZ_get_err(LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ScorerDecodeErrorZ_get_err(long owner);
+       // struct LDKProbabilisticScorer *CResult_ProbabilisticScorerDecodeErrorZ_get_ok(LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ProbabilisticScorerDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ProbabilisticScorerDecodeErrorZ_get_err(LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ProbabilisticScorerDecodeErrorZ_get_err(long owner);
+       // struct LDKInitFeatures CResult_InitFeaturesDecodeErrorZ_get_ok(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InitFeaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_InitFeaturesDecodeErrorZ_get_err(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InitFeaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelFeatures CResult_ChannelFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelFeaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelFeaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKNodeFeatures CResult_NodeFeaturesDecodeErrorZ_get_ok(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeFeaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NodeFeaturesDecodeErrorZ_get_err(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeFeaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKInvoiceFeatures CResult_InvoiceFeaturesDecodeErrorZ_get_ok(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceFeaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_InvoiceFeaturesDecodeErrorZ_get_err(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceFeaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelTypeFeatures CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKDelayedPaymentOutputDescriptor CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(long owner);
+       // struct LDKStaticPaymentOutputDescriptor CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(long owner);
+       // struct LDKSpendableOutputDescriptor CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long owner);
+       // struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_SignatureCVec_SignatureZZ_get_a(long owner);
+       // struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner);
+       public static native byte[][] C2Tuple_SignatureCVec_SignatureZZ_get_b(long owner);
+       // struct LDKC2Tuple_SignatureCVec_SignatureZZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(long owner);
+       // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner);
+       public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(long owner);
+       // struct LDKSignature CResult_SignatureNoneZ_get_ok(LDKCResult_SignatureNoneZ *NONNULL_PTR owner);
+       public static native byte[] CResult_SignatureNoneZ_get_ok(long owner);
+       // void CResult_SignatureNoneZ_get_err(LDKCResult_SignatureNoneZ *NONNULL_PTR owner);
+       public static native void CResult_SignatureNoneZ_get_err(long owner);
+       // struct LDKSignature C2Tuple_SignatureSignatureZ_get_a(LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_SignatureSignatureZ_get_a(long owner);
+       // struct LDKSignature C2Tuple_SignatureSignatureZ_get_b(LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_SignatureSignatureZ_get_b(long owner);
+       // struct LDKC2Tuple_SignatureSignatureZ CResult_C2Tuple_SignatureSignatureZNoneZ_get_ok(LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_SignatureSignatureZNoneZ_get_ok(long owner);
+       // void CResult_C2Tuple_SignatureSignatureZNoneZ_get_err(LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR owner);
+       public static native void CResult_C2Tuple_SignatureSignatureZNoneZ_get_err(long owner);
+       // struct LDKSecretKey CResult_SecretKeyNoneZ_get_ok(LDKCResult_SecretKeyNoneZ *NONNULL_PTR owner);
+       public static native byte[] CResult_SecretKeyNoneZ_get_ok(long owner);
+       // void CResult_SecretKeyNoneZ_get_err(LDKCResult_SecretKeyNoneZ *NONNULL_PTR owner);
+       public static native void CResult_SecretKeyNoneZ_get_err(long owner);
        public interface LDKBaseSign {
                 byte[] get_per_commitment_point(long idx);
                 byte[] release_commitment_secret(long idx);
-                long validate_holder_commitment(long holder_tx);
+                long validate_holder_commitment(long holder_tx, byte[][] preimages);
                 byte[] channel_keys_id();
-                long sign_counterparty_commitment(long commitment_tx);
+                long sign_counterparty_commitment(long commitment_tx, byte[][] preimages);
                 long validate_counterparty_revocation(long idx, byte[] secret);
                 long sign_holder_commitment_and_htlcs(long commitment_tx);
                 long sign_justice_revoked_output(byte[] justice_tx, long input, long amount, byte[] per_commitment_key);
@@ -555,12 +728,12 @@ public class bindings {
        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);
-       // LDKCResult_NoneNoneZ BaseSign_validate_holder_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx
-       public static native long BaseSign_validate_holder_commitment(long this_arg, long holder_tx);
+       // LDKCResult_NoneNoneZ BaseSign_validate_holder_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages
+       public static native long BaseSign_validate_holder_commitment(long this_arg, long holder_tx, byte[][] preimages);
        // 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_counterparty_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages
+       public static native long BaseSign_sign_counterparty_commitment(long this_arg, long commitment_tx, byte[][] preimages);
        // LDKCResult_NoneNoneZ BaseSign_validate_counterparty_revocation LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx, const uint8_t (*secret)[32]
        public static native long BaseSign_validate_counterparty_revocation(long this_arg, long idx, byte[] secret);
        // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_holder_commitment_and_htlcs LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx
@@ -573,7 +746,7 @@ public class bindings {
        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, const struct LDKClosingTransaction *NONNULL_PTR closing_tx
        public static native long BaseSign_sign_closing_transaction(long this_arg, long closing_tx);
-       // LDKCResult_SignatureNoneZ BaseSign_sign_channel_announcement LDKBaseSign *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg
+       // LDKCResult_C2Tuple_SignatureSignatureZNoneZ 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);
@@ -586,22 +759,34 @@ public class bindings {
        public static native long LDKSign_get_BaseSign(long arg);
        // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
        public static native byte[] Sign_write(long this_arg);
-       public static native long LDKCResult_SignDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_SignDecodeErrorZ_get_err(long arg);
-       public static native byte[] LDKCResult_RecoverableSignatureNoneZ_get_ok(long arg);
-       public static native void LDKCResult_RecoverableSignatureNoneZ_get_err(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 long LDKCResult_InMemorySignerDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_err(long arg);
-       public static native byte[] LDKCResult_TransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TransactionNoneZ_get_err(long arg);
-       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_BlockHashChannelMonitorZ_get_a(long tuple);
-       // struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_BlockHashChannelMonitorZ_get_b(long tuple);
-       public static native long[] LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(long arg);
-       public static native IOError LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(long arg);
+       // struct LDKSign CResult_SignDecodeErrorZ_get_ok(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SignDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_SignDecodeErrorZ_get_err(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SignDecodeErrorZ_get_err(long owner);
+       // struct LDKRecoverableSignature CResult_RecoverableSignatureNoneZ_get_ok(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner);
+       public static native byte[] CResult_RecoverableSignatureNoneZ_get_ok(long owner);
+       // void CResult_RecoverableSignatureNoneZ_get_err(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner);
+       public static native void CResult_RecoverableSignatureNoneZ_get_err(long owner);
+       // struct LDKCVec_CVec_u8ZZ CResult_CVec_CVec_u8ZZNoneZ_get_ok(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner);
+       public static native byte[][] CResult_CVec_CVec_u8ZZNoneZ_get_ok(long owner);
+       // void CResult_CVec_CVec_u8ZZNoneZ_get_err(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner);
+       public static native void CResult_CVec_CVec_u8ZZNoneZ_get_err(long owner);
+       // struct LDKInMemorySigner CResult_InMemorySignerDecodeErrorZ_get_ok(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InMemorySignerDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_InMemorySignerDecodeErrorZ_get_err(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InMemorySignerDecodeErrorZ_get_err(long owner);
+       // struct LDKTransaction CResult_TransactionNoneZ_get_ok(LDKCResult_TransactionNoneZ *NONNULL_PTR owner);
+       public static native byte[] CResult_TransactionNoneZ_get_ok(long owner);
+       // void CResult_TransactionNoneZ_get_err(LDKCResult_TransactionNoneZ *NONNULL_PTR owner);
+       public static native void CResult_TransactionNoneZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_BlockHashChannelMonitorZ_get_a(long owner);
+       // struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner);
+       public static native long C2Tuple_BlockHashChannelMonitorZ_get_b(long owner);
+       // struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR owner);
+       public static native long[] CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(long owner);
+       // enum LDKIOError CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR owner);
+       public static native IOError CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(long owner);
        public static class LDKCOption_u16Z {
                private LDKCOption_u16Z() {}
                public final static class Some extends LDKCOption_u16Z {
@@ -618,21 +803,21 @@ public class bindings {
        public static class LDKAPIError {
                private LDKAPIError() {}
                public final static class APIMisuseError extends LDKAPIError {
-                       public String err;
-                       APIMisuseError(String err) { this.err = err; }
+                       public java.lang.String err;
+                       APIMisuseError(java.lang.String err) { this.err = err; }
                }
                public final static class FeeRateTooHigh extends LDKAPIError {
-                       public String err;
+                       public java.lang.String err;
                        public int feerate;
-                       FeeRateTooHigh(String err, int feerate) { this.err = err; this.feerate = feerate; }
+                       FeeRateTooHigh(java.lang.String 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 java.lang.String err;
+                       RouteError(java.lang.String err) { this.err = err; }
                }
                public final static class ChannelUnavailable extends LDKAPIError {
-                       public String err;
-                       ChannelUnavailable(String err) { this.err = err; }
+                       public java.lang.String err;
+                       ChannelUnavailable(java.lang.String err) { this.err = err; }
                }
                public final static class MonitorUpdateFailed extends LDKAPIError {
                        MonitorUpdateFailed() { }
@@ -645,10 +830,14 @@ public class bindings {
        }
        static { LDKAPIError.init(); }
        public static native LDKAPIError LDKAPIError_ref_from_ptr(long ptr);
-       public static native void LDKCResult_NoneAPIErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NoneAPIErrorZ_get_err(long arg);
-       public static native byte[] LDKCResult__u832APIErrorZ_get_ok(long arg);
-       public static native long LDKCResult__u832APIErrorZ_get_err(long arg);
+       // void CResult_NoneAPIErrorZ_get_ok(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner);
+       public static native void CResult_NoneAPIErrorZ_get_ok(long owner);
+       // struct LDKAPIError CResult_NoneAPIErrorZ_get_err(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NoneAPIErrorZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes CResult__u832APIErrorZ_get_ok(LDKCResult__u832APIErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult__u832APIErrorZ_get_ok(long owner);
+       // struct LDKAPIError CResult__u832APIErrorZ_get_err(LDKCResult__u832APIErrorZ *NONNULL_PTR owner);
+       public static native long CResult__u832APIErrorZ_get_err(long owner);
        public static class LDKPaymentSendFailure {
                private LDKPaymentSendFailure() {}
                public final static class ParameterError extends LDKPaymentSendFailure {
@@ -673,16 +862,22 @@ public class bindings {
        }
        static { LDKPaymentSendFailure.init(); }
        public static native LDKPaymentSendFailure LDKPaymentSendFailure_ref_from_ptr(long ptr);
-       public static native byte[] LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(long arg);
-       public static native long LDKCResult_PaymentIdPaymentSendFailureZ_get_err(long arg);
-       public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
-       public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_a(long tuple);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_b(long tuple);
-       public static native long LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(long arg);
-       public static native long LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(long arg);
+       // struct LDKThirtyTwoBytes CResult_PaymentIdPaymentSendFailureZ_get_ok(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PaymentIdPaymentSendFailureZ_get_ok(long owner);
+       // struct LDKPaymentSendFailure CResult_PaymentIdPaymentSendFailureZ_get_err(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentIdPaymentSendFailureZ_get_err(long owner);
+       // void CResult_NonePaymentSendFailureZ_get_ok(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner);
+       public static native void CResult_NonePaymentSendFailureZ_get_ok(long owner);
+       // struct LDKPaymentSendFailure CResult_NonePaymentSendFailureZ_get_err(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner);
+       public static native long CResult_NonePaymentSendFailureZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_a(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_b(long owner);
+       // struct LDKC2Tuple_PaymentHashPaymentIdZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(long owner);
+       // struct LDKPaymentSendFailure CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(long owner);
        public static class LDKNetAddress {
                private LDKNetAddress() {}
                public final static class IPv4 extends LDKNetAddress {
@@ -696,9 +891,8 @@ public class bindings {
                        IPv6(byte[] addr, short port) { this.addr = addr; this.port = port; }
                }
                public final static class OnionV2 extends LDKNetAddress {
-                       public byte[] addr;
-                       public short port;
-                       OnionV2(byte[] addr, short port) { this.addr = addr; this.port = port; }
+                       public byte[] onion_v2;
+                       OnionV2(byte[] onion_v2) { this.onion_v2 = onion_v2; }
                }
                public final static class OnionV3 extends LDKNetAddress {
                        public byte[] ed25519_pubkey;
@@ -711,12 +905,46 @@ public class bindings {
        }
        static { LDKNetAddress.init(); }
        public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_a(long tuple);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_b(long tuple);
-       public static native byte[] LDKCResult_PaymentSecretAPIErrorZ_get_ok(long arg);
-       public static native long LDKCResult_PaymentSecretAPIErrorZ_get_err(long arg);
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_a(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_b(long owner);
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(long owner);
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner);
+       public static native void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(long owner);
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(long owner);
+       // struct LDKAPIError CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes CResult_PaymentSecretNoneZ_get_ok(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PaymentSecretNoneZ_get_ok(long owner);
+       // void CResult_PaymentSecretNoneZ_get_err(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner);
+       public static native void CResult_PaymentSecretNoneZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes CResult_PaymentSecretAPIErrorZ_get_ok(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PaymentSecretAPIErrorZ_get_ok(long owner);
+       // struct LDKAPIError CResult_PaymentSecretAPIErrorZ_get_err(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentSecretAPIErrorZ_get_err(long owner);
+       // struct LDKThirtyTwoBytes CResult_PaymentPreimageAPIErrorZ_get_ok(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PaymentPreimageAPIErrorZ_get_ok(long owner);
+       // struct LDKAPIError CResult_PaymentPreimageAPIErrorZ_get_err(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentPreimageAPIErrorZ_get_err(long owner);
+       // struct LDKCounterpartyForwardingInfo CResult_CounterpartyForwardingInfoDecodeErrorZ_get_ok(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_CounterpartyForwardingInfoDecodeErrorZ_get_err(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelCounterparty CResult_ChannelCounterpartyDecodeErrorZ_get_ok(LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelCounterpartyDecodeErrorZ_get_err(LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelDetails CResult_ChannelDetailsDecodeErrorZ_get_ok(LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelDetailsDecodeErrorZ_get_err(LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_get_err(long owner);
+       // struct LDKPhantomRouteHints CResult_PhantomRouteHintsDecodeErrorZ_get_ok(LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_PhantomRouteHintsDecodeErrorZ_get_err(LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_get_err(long owner);
        public interface LDKWatch {
                 long watch_channel(long funding_txo, long monitor);
                 long update_channel(long funding_txo, long update);
@@ -736,17 +964,18 @@ public class bindings {
        // 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();
+                long get_node_secret(Recipient recipient);
                 byte[] get_destination_script();
                 long get_shutdown_scriptpubkey();
                 long get_channel_signer(boolean inbound, long channel_value_satoshis);
                 byte[] get_secure_random_bytes();
                 long read_chan_signer(byte[] reader);
-                long sign_invoice(byte[] invoice_preimage);
+                long sign_invoice(byte[] hrp_bytes, byte[] invoice_data, Recipient receipient);
+                byte[] get_inbound_payment_key_material();
        }
        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);
+       // LDKCResult_SecretKeyNoneZ KeysInterface_get_node_secret LDKKeysInterface *NONNULL_PTR this_arg, enum LDKRecipient recipient
+       public static native long KeysInterface_get_node_secret(long this_arg, Recipient recipient);
        // LDKCVec_u8Z KeysInterface_get_destination_script LDKKeysInterface *NONNULL_PTR this_arg
        public static native byte[] KeysInterface_get_destination_script(long this_arg);
        // LDKShutdownScript KeysInterface_get_shutdown_scriptpubkey LDKKeysInterface *NONNULL_PTR this_arg
@@ -757,8 +986,10 @@ public class bindings {
        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);
-       // LDKCResult_RecoverableSignatureNoneZ KeysInterface_sign_invoice LDKKeysInterface *NONNULL_PTR this_arg, struct LDKCVec_u8Z invoice_preimage
-       public static native long KeysInterface_sign_invoice(long this_arg, byte[] invoice_preimage);
+       // LDKCResult_RecoverableSignatureNoneZ KeysInterface_sign_invoice LDKKeysInterface *NONNULL_PTR this_arg, struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient
+       public static native long KeysInterface_sign_invoice(long this_arg, byte[] hrp_bytes, byte[] invoice_data, Recipient receipient);
+       // LDKThirtyTwoBytes KeysInterface_get_inbound_payment_key_material LDKKeysInterface *NONNULL_PTR this_arg
+       public static native byte[] KeysInterface_get_inbound_payment_key_material(long this_arg);
        public interface LDKFeeEstimator {
                 int get_est_sat_per_1000_weight(ConfirmationTarget confirmation_target);
        }
@@ -769,16 +1000,22 @@ public class bindings {
                 void log(long record);
        }
        public static native long LDKLogger_new(LDKLogger impl);
-       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_BlockHashChannelManagerZ_get_a(long tuple);
-       // struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_BlockHashChannelManagerZ_get_b(long tuple);
-       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 long LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_OutPointDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_OutPointDecodeErrorZ_get_err(long arg);
+       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_BlockHashChannelManagerZ_get_a(long owner);
+       // struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner);
+       public static native long C2Tuple_BlockHashChannelManagerZ_get_b(long owner);
+       // struct LDKC2Tuple_BlockHashChannelManagerZ *CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelConfig CResult_ChannelConfigDecodeErrorZ_get_ok(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelConfigDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelConfigDecodeErrorZ_get_err(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelConfigDecodeErrorZ_get_err(long owner);
+       // struct LDKOutPoint CResult_OutPointDecodeErrorZ_get_ok(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_OutPointDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_OutPointDecodeErrorZ_get_err(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_OutPointDecodeErrorZ_get_err(long owner);
        public interface LDKType {
                 short type_id();
                 String debug_str();
@@ -804,13 +1041,15 @@ public class bindings {
        }
        static { LDKCOption_TypeZ.init(); }
        public static native LDKCOption_TypeZ LDKCOption_TypeZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_COption_TypeZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_COption_TypeZDecodeErrorZ_get_err(long arg);
+       // struct LDKCOption_TypeZ CResult_COption_TypeZDecodeErrorZ_get_ok(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_TypeZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_COption_TypeZDecodeErrorZ_get_err(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_TypeZDecodeErrorZ_get_err(long owner);
        public static class LDKPaymentError {
                private LDKPaymentError() {}
                public final static class Invoice extends LDKPaymentError {
-                       public String invoice;
-                       Invoice(String invoice) { this.invoice = invoice; }
+                       public java.lang.String invoice;
+                       Invoice(java.lang.String invoice) { this.invoice = invoice; }
                }
                public final static class Routing extends LDKPaymentError {
                        public long routing;
@@ -824,38 +1063,139 @@ public class bindings {
        }
        static { LDKPaymentError.init(); }
        public static native LDKPaymentError LDKPaymentError_ref_from_ptr(long ptr);
-       public static native byte[] LDKCResult_PaymentIdPaymentErrorZ_get_ok(long arg);
-       public static native long LDKCResult_PaymentIdPaymentErrorZ_get_err(long arg);
-       public static native SiPrefix LDKCResult_SiPrefixNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SiPrefixNoneZ_get_err(long arg);
-       public static native long LDKCResult_InvoiceNoneZ_get_ok(long arg);
-       public static native void LDKCResult_InvoiceNoneZ_get_err(long arg);
-       public static native long LDKCResult_SignedRawInvoiceNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SignedRawInvoiceNoneZ_get_err(long arg);
-       // struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(long tuple);
-       // struct LDKThirtyTwoBytes C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       public static native byte[] C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(long tuple);
-       // struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(long tuple);
-       public static native long LDKCResult_PayeePubKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_PayeePubKeyErrorZ_get_err(long arg);
-       public static native long LDKCResult_PositiveTimestampCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_PositiveTimestampCreationErrorZ_get_err(long arg);
-       public static native void LDKCResult_NoneSemanticErrorZ_get_ok(long arg);
-       public static native SemanticError LDKCResult_NoneSemanticErrorZ_get_err(long arg);
-       public static native long LDKCResult_InvoiceSemanticErrorZ_get_ok(long arg);
-       public static native SemanticError LDKCResult_InvoiceSemanticErrorZ_get_err(long arg);
-       public static native long LDKCResult_DescriptionCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_DescriptionCreationErrorZ_get_err(long arg);
-       public static native long LDKCResult_ExpiryTimeCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_ExpiryTimeCreationErrorZ_get_err(long arg);
-       public static native long LDKCResult_PrivateRouteCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_PrivateRouteCreationErrorZ_get_err(long arg);
-       public static native String LDKCResult_StringErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_StringErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg);
+       // struct LDKThirtyTwoBytes CResult_PaymentIdPaymentErrorZ_get_ok(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_PaymentIdPaymentErrorZ_get_ok(long owner);
+       // struct LDKPaymentError CResult_PaymentIdPaymentErrorZ_get_err(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PaymentIdPaymentErrorZ_get_err(long owner);
+       public static class LDKParseError {
+               private LDKParseError() {}
+               public final static class Bech32Error extends LDKParseError {
+                       public long bech32_error;
+                       Bech32Error(long bech32_error) { this.bech32_error = bech32_error; }
+               }
+               public final static class ParseAmountError extends LDKParseError {
+                       public int parse_amount_error;
+                       ParseAmountError(int parse_amount_error) { this.parse_amount_error = parse_amount_error; }
+               }
+               public final static class MalformedSignature extends LDKParseError {
+                       public org.ldk.enums.Secp256k1Error malformed_signature;
+                       MalformedSignature(org.ldk.enums.Secp256k1Error malformed_signature) { this.malformed_signature = malformed_signature; }
+               }
+               public final static class BadPrefix extends LDKParseError {
+                       BadPrefix() { }
+               }
+               public final static class UnknownCurrency extends LDKParseError {
+                       UnknownCurrency() { }
+               }
+               public final static class UnknownSiPrefix extends LDKParseError {
+                       UnknownSiPrefix() { }
+               }
+               public final static class MalformedHRP extends LDKParseError {
+                       MalformedHRP() { }
+               }
+               public final static class TooShortDataPart extends LDKParseError {
+                       TooShortDataPart() { }
+               }
+               public final static class UnexpectedEndOfTaggedFields extends LDKParseError {
+                       UnexpectedEndOfTaggedFields() { }
+               }
+               public final static class DescriptionDecodeError extends LDKParseError {
+                       public int description_decode_error;
+                       DescriptionDecodeError(int description_decode_error) { this.description_decode_error = description_decode_error; }
+               }
+               public final static class PaddingError extends LDKParseError {
+                       PaddingError() { }
+               }
+               public final static class IntegerOverflowError extends LDKParseError {
+                       IntegerOverflowError() { }
+               }
+               public final static class InvalidSegWitProgramLength extends LDKParseError {
+                       InvalidSegWitProgramLength() { }
+               }
+               public final static class InvalidPubKeyHashLength extends LDKParseError {
+                       InvalidPubKeyHashLength() { }
+               }
+               public final static class InvalidScriptHashLength extends LDKParseError {
+                       InvalidScriptHashLength() { }
+               }
+               public final static class InvalidRecoveryId extends LDKParseError {
+                       InvalidRecoveryId() { }
+               }
+               public final static class InvalidSliceLength extends LDKParseError {
+                       public java.lang.String invalid_slice_length;
+                       InvalidSliceLength(java.lang.String invalid_slice_length) { this.invalid_slice_length = invalid_slice_length; }
+               }
+               public final static class Skip extends LDKParseError {
+                       Skip() { }
+               }
+               static native void init();
+       }
+       static { LDKParseError.init(); }
+       public static native LDKParseError LDKParseError_ref_from_ptr(long ptr);
+       // enum LDKSiPrefix CResult_SiPrefixParseErrorZ_get_ok(LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR owner);
+       public static native SiPrefix CResult_SiPrefixParseErrorZ_get_ok(long owner);
+       // struct LDKParseError CResult_SiPrefixParseErrorZ_get_err(LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SiPrefixParseErrorZ_get_err(long owner);
+       public static class LDKParseOrSemanticError {
+               private LDKParseOrSemanticError() {}
+               public final static class ParseError extends LDKParseOrSemanticError {
+                       public long parse_error;
+                       ParseError(long parse_error) { this.parse_error = parse_error; }
+               }
+               public final static class SemanticError extends LDKParseOrSemanticError {
+                       public org.ldk.enums.SemanticError semantic_error;
+                       SemanticError(org.ldk.enums.SemanticError semantic_error) { this.semantic_error = semantic_error; }
+               }
+               static native void init();
+       }
+       static { LDKParseOrSemanticError.init(); }
+       public static native LDKParseOrSemanticError LDKParseOrSemanticError_ref_from_ptr(long ptr);
+       // struct LDKInvoice CResult_InvoiceParseOrSemanticErrorZ_get_ok(LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_get_ok(long owner);
+       // struct LDKParseOrSemanticError CResult_InvoiceParseOrSemanticErrorZ_get_err(LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_get_err(long owner);
+       // struct LDKSignedRawInvoice CResult_SignedRawInvoiceParseErrorZ_get_ok(LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_get_ok(long owner);
+       // struct LDKParseError CResult_SignedRawInvoiceParseErrorZ_get_err(LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR owner);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_get_err(long owner);
+       // struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR owner);
+       public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(long owner);
+       // struct LDKThirtyTwoBytes C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR owner);
+       public static native byte[] C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(long owner);
+       // struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR owner);
+       public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(long owner);
+       // struct LDKPayeePubKey CResult_PayeePubKeyErrorZ_get_ok(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PayeePubKeyErrorZ_get_ok(long owner);
+       // enum LDKSecp256k1Error CResult_PayeePubKeyErrorZ_get_err(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR owner);
+       public static native Secp256k1Error CResult_PayeePubKeyErrorZ_get_err(long owner);
+       // struct LDKPositiveTimestamp CResult_PositiveTimestampCreationErrorZ_get_ok(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PositiveTimestampCreationErrorZ_get_ok(long owner);
+       // enum LDKCreationError CResult_PositiveTimestampCreationErrorZ_get_err(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR owner);
+       public static native CreationError CResult_PositiveTimestampCreationErrorZ_get_err(long owner);
+       // void CResult_NoneSemanticErrorZ_get_ok(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR owner);
+       public static native void CResult_NoneSemanticErrorZ_get_ok(long owner);
+       // enum LDKSemanticError CResult_NoneSemanticErrorZ_get_err(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR owner);
+       public static native SemanticError CResult_NoneSemanticErrorZ_get_err(long owner);
+       // struct LDKInvoice CResult_InvoiceSemanticErrorZ_get_ok(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceSemanticErrorZ_get_ok(long owner);
+       // enum LDKSemanticError CResult_InvoiceSemanticErrorZ_get_err(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR owner);
+       public static native SemanticError CResult_InvoiceSemanticErrorZ_get_err(long owner);
+       // struct LDKDescription CResult_DescriptionCreationErrorZ_get_ok(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR owner);
+       public static native long CResult_DescriptionCreationErrorZ_get_ok(long owner);
+       // enum LDKCreationError CResult_DescriptionCreationErrorZ_get_err(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR owner);
+       public static native CreationError CResult_DescriptionCreationErrorZ_get_err(long owner);
+       // struct LDKPrivateRoute CResult_PrivateRouteCreationErrorZ_get_ok(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PrivateRouteCreationErrorZ_get_ok(long owner);
+       // enum LDKCreationError CResult_PrivateRouteCreationErrorZ_get_err(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR owner);
+       public static native CreationError CResult_PrivateRouteCreationErrorZ_get_err(long owner);
+       // struct LDKStr CResult_StringErrorZ_get_ok(LDKCResult_StringErrorZ *NONNULL_PTR owner);
+       public static native String CResult_StringErrorZ_get_ok(long owner);
+       // enum LDKSecp256k1Error CResult_StringErrorZ_get_err(LDKCResult_StringErrorZ *NONNULL_PTR owner);
+       public static native Secp256k1Error CResult_StringErrorZ_get_err(long owner);
+       // struct LDKChannelMonitorUpdate CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long owner);
        public static class LDKCOption_MonitorEventZ {
                private LDKCOption_MonitorEventZ() {}
                public final static class Some extends LDKCOption_MonitorEventZ {
@@ -869,32 +1209,34 @@ public class bindings {
        }
        static { LDKCOption_MonitorEventZ.init(); }
        public static native LDKCOption_MonitorEventZ LDKCOption_MonitorEventZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_COption_MonitorEventZDecodeErrorZ_get_err(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 void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg);
-       // struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_OutPointScriptZ_get_a(long tuple);
-       // struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_OutPointScriptZ_get_b(long tuple);
-       // uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple);
-       public static native int C2Tuple_u32ScriptZ_get_a(long tuple);
-       // struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_u32ScriptZ_get_b(long tuple);
-       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long tuple);
-       // struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
-       public static native long[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long tuple);
-       // uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
-       public static native int C2Tuple_u32TxOutZ_get_a(long tuple);
-       // struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_u32TxOutZ_get_b(long tuple);
-       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(long tuple);
-       // struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
-       public static native long[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(long tuple);
+       // struct LDKCOption_MonitorEventZ CResult_COption_MonitorEventZDecodeErrorZ_get_ok(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_COption_MonitorEventZDecodeErrorZ_get_err(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_get_err(long owner);
+       // struct LDKHTLCUpdate CResult_HTLCUpdateDecodeErrorZ_get_ok(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HTLCUpdateDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_HTLCUpdateDecodeErrorZ_get_err(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_HTLCUpdateDecodeErrorZ_get_err(long owner);
+       // struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner);
+       public static native long C2Tuple_OutPointScriptZ_get_a(long owner);
+       // struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_OutPointScriptZ_get_b(long owner);
+       // uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner);
+       public static native int C2Tuple_u32ScriptZ_get_a(long owner);
+       // struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_u32ScriptZ_get_b(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long owner);
+       // struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner);
+       public static native long[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long owner);
+       // uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner);
+       public static native int C2Tuple_u32TxOutZ_get_a(long owner);
+       // struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner);
+       public static native long C2Tuple_u32TxOutZ_get_b(long owner);
+       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(long owner);
+       // struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner);
+       public static native long[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(long owner);
        public static class LDKBalance {
                private LDKBalance() {}
                public final static class ClaimableOnChannelClose extends LDKBalance {
@@ -920,32 +1262,61 @@ public class bindings {
        }
        static { LDKBalance.init(); }
        public static native LDKBalance LDKBalance_ref_from_ptr(long ptr);
-       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 void LDKCResult_NoneLightningErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NoneLightningErrorZ_get_err(long arg);
-       // struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
-       public static native byte[] C2Tuple_PublicKeyTypeZ_get_a(long tuple);
-       // struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
-       public static native long C2Tuple_PublicKeyTypeZ_get_b(long tuple);
-       public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg);
-       public static native long LDKCResult_boolLightningErrorZ_get_err(long arg);
-       // struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long tuple);
-       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long tuple);
-       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long tuple);
-       public static native byte[] LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg);
-       public static native long LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg);
-       public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NonePeerHandleErrorZ_get_err(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 long LDKCResult_NodeIdDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NodeIdDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_err(long arg);
+       // struct LDKC2Tuple_BlockHashChannelMonitorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long owner);
+       // void CResult_NoneLightningErrorZ_get_ok(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner);
+       public static native void CResult_NoneLightningErrorZ_get_ok(long owner);
+       // struct LDKLightningError CResult_NoneLightningErrorZ_get_err(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NoneLightningErrorZ_get_err(long owner);
+       // struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner);
+       public static native byte[] C2Tuple_PublicKeyTypeZ_get_a(long owner);
+       // struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner);
+       public static native long C2Tuple_PublicKeyTypeZ_get_b(long owner);
+       // bool CResult_boolLightningErrorZ_get_ok(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner);
+       public static native boolean CResult_boolLightningErrorZ_get_ok(long owner);
+       // struct LDKLightningError CResult_boolLightningErrorZ_get_err(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner);
+       public static native long CResult_boolLightningErrorZ_get_err(long owner);
+       // struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long owner);
+       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long owner);
+       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long owner);
+       public static class LDKCOption_NetAddressZ {
+               private LDKCOption_NetAddressZ() {}
+               public final static class Some extends LDKCOption_NetAddressZ {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_NetAddressZ {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_NetAddressZ.init(); }
+       public static native LDKCOption_NetAddressZ LDKCOption_NetAddressZ_ref_from_ptr(long ptr);
+       // struct LDKCVec_u8Z CResult_CVec_u8ZPeerHandleErrorZ_get_ok(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner);
+       public static native byte[] CResult_CVec_u8ZPeerHandleErrorZ_get_ok(long owner);
+       // struct LDKPeerHandleError CResult_CVec_u8ZPeerHandleErrorZ_get_err(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_get_err(long owner);
+       // void CResult_NonePeerHandleErrorZ_get_ok(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner);
+       public static native void CResult_NonePeerHandleErrorZ_get_ok(long owner);
+       // struct LDKPeerHandleError CResult_NonePeerHandleErrorZ_get_err(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NonePeerHandleErrorZ_get_err(long owner);
+       // bool CResult_boolPeerHandleErrorZ_get_ok(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner);
+       public static native boolean CResult_boolPeerHandleErrorZ_get_ok(long owner);
+       // struct LDKPeerHandleError CResult_boolPeerHandleErrorZ_get_err(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner);
+       public static native long CResult_boolPeerHandleErrorZ_get_err(long owner);
+       // struct LDKNodeId CResult_NodeIdDecodeErrorZ_get_ok(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeIdDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NodeIdDecodeErrorZ_get_err(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeIdDecodeErrorZ_get_err(long owner);
+       // struct LDKCOption_NetworkUpdateZ CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(long owner);
        public interface LDKAccess {
                 long get_utxo(byte[] genesis_hash, long short_channel_id);
        }
@@ -965,18 +1336,30 @@ public class bindings {
        }
        static { LDKCOption_AccessZ.init(); }
        public static native LDKCOption_AccessZ LDKCOption_AccessZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg);
+       // struct LDKChannelUpdateInfo CResult_ChannelUpdateInfoDecodeErrorZ_get_ok(LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelUpdateInfoDecodeErrorZ_get_err(LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelInfo CResult_ChannelInfoDecodeErrorZ_get_ok(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelInfoDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelInfoDecodeErrorZ_get_err(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelInfoDecodeErrorZ_get_err(long owner);
+       // struct LDKRoutingFees CResult_RoutingFeesDecodeErrorZ_get_ok(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RoutingFeesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RoutingFeesDecodeErrorZ_get_err(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RoutingFeesDecodeErrorZ_get_err(long owner);
+       // struct LDKNodeAnnouncementInfo CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long owner);
+       // struct LDKNodeInfo CResult_NodeInfoDecodeErrorZ_get_ok(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeInfoDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NodeInfoDecodeErrorZ_get_err(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeInfoDecodeErrorZ_get_err(long owner);
+       // struct LDKNetworkGraph CResult_NetworkGraphDecodeErrorZ_get_ok(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NetworkGraphDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NetworkGraphDecodeErrorZ_get_err(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NetworkGraphDecodeErrorZ_get_err(long owner);
        public static class LDKCOption_CVec_NetAddressZZ {
                private LDKCOption_CVec_NetAddressZZ() {}
                public final static class Some extends LDKCOption_CVec_NetAddressZZ {
@@ -990,72 +1373,142 @@ public class bindings {
        }
        static { LDKCOption_CVec_NetAddressZZ.init(); }
        public static native LDKCOption_CVec_NetAddressZZ LDKCOption_CVec_NetAddressZZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_NetAddressDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NetAddressDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_FundingSignedDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_FundingSignedDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_FundingLockedDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_FundingLockedDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_InitDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InitDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_OpenChannelDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_OpenChannelDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ShutdownDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ShutdownDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_PingDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_PingDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_PongDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_PongDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_QueryChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg);
-       public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg);
+       // struct LDKNetAddress CResult_NetAddressDecodeErrorZ_get_ok(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NetAddressDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NetAddressDecodeErrorZ_get_err(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NetAddressDecodeErrorZ_get_err(long owner);
+       // struct LDKAcceptChannel CResult_AcceptChannelDecodeErrorZ_get_ok(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_AcceptChannelDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_AcceptChannelDecodeErrorZ_get_err(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_AcceptChannelDecodeErrorZ_get_err(long owner);
+       // struct LDKAnnouncementSignatures CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_AnnouncementSignaturesDecodeErrorZ_get_err(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_AnnouncementSignaturesDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelReestablish CResult_ChannelReestablishDecodeErrorZ_get_ok(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelReestablishDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelReestablishDecodeErrorZ_get_err(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelReestablishDecodeErrorZ_get_err(long owner);
+       // struct LDKClosingSigned CResult_ClosingSignedDecodeErrorZ_get_ok(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ClosingSignedDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ClosingSignedDecodeErrorZ_get_err(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ClosingSignedDecodeErrorZ_get_err(long owner);
+       // struct LDKClosingSignedFeeRange CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(long owner);
+       // struct LDKCommitmentSigned CResult_CommitmentSignedDecodeErrorZ_get_ok(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CommitmentSignedDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_CommitmentSignedDecodeErrorZ_get_err(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_CommitmentSignedDecodeErrorZ_get_err(long owner);
+       // struct LDKFundingCreated CResult_FundingCreatedDecodeErrorZ_get_ok(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingCreatedDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_FundingCreatedDecodeErrorZ_get_err(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingCreatedDecodeErrorZ_get_err(long owner);
+       // struct LDKFundingSigned CResult_FundingSignedDecodeErrorZ_get_ok(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingSignedDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_FundingSignedDecodeErrorZ_get_err(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingSignedDecodeErrorZ_get_err(long owner);
+       // struct LDKFundingLocked CResult_FundingLockedDecodeErrorZ_get_ok(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingLockedDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_FundingLockedDecodeErrorZ_get_err(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_FundingLockedDecodeErrorZ_get_err(long owner);
+       // struct LDKInit CResult_InitDecodeErrorZ_get_ok(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InitDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_InitDecodeErrorZ_get_err(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InitDecodeErrorZ_get_err(long owner);
+       // struct LDKOpenChannel CResult_OpenChannelDecodeErrorZ_get_ok(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_OpenChannelDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_OpenChannelDecodeErrorZ_get_err(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_OpenChannelDecodeErrorZ_get_err(long owner);
+       // struct LDKRevokeAndACK CResult_RevokeAndACKDecodeErrorZ_get_ok(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RevokeAndACKDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_RevokeAndACKDecodeErrorZ_get_err(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_RevokeAndACKDecodeErrorZ_get_err(long owner);
+       // struct LDKShutdown CResult_ShutdownDecodeErrorZ_get_ok(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ShutdownDecodeErrorZ_get_err(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ShutdownDecodeErrorZ_get_err(long owner);
+       // struct LDKUpdateFailHTLC CResult_UpdateFailHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFailHTLCDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UpdateFailHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFailHTLCDecodeErrorZ_get_err(long owner);
+       // struct LDKUpdateFailMalformedHTLC CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(long owner);
+       // struct LDKUpdateFee CResult_UpdateFeeDecodeErrorZ_get_ok(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFeeDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UpdateFeeDecodeErrorZ_get_err(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFeeDecodeErrorZ_get_err(long owner);
+       // struct LDKUpdateFulfillHTLC CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(long owner);
+       // struct LDKUpdateAddHTLC CResult_UpdateAddHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateAddHTLCDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UpdateAddHTLCDecodeErrorZ_get_err(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UpdateAddHTLCDecodeErrorZ_get_err(long owner);
+       // struct LDKPing CResult_PingDecodeErrorZ_get_ok(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PingDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_PingDecodeErrorZ_get_err(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PingDecodeErrorZ_get_err(long owner);
+       // struct LDKPong CResult_PongDecodeErrorZ_get_ok(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PongDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_PongDecodeErrorZ_get_err(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_PongDecodeErrorZ_get_err(long owner);
+       // struct LDKUnsignedChannelAnnouncement CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelAnnouncement CResult_ChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelAnnouncementDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelAnnouncementDecodeErrorZ_get_err(long owner);
+       // struct LDKUnsignedChannelUpdate CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(long owner);
+       // struct LDKChannelUpdate CResult_ChannelUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelUpdateDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ChannelUpdateDecodeErrorZ_get_err(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ChannelUpdateDecodeErrorZ_get_err(long owner);
+       // struct LDKErrorMessage CResult_ErrorMessageDecodeErrorZ_get_ok(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ErrorMessageDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ErrorMessageDecodeErrorZ_get_err(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ErrorMessageDecodeErrorZ_get_err(long owner);
+       // struct LDKWarningMessage CResult_WarningMessageDecodeErrorZ_get_ok(LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_WarningMessageDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_WarningMessageDecodeErrorZ_get_err(LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_WarningMessageDecodeErrorZ_get_err(long owner);
+       // struct LDKUnsignedNodeAnnouncement CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(long owner);
+       // struct LDKNodeAnnouncement CResult_NodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeAnnouncementDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_NodeAnnouncementDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_NodeAnnouncementDecodeErrorZ_get_err(long owner);
+       // struct LDKQueryShortChannelIds CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_QueryShortChannelIdsDecodeErrorZ_get_err(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_QueryShortChannelIdsDecodeErrorZ_get_err(long owner);
+       // struct LDKReplyShortChannelIdsEnd CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(long owner);
+       // struct LDKQueryChannelRange CResult_QueryChannelRangeDecodeErrorZ_get_ok(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_QueryChannelRangeDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_QueryChannelRangeDecodeErrorZ_get_err(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_QueryChannelRangeDecodeErrorZ_get_err(long owner);
+       // struct LDKReplyChannelRange CResult_ReplyChannelRangeDecodeErrorZ_get_ok(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ReplyChannelRangeDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_ReplyChannelRangeDecodeErrorZ_get_err(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_ReplyChannelRangeDecodeErrorZ_get_err(long owner);
+       // struct LDKGossipTimestampFilter CResult_GossipTimestampFilterDecodeErrorZ_get_ok(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_GossipTimestampFilterDecodeErrorZ_get_ok(long owner);
+       // struct LDKDecodeError CResult_GossipTimestampFilterDecodeErrorZ_get_err(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner);
+       public static native long CResult_GossipTimestampFilterDecodeErrorZ_get_err(long owner);
        public static class LDKSignOrCreationError {
                private LDKSignOrCreationError() {}
                public final static class SignError extends LDKSignOrCreationError {
@@ -1069,8 +1522,10 @@ public class bindings {
        }
        static { LDKSignOrCreationError.init(); }
        public static native LDKSignOrCreationError LDKSignOrCreationError_ref_from_ptr(long ptr);
-       public static native long LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(long arg);
-       public static native long LDKCResult_InvoiceSignOrCreationErrorZ_get_err(long arg);
+       // struct LDKInvoice CResult_InvoiceSignOrCreationErrorZ_get_ok(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceSignOrCreationErrorZ_get_ok(long owner);
+       // struct LDKSignOrCreationError CResult_InvoiceSignOrCreationErrorZ_get_err(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR owner);
+       public static native long CResult_InvoiceSignOrCreationErrorZ_get_err(long owner);
        public interface LDKFilter {
                 void register_tx(byte[] txid, byte[] script_pubkey);
                 long register_output(long output);
@@ -1093,8 +1548,10 @@ public class bindings {
        }
        static { LDKCOption_FilterZ.init(); }
        public static native LDKCOption_FilterZ LDKCOption_FilterZ_ref_from_ptr(long ptr);
-       public static native long LDKCResult_LockedChannelMonitorNoneZ_get_ok(long arg);
-       public static native void LDKCResult_LockedChannelMonitorNoneZ_get_err(long arg);
+       // struct LDKLockedChannelMonitor *CResult_LockedChannelMonitorNoneZ_get_ok(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner);
+       public static native long CResult_LockedChannelMonitorNoneZ_get_ok(long owner);
+       // void CResult_LockedChannelMonitorNoneZ_get_err(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner);
+       public static native void CResult_LockedChannelMonitorNoneZ_get_err(long owner);
        public interface LDKMessageSendEventsProvider {
                 long[] get_and_clear_pending_msg_events();
        }
@@ -1216,7 +1673,7 @@ public class bindings {
                 long handle_channel_update(long msg);
                 long[] get_next_channel_announcements(long starting_point, byte batch_amount);
                 long[] get_next_node_announcements(byte[] starting_point, byte batch_amount);
-                void sync_routing_table(byte[] their_node_id, long init);
+                void peer_connected(byte[] their_node_id, long init);
                 long handle_reply_channel_range(byte[] their_node_id, long msg);
                 long handle_reply_short_channel_ids_end(byte[] their_node_id, long msg);
                 long handle_query_channel_range(byte[] their_node_id, long msg);
@@ -1234,8 +1691,8 @@ public class bindings {
        public static native long[] RoutingMessageHandler_get_next_channel_announcements(long this_arg, long starting_point, byte batch_amount);
        // LDKCVec_NodeAnnouncementZ RoutingMessageHandler_get_next_node_announcements LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount
        public static native long[] RoutingMessageHandler_get_next_node_announcements(long this_arg, byte[] starting_point, byte batch_amount);
-       // void RoutingMessageHandler_sync_routing_table LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init
-       public static native void RoutingMessageHandler_sync_routing_table(long this_arg, byte[] their_node_id, long init);
+       // void RoutingMessageHandler_peer_connected LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init
+       public static native void RoutingMessageHandler_peer_connected(long this_arg, byte[] their_node_id, long init);
        // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_channel_range LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg
        public static native long RoutingMessageHandler_handle_reply_channel_range(long this_arg, byte[] their_node_id, long msg);
        // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_short_channel_ids_end LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg
@@ -1273,24 +1730,60 @@ public class bindings {
        public static native void SocketDescriptor_disconnect_socket(long this_arg);
        // uint64_t SocketDescriptor_hash LDKSocketDescriptor *NONNULL_PTR this_arg
        public static native long SocketDescriptor_hash(long this_arg);
+       public static class LDKEffectiveCapacity {
+               private LDKEffectiveCapacity() {}
+               public final static class ExactLiquidity extends LDKEffectiveCapacity {
+                       public long liquidity_msat;
+                       ExactLiquidity(long liquidity_msat) { this.liquidity_msat = liquidity_msat; }
+               }
+               public final static class MaximumHTLC extends LDKEffectiveCapacity {
+                       public long amount_msat;
+                       MaximumHTLC(long amount_msat) { this.amount_msat = amount_msat; }
+               }
+               public final static class Total extends LDKEffectiveCapacity {
+                       public long capacity_msat;
+                       Total(long capacity_msat) { this.capacity_msat = capacity_msat; }
+               }
+               public final static class Infinite extends LDKEffectiveCapacity {
+                       Infinite() { }
+               }
+               public final static class Unknown extends LDKEffectiveCapacity {
+                       Unknown() { }
+               }
+               static native void init();
+       }
+       static { LDKEffectiveCapacity.init(); }
+       public static native LDKEffectiveCapacity LDKEffectiveCapacity_ref_from_ptr(long ptr);
        public interface LDKScore {
-                long channel_penalty_msat(long short_channel_id, long source, long target);
+                long channel_penalty_msat(long short_channel_id, long send_amt_msat, long capacity_msat, long source, long target);
                 void payment_path_failed(long[] path, long short_channel_id);
+                void payment_path_successful(long[] path);
                 byte[] write();
        }
        public static native long LDKScore_new(LDKScore impl);
-       // uint64_t Score_channel_penalty_msat LDKScore *NONNULL_PTR this_arg, uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target
-       public static native long Score_channel_penalty_msat(long this_arg, long short_channel_id, long source, long target);
+       // uint64_t Score_channel_penalty_msat LDKScore *NONNULL_PTR this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, uint64_t capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target
+       public static native long Score_channel_penalty_msat(long this_arg, long short_channel_id, long send_amt_msat, long capacity_msat, long source, long target);
        // void Score_payment_path_failed LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id
        public static native void Score_payment_path_failed(long this_arg, long[] path, long short_channel_id);
+       // void Score_payment_path_successful LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path
+       public static native void Score_payment_path_successful(long this_arg, long[] path);
        // LDKCVec_u8Z Score_write LDKScore *NONNULL_PTR this_arg
        public static native byte[] Score_write(long this_arg);
-       public interface LDKChannelManagerPersister {
+       public interface LDKLockableScore {
+                long lock();
+       }
+       public static native long LDKLockableScore_new(LDKLockableScore impl);
+       // LDKScore LockableScore_lock LDKLockableScore *NONNULL_PTR this_arg
+       public static native long LockableScore_lock(long this_arg);
+       public interface LDKPersister {
                 long persist_manager(long channel_manager);
+                long persist_graph(long network_graph);
        }
-       public static native long LDKChannelManagerPersister_new(LDKChannelManagerPersister impl);
-       // LDKCResult_NoneErrorZ ChannelManagerPersister_persist_manager LDKChannelManagerPersister *NONNULL_PTR this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager
-       public static native long ChannelManagerPersister_persist_manager(long this_arg, long channel_manager);
+       public static native long LDKPersister_new(LDKPersister impl);
+       // LDKCResult_NoneErrorZ Persister_persist_manager LDKPersister *NONNULL_PTR this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager
+       public static native long Persister_persist_manager(long this_arg, long channel_manager);
+       // LDKCResult_NoneErrorZ Persister_persist_graph LDKPersister *NONNULL_PTR this_arg, const struct LDKNetworkGraph *NONNULL_PTR network_graph
+       public static native long Persister_persist_graph(long this_arg, long network_graph);
        public static class LDKFallback {
                private LDKFallback() {}
                public final static class SegWitProgram extends LDKFallback {
@@ -1314,7 +1807,9 @@ public class bindings {
                 byte[] node_id();
                 long[] first_hops();
                 long send_payment(long route, byte[] payment_hash, byte[] payment_secret);
+                long send_spontaneous_payment(long route, byte[] payment_preimage);
                 long retry_payment(long route, byte[] payment_id);
+                void abandon_payment(byte[] payment_id);
        }
        public static native long LDKPayer_new(LDKPayer impl);
        // LDKPublicKey Payer_node_id LDKPayer *NONNULL_PTR this_arg
@@ -1323,30 +1818,64 @@ public class bindings {
        public static native long[] Payer_first_hops(long this_arg);
        // LDKCResult_PaymentIdPaymentSendFailureZ Payer_send_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret
        public static native long Payer_send_payment(long this_arg, long route, byte[] payment_hash, byte[] payment_secret);
+       // LDKCResult_PaymentIdPaymentSendFailureZ Payer_send_spontaneous_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage
+       public static native long Payer_send_spontaneous_payment(long this_arg, long route, byte[] payment_preimage);
        // LDKCResult_NonePaymentSendFailureZ Payer_retry_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id
        public static native long Payer_retry_payment(long this_arg, long route, byte[] payment_id);
+       // void Payer_abandon_payment LDKPayer *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id
+       public static native void Payer_abandon_payment(long this_arg, byte[] payment_id);
        public interface LDKRouter {
-                long find_route(byte[] payer, long params, long[] first_hops, long scorer);
+                long find_route(byte[] payer, long route_params, byte[] payment_hash, long[] first_hops, long scorer);
        }
        public static native long LDKRouter_new(LDKRouter impl);
-       // LDKCResult_RouteLightningErrorZ Router_find_route LDKRouter *NONNULL_PTR this_arg, struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer
-       public static native long Router_find_route(long this_arg, byte[] payer, long params, long[] first_hops, long scorer);
+       // LDKCResult_RouteLightningErrorZ Router_find_route LDKRouter *NONNULL_PTR this_arg, struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer
+       public static native long Router_find_route(long this_arg, byte[] payer, long route_params, byte[] payment_hash, long[] first_hops, long scorer);
        // struct LDKStr _ldk_get_compiled_version(void);
        public static native String _ldk_get_compiled_version();
        // struct LDKStr _ldk_c_bindings_get_compiled_version(void);
        public static native String _ldk_c_bindings_get_compiled_version();
+       // uintptr_t Bech32Error_clone_ptr(LDKBech32Error *NONNULL_PTR arg);
+       public static native long Bech32Error_clone_ptr(long arg);
+       // struct LDKBech32Error Bech32Error_clone(const struct LDKBech32Error *NONNULL_PTR orig);
+       public static native long Bech32Error_clone(long orig);
+       // void Bech32Error_free(struct LDKBech32Error o);
+       public static native void Bech32Error_free(long o);
        // void Transaction_free(struct LDKTransaction _res);
        public static native void Transaction_free(byte[] _res);
        // struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
        public static native long TxOut_new(byte[] script_pubkey, long value);
        // void TxOut_free(struct LDKTxOut _res);
        public static native void TxOut_free(long _res);
-       // uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg);
+       // uintptr_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg);
        public static native long TxOut_clone_ptr(long arg);
        // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
        public static native long TxOut_clone(long orig);
        // void Str_free(struct LDKStr _res);
        public static native void Str_free(String _res);
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
+       public static native long CResult_NoneNoneZ_ok();
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
+       public static native long CResult_NoneNoneZ_err();
+       // bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneNoneZ_is_ok(long o);
+       // void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
+       public static native void CResult_NoneNoneZ_free(long _res);
+       // uintptr_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg);
+       public static native long CResult_NoneNoneZ_clone_ptr(long arg);
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
+       public static native long CResult_NoneNoneZ_clone(long orig);
+       // struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_ok(struct LDKCounterpartyCommitmentSecrets o);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_ok(long o);
+       // struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_err(long e);
+       // bool CResult_CounterpartyCommitmentSecretsDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CounterpartyCommitmentSecretsDecodeErrorZ_is_ok(long o);
+       // void CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ _res);
+       public static native void CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_CounterpartyCommitmentSecretsDecodeErrorZ_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);
@@ -1355,6 +1884,10 @@ public class bindings {
        public static native boolean CResult_SecretKeyErrorZ_is_ok(long o);
        // void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
        public static native void CResult_SecretKeyErrorZ_free(long _res);
+       // uintptr_t CResult_SecretKeyErrorZ_clone_ptr(LDKCResult_SecretKeyErrorZ *NONNULL_PTR arg);
+       public static native long CResult_SecretKeyErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_clone(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR orig);
+       public static native long CResult_SecretKeyErrorZ_clone(long orig);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
        public static native long CResult_PublicKeyErrorZ_ok(byte[] o);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
@@ -1363,7 +1896,7 @@ public class bindings {
        public static native boolean CResult_PublicKeyErrorZ_is_ok(long o);
        // void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
        public static native void CResult_PublicKeyErrorZ_free(long _res);
-       // uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg);
        public static native long CResult_PublicKeyErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
        public static native long CResult_PublicKeyErrorZ_clone(long orig);
@@ -1375,7 +1908,7 @@ public class bindings {
        public static native boolean CResult_TxCreationKeysDecodeErrorZ_is_ok(long o);
        // void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
        public static native void CResult_TxCreationKeysDecodeErrorZ_free(long _res);
-       // uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_TxCreationKeysDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxCreationKeysDecodeErrorZ_clone(long orig);
@@ -1387,7 +1920,7 @@ public class bindings {
        public static native boolean CResult_ChannelPublicKeysDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
        public static native void CResult_ChannelPublicKeysDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelPublicKeysDecodeErrorZ_clone(long orig);
@@ -1399,7 +1932,7 @@ public class bindings {
        public static native boolean CResult_TxCreationKeysErrorZ_is_ok(long o);
        // void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
        public static native void CResult_TxCreationKeysErrorZ_free(long _res);
-       // uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg);
        public static native long CResult_TxCreationKeysErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxCreationKeysErrorZ_clone(long orig);
@@ -1409,7 +1942,7 @@ public class bindings {
        public static native long COption_u32Z_none();
        // void COption_u32Z_free(struct LDKCOption_u32Z _res);
        public static native void COption_u32Z_free(long _res);
-       // uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg);
+       // uintptr_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg);
        public static native long COption_u32Z_clone_ptr(long arg);
        // struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
        public static native long COption_u32Z_clone(long orig);
@@ -1421,10 +1954,16 @@ public class bindings {
        public static native boolean CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(long o);
        // void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
        public static native void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(long _res);
-       // uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(long orig);
+       // enum LDKCOption_NoneZ COption_NoneZ_some(void);
+       public static native COption_NoneZ COption_NoneZ_some();
+       // enum LDKCOption_NoneZ COption_NoneZ_none(void);
+       public static native COption_NoneZ COption_NoneZ_none();
+       // void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
+       public static native void COption_NoneZ_free(COption_NoneZ _res);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(long o);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
@@ -1433,7 +1972,7 @@ public class bindings {
        public static native boolean CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(long o);
        // void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
        public static native void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(long _res);
-       // uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(long orig);
@@ -1445,7 +1984,7 @@ public class bindings {
        public static native boolean CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
        public static native void CResult_ChannelTransactionParametersDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelTransactionParametersDecodeErrorZ_clone(long orig);
@@ -1459,7 +1998,7 @@ public class bindings {
        public static native boolean CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_HolderCommitmentTransactionDecodeErrorZ_free(long _res);
-       // uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_clone(long orig);
@@ -1471,7 +2010,7 @@ public class bindings {
        public static native boolean CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(long _res);
-       // uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(long orig);
@@ -1491,7 +2030,7 @@ public class bindings {
        public static native boolean CResult_CommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_CommitmentTransactionDecodeErrorZ_free(long _res);
-       // uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CommitmentTransactionDecodeErrorZ_clone(long orig);
@@ -1511,7 +2050,7 @@ public class bindings {
        public static native boolean CResult_CVec_SignatureZNoneZ_is_ok(long o);
        // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
        public static native void CResult_CVec_SignatureZNoneZ_free(long _res);
-       // uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg);
        public static native long CResult_CVec_SignatureZNoneZ_clone_ptr(long arg);
        // 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);
@@ -1523,7 +2062,7 @@ public class bindings {
        public static native boolean CResult_ShutdownScriptDecodeErrorZ_is_ok(long o);
        // void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
        public static native void CResult_ShutdownScriptDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ShutdownScriptDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownScriptDecodeErrorZ_clone(long orig);
@@ -1535,7 +2074,7 @@ public class bindings {
        public static native boolean CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(long o);
        // void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
        public static native void CResult_ShutdownScriptInvalidShutdownScriptZ_free(long _res);
-       // uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg);
        public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_clone(long orig);
@@ -1547,7 +2086,7 @@ public class bindings {
        public static native boolean CResult_NoneErrorZ_is_ok(long o);
        // void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
        public static native void CResult_NoneErrorZ_free(long _res);
-       // uint64_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg);
        public static native long CResult_NoneErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneErrorZ_clone(long orig);
@@ -1559,7 +2098,7 @@ public class bindings {
        public static native boolean CResult_RouteHopDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
        public static native void CResult_RouteHopDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteHopDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHopDecodeErrorZ_clone(long orig);
@@ -1575,7 +2114,7 @@ public class bindings {
        public static native boolean CResult_RouteDecodeErrorZ_is_ok(long o);
        // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
        public static native void CResult_RouteDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteDecodeErrorZ_clone(long orig);
@@ -1587,7 +2126,7 @@ public class bindings {
        public static native boolean CResult_RouteParametersDecodeErrorZ_is_ok(long o);
        // void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
        public static native void CResult_RouteParametersDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteParametersDecodeErrorZ_clone(long orig);
@@ -1599,22 +2138,22 @@ public class bindings {
        public static native long COption_u64Z_none();
        // void COption_u64Z_free(struct LDKCOption_u64Z _res);
        public static native void COption_u64Z_free(long _res);
-       // uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg);
+       // uintptr_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg);
        public static native long COption_u64Z_clone_ptr(long arg);
        // struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
        public static native long COption_u64Z_clone(long orig);
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_ok(struct LDKPayee o);
-       public static native long CResult_PayeeDecodeErrorZ_ok(long o);
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_PayeeDecodeErrorZ_err(long e);
-       // bool CResult_PayeeDecodeErrorZ_is_ok(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_PayeeDecodeErrorZ_is_ok(long o);
-       // void CResult_PayeeDecodeErrorZ_free(struct LDKCResult_PayeeDecodeErrorZ _res);
-       public static native void CResult_PayeeDecodeErrorZ_free(long _res);
-       // uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg);
-       public static native long CResult_PayeeDecodeErrorZ_clone_ptr(long arg);
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_clone(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_PayeeDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_ok(struct LDKPaymentParameters o);
+       public static native long CResult_PaymentParametersDecodeErrorZ_ok(long o);
+       // struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_PaymentParametersDecodeErrorZ_err(long e);
+       // bool CResult_PaymentParametersDecodeErrorZ_is_ok(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentParametersDecodeErrorZ_is_ok(long o);
+       // void CResult_PaymentParametersDecodeErrorZ_free(struct LDKCResult_PaymentParametersDecodeErrorZ _res);
+       public static native void CResult_PaymentParametersDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_PaymentParametersDecodeErrorZ_clone_ptr(LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentParametersDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_clone(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_PaymentParametersDecodeErrorZ_clone(long orig);
        // void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
        public static native void CVec_RouteHintHopZ_free(long[] _res);
        // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
@@ -1625,7 +2164,7 @@ public class bindings {
        public static native boolean CResult_RouteHintDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
        public static native void CResult_RouteHintDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteHintDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHintDecodeErrorZ_clone(long orig);
@@ -1637,7 +2176,7 @@ public class bindings {
        public static native boolean CResult_RouteHintHopDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
        public static native void CResult_RouteHintHopDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteHintHopDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHintHopDecodeErrorZ_clone(long orig);
@@ -1651,7 +2190,7 @@ public class bindings {
        public static native boolean CResult_RouteLightningErrorZ_is_ok(long o);
        // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
        public static native void CResult_RouteLightningErrorZ_free(long _res);
-       // uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg);
        public static native long CResult_RouteLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteLightningErrorZ_clone(long orig);
@@ -1663,11 +2202,11 @@ public class bindings {
        public static native boolean CResult_TxOutAccessErrorZ_is_ok(long o);
        // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
        public static native void CResult_TxOutAccessErrorZ_free(long _res);
-       // uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg);
        public static native long CResult_TxOutAccessErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxOutAccessErrorZ_clone(long orig);
-       // uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg);
        public static native long C2Tuple_usizeTransactionZ_clone_ptr(long arg);
        // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
        public static native long C2Tuple_usizeTransactionZ_clone(long orig);
@@ -1687,7 +2226,7 @@ public class bindings {
        public static native boolean CResult_NoneChannelMonitorUpdateErrZ_is_ok(long o);
        // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
        public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long _res);
-       // uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg);
        public static native long CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(long arg);
        // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
        public static native long CResult_NoneChannelMonitorUpdateErrZ_clone(long orig);
@@ -1699,7 +2238,7 @@ public class bindings {
        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);
-       // uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg);
+       // uintptr_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg);
        public static native long COption_C2Tuple_usizeTransactionZZ_clone_ptr(long arg);
        // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
        public static native long COption_C2Tuple_usizeTransactionZZ_clone(long orig);
@@ -1709,7 +2248,7 @@ public class bindings {
        public static native long COption_ClosureReasonZ_none();
        // void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
        public static native void COption_ClosureReasonZ_free(long _res);
-       // uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg);
+       // uintptr_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg);
        public static native long COption_ClosureReasonZ_clone_ptr(long arg);
        // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
        public static native long COption_ClosureReasonZ_clone(long orig);
@@ -1721,7 +2260,7 @@ public class bindings {
        public static native boolean CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
        public static native void CResult_COption_ClosureReasonZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_ClosureReasonZDecodeErrorZ_clone(long orig);
@@ -1731,7 +2270,7 @@ public class bindings {
        public static native long COption_NetworkUpdateZ_none();
        // void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
        public static native void COption_NetworkUpdateZ_free(long _res);
-       // uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg);
+       // uintptr_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg);
        public static native long COption_NetworkUpdateZ_clone_ptr(long arg);
        // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
        public static native long COption_NetworkUpdateZ_clone(long orig);
@@ -1743,7 +2282,7 @@ public class bindings {
        public static native long COption_EventZ_none();
        // void COption_EventZ_free(struct LDKCOption_EventZ _res);
        public static native void COption_EventZ_free(long _res);
-       // uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg);
+       // uintptr_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg);
        public static native long COption_EventZ_clone_ptr(long arg);
        // struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
        public static native long COption_EventZ_clone(long orig);
@@ -1755,12 +2294,52 @@ public class bindings {
        public static native boolean CResult_COption_EventZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
        public static native void CResult_COption_EventZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_COption_EventZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_EventZDecodeErrorZ_clone(long orig);
        // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
        public static native void CVec_MessageSendEventZ_free(long[] _res);
+       // struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_ok(struct LDKFixedPenaltyScorer o);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_ok(long o);
+       // struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_err(long e);
+       // bool CResult_FixedPenaltyScorerDecodeErrorZ_is_ok(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_FixedPenaltyScorerDecodeErrorZ_is_ok(long o);
+       // void CResult_FixedPenaltyScorerDecodeErrorZ_free(struct LDKCResult_FixedPenaltyScorerDecodeErrorZ _res);
+       public static native void CResult_FixedPenaltyScorerDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_FixedPenaltyScorerDecodeErrorZ_clone_ptr(LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_clone(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_FixedPenaltyScorerDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
+       public static native long CResult_ScoringParametersDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ScoringParametersDecodeErrorZ_err(long e);
+       // bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ScoringParametersDecodeErrorZ_is_ok(long o);
+       // void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
+       public static native void CResult_ScoringParametersDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_ScoringParametersDecodeErrorZ_clone_ptr(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ScoringParametersDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_clone(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ScoringParametersDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
+       public static native long CResult_ScorerDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ScorerDecodeErrorZ_err(long e);
+       // bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ScorerDecodeErrorZ_is_ok(long o);
+       // void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
+       public static native void CResult_ScorerDecodeErrorZ_free(long _res);
+       // struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_ok(struct LDKProbabilisticScorer o);
+       public static native long CResult_ProbabilisticScorerDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ProbabilisticScorerDecodeErrorZ_err(long e);
+       // bool CResult_ProbabilisticScorerDecodeErrorZ_is_ok(const struct LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ProbabilisticScorerDecodeErrorZ_is_ok(long o);
+       // void CResult_ProbabilisticScorerDecodeErrorZ_free(struct LDKCResult_ProbabilisticScorerDecodeErrorZ _res);
+       public static native void CResult_ProbabilisticScorerDecodeErrorZ_free(long _res);
        // 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);
@@ -1769,14 +2348,6 @@ public class bindings {
        public static native boolean CResult_InitFeaturesDecodeErrorZ_is_ok(long o);
        // 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);
-       // bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_NodeFeaturesDecodeErrorZ_is_ok(long o);
-       // 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);
@@ -1785,6 +2356,14 @@ public class bindings {
        public static native boolean CResult_ChannelFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
        public static native void CResult_ChannelFeaturesDecodeErrorZ_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);
+       // bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeFeaturesDecodeErrorZ_is_ok(long o);
+       // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
+       public static native void CResult_NodeFeaturesDecodeErrorZ_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);
@@ -1793,22 +2372,14 @@ public class bindings {
        public static native boolean CResult_InvoiceFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
        public static native void CResult_InvoiceFeaturesDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
-       public static native long CResult_ScoringParametersDecodeErrorZ_ok(long o);
-       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_ScoringParametersDecodeErrorZ_err(long e);
-       // bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_ScoringParametersDecodeErrorZ_is_ok(long o);
-       // void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
-       public static native void CResult_ScoringParametersDecodeErrorZ_free(long _res);
-       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
-       public static native long CResult_ScorerDecodeErrorZ_ok(long o);
-       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
-       public static native long CResult_ScorerDecodeErrorZ_err(long e);
-       // bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_ScorerDecodeErrorZ_is_ok(long o);
-       // void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
-       public static native void CResult_ScorerDecodeErrorZ_free(long _res);
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
+       public static native long CResult_ChannelTypeFeaturesDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelTypeFeaturesDecodeErrorZ_err(long e);
+       // bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(long o);
+       // void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
+       public static native void CResult_ChannelTypeFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(long o);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
@@ -1817,7 +2388,7 @@ public class bindings {
        public static native boolean CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(long _res);
-       // uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(long orig);
@@ -1829,7 +2400,7 @@ public class bindings {
        public static native boolean CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(long _res);
-       // uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(long orig);
@@ -1841,23 +2412,13 @@ public class bindings {
        public static native boolean CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_SpendableOutputDescriptorDecodeErrorZ_free(long _res);
-       // uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
-       public static native long CResult_NoneNoneZ_ok();
-       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
-       public static native long CResult_NoneNoneZ_err();
-       // bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
-       public static native boolean CResult_NoneNoneZ_is_ok(long o);
-       // void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
-       public static native void CResult_NoneNoneZ_free(long _res);
-       // uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg);
-       public static native long CResult_NoneNoneZ_clone_ptr(long arg);
-       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
-       public static native long CResult_NoneNoneZ_clone(long orig);
-       // uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg);
+       // void CVec_PaymentPreimageZ_free(struct LDKCVec_PaymentPreimageZ _res);
+       public static native void CVec_PaymentPreimageZ_free(byte[][] _res);
+       // uintptr_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg);
        public static native long C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(long arg);
        // 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);
@@ -1873,7 +2434,7 @@ public class bindings {
        public static native boolean CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(long o);
        // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
        public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long _res);
-       // uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg);
        public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(long arg);
        // 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);
@@ -1885,10 +2446,42 @@ public class bindings {
        public static native boolean CResult_SignatureNoneZ_is_ok(long o);
        // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
        public static native void CResult_SignatureNoneZ_free(long _res);
-       // uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg);
        public static native long CResult_SignatureNoneZ_clone_ptr(long arg);
        // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
        public static native long CResult_SignatureNoneZ_clone(long orig);
+       // uintptr_t C2Tuple_SignatureSignatureZ_clone_ptr(LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR arg);
+       public static native long C2Tuple_SignatureSignatureZ_clone_ptr(long arg);
+       // struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_clone(const struct LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR orig);
+       public static native long C2Tuple_SignatureSignatureZ_clone(long orig);
+       // struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_new(struct LDKSignature a, struct LDKSignature b);
+       public static native long C2Tuple_SignatureSignatureZ_new(byte[] a, byte[] b);
+       // void C2Tuple_SignatureSignatureZ_free(struct LDKC2Tuple_SignatureSignatureZ _res);
+       public static native void C2Tuple_SignatureSignatureZ_free(long _res);
+       // struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_ok(struct LDKC2Tuple_SignatureSignatureZ o);
+       public static native long CResult_C2Tuple_SignatureSignatureZNoneZ_ok(long o);
+       // struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_err(void);
+       public static native long CResult_C2Tuple_SignatureSignatureZNoneZ_err();
+       // bool CResult_C2Tuple_SignatureSignatureZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_SignatureSignatureZNoneZ_is_ok(long o);
+       // void CResult_C2Tuple_SignatureSignatureZNoneZ_free(struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ _res);
+       public static native void CResult_C2Tuple_SignatureSignatureZNoneZ_free(long _res);
+       // uintptr_t CResult_C2Tuple_SignatureSignatureZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_SignatureSignatureZNoneZ_clone_ptr(long arg);
+       // struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR orig);
+       public static native long CResult_C2Tuple_SignatureSignatureZNoneZ_clone(long orig);
+       // struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_ok(struct LDKSecretKey o);
+       public static native long CResult_SecretKeyNoneZ_ok(byte[] o);
+       // struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_err(void);
+       public static native long CResult_SecretKeyNoneZ_err();
+       // bool CResult_SecretKeyNoneZ_is_ok(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_SecretKeyNoneZ_is_ok(long o);
+       // void CResult_SecretKeyNoneZ_free(struct LDKCResult_SecretKeyNoneZ _res);
+       public static native void CResult_SecretKeyNoneZ_free(long _res);
+       // uintptr_t CResult_SecretKeyNoneZ_clone_ptr(LDKCResult_SecretKeyNoneZ *NONNULL_PTR arg);
+       public static native long CResult_SecretKeyNoneZ_clone_ptr(long arg);
+       // struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_clone(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR orig);
+       public static native long CResult_SecretKeyNoneZ_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);
@@ -1897,24 +2490,26 @@ public class bindings {
        public static native boolean CResult_SignDecodeErrorZ_is_ok(long o);
        // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
        public static native void CResult_SignDecodeErrorZ_free(long _res);
-       // uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_SignDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_SignDecodeErrorZ_clone(long orig);
-       // void CVec_u8Z_free(struct LDKCVec_u8Z _res);
-       public static native void CVec_u8Z_free(byte[] _res);
+       // void CVec_u5Z_free(struct LDKCVec_u5Z _res);
+       public static native void CVec_u5Z_free(byte[] _res);
        // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
-       public static native long CResult_RecoverableSignatureNoneZ_ok(byte[] arg);
+       public static native long CResult_RecoverableSignatureNoneZ_ok(byte[] o);
        // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
        public static native long CResult_RecoverableSignatureNoneZ_err();
        // bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
        public static native boolean CResult_RecoverableSignatureNoneZ_is_ok(long o);
        // void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
        public static native void CResult_RecoverableSignatureNoneZ_free(long _res);
-       // uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg);
        public static native long CResult_RecoverableSignatureNoneZ_clone_ptr(long arg);
        // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
        public static native long CResult_RecoverableSignatureNoneZ_clone(long orig);
+       // void CVec_u8Z_free(struct LDKCVec_u8Z _res);
+       public static native void CVec_u8Z_free(byte[] _res);
        // 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);
@@ -1925,7 +2520,7 @@ public class bindings {
        public static native boolean CResult_CVec_CVec_u8ZZNoneZ_is_ok(long o);
        // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
        public static native void CResult_CVec_CVec_u8ZZNoneZ_free(long _res);
-       // uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg);
        public static native long CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(long arg);
        // 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);
@@ -1937,7 +2532,7 @@ public class bindings {
        public static native boolean CResult_InMemorySignerDecodeErrorZ_is_ok(long o);
        // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
        public static native void CResult_InMemorySignerDecodeErrorZ_free(long _res);
-       // uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_InMemorySignerDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_InMemorySignerDecodeErrorZ_clone(long orig);
@@ -1951,11 +2546,11 @@ public class bindings {
        public static native boolean CResult_TransactionNoneZ_is_ok(long o);
        // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
        public static native void CResult_TransactionNoneZ_free(long _res);
-       // uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg);
+       // uintptr_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg);
        public static native long CResult_TransactionNoneZ_clone_ptr(long arg);
        // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
        public static native long CResult_TransactionNoneZ_clone(long orig);
-       // uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg);
        public static native long C2Tuple_BlockHashChannelMonitorZ_clone_ptr(long arg);
        // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_clone(const struct LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR orig);
        public static native long C2Tuple_BlockHashChannelMonitorZ_clone(long orig);
@@ -1973,7 +2568,7 @@ public class bindings {
        public static native boolean CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(long o);
        // void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
        public static native void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(long _res);
-       // uint64_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg);
        public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR orig);
        public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(long orig);
@@ -1983,7 +2578,7 @@ public class bindings {
        public static native long COption_u16Z_none();
        // void COption_u16Z_free(struct LDKCOption_u16Z _res);
        public static native void COption_u16Z_free(long _res);
-       // uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg);
+       // uintptr_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg);
        public static native long COption_u16Z_clone_ptr(long arg);
        // struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
        public static native long COption_u16Z_clone(long orig);
@@ -1995,7 +2590,7 @@ public class bindings {
        public static native boolean CResult_NoneAPIErrorZ_is_ok(long o);
        // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
        public static native void CResult_NoneAPIErrorZ_free(long _res);
-       // uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg);
        public static native long CResult_NoneAPIErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneAPIErrorZ_clone(long orig);
@@ -2011,7 +2606,7 @@ public class bindings {
        public static native boolean CResult__u832APIErrorZ_is_ok(long o);
        // void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
        public static native void CResult__u832APIErrorZ_free(long _res);
-       // uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg);
        public static native long CResult__u832APIErrorZ_clone_ptr(long arg);
        // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
        public static native long CResult__u832APIErrorZ_clone(long orig);
@@ -2023,7 +2618,7 @@ public class bindings {
        public static native boolean CResult_PaymentIdPaymentSendFailureZ_is_ok(long o);
        // void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
        public static native void CResult_PaymentIdPaymentSendFailureZ_free(long _res);
-       // uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg);
        public static native long CResult_PaymentIdPaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_PaymentIdPaymentSendFailureZ_clone(long orig);
@@ -2035,11 +2630,11 @@ public class bindings {
        public static native boolean CResult_NonePaymentSendFailureZ_is_ok(long o);
        // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
        public static native void CResult_NonePaymentSendFailureZ_free(long _res);
-       // uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg);
        public static native long CResult_NonePaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_NonePaymentSendFailureZ_clone(long orig);
-       // uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg);
        public static native long C2Tuple_PaymentHashPaymentIdZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
        public static native long C2Tuple_PaymentHashPaymentIdZ_clone(long orig);
@@ -2055,13 +2650,13 @@ public class bindings {
        public static native boolean CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(long o);
        // void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
        public static native void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(long _res);
-       // uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg);
+       // uintptr_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg);
        public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(long orig);
        // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
        public static native void CVec_NetAddressZ_free(long[] _res);
-       // uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg);
        public static native long C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
        public static native long C2Tuple_PaymentHashPaymentSecretZ_clone(long orig);
@@ -2069,6 +2664,42 @@ public class bindings {
        public static native long C2Tuple_PaymentHashPaymentSecretZ_new(byte[] a, byte[] b);
        // void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
        public static native void C2Tuple_PaymentHashPaymentSecretZ_free(long _res);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(long o);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+       // bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(long o);
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
+       public static native void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(long _res);
+       // uintptr_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(long arg);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(long orig);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(long o);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(long e);
+       // bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(long o);
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
+       public static native void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(long _res);
+       // uintptr_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
+       public static native long CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(long orig);
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
+       public static native long CResult_PaymentSecretNoneZ_ok(byte[] o);
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
+       public static native long CResult_PaymentSecretNoneZ_err();
+       // bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentSecretNoneZ_is_ok(long o);
+       // void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
+       public static native void CResult_PaymentSecretNoneZ_free(long _res);
+       // uintptr_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentSecretNoneZ_clone_ptr(long arg);
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
+       public static native long CResult_PaymentSecretNoneZ_clone(long orig);
        // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
        public static native long CResult_PaymentSecretAPIErrorZ_ok(byte[] o);
        // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
@@ -2077,10 +2708,70 @@ public class bindings {
        public static native boolean CResult_PaymentSecretAPIErrorZ_is_ok(long o);
        // void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
        public static native void CResult_PaymentSecretAPIErrorZ_free(long _res);
-       // uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg);
        public static native long CResult_PaymentSecretAPIErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
        public static native long CResult_PaymentSecretAPIErrorZ_clone(long orig);
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
+       public static native long CResult_PaymentPreimageAPIErrorZ_ok(byte[] o);
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
+       public static native long CResult_PaymentPreimageAPIErrorZ_err(long e);
+       // bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentPreimageAPIErrorZ_is_ok(long o);
+       // void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
+       public static native void CResult_PaymentPreimageAPIErrorZ_free(long _res);
+       // uintptr_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentPreimageAPIErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
+       public static native long CResult_PaymentPreimageAPIErrorZ_clone(long orig);
+       // struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_ok(struct LDKCounterpartyForwardingInfo o);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_err(long e);
+       // bool CResult_CounterpartyForwardingInfoDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CounterpartyForwardingInfoDecodeErrorZ_is_ok(long o);
+       // void CResult_CounterpartyForwardingInfoDecodeErrorZ_free(struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ _res);
+       public static native void CResult_CounterpartyForwardingInfoDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_CounterpartyForwardingInfoDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_clone(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_CounterpartyForwardingInfoDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_ok(struct LDKChannelCounterparty o);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_err(long e);
+       // bool CResult_ChannelCounterpartyDecodeErrorZ_is_ok(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelCounterpartyDecodeErrorZ_is_ok(long o);
+       // void CResult_ChannelCounterpartyDecodeErrorZ_free(struct LDKCResult_ChannelCounterpartyDecodeErrorZ _res);
+       public static native void CResult_ChannelCounterpartyDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_ChannelCounterpartyDecodeErrorZ_clone_ptr(LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_clone(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ChannelCounterpartyDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_ok(struct LDKChannelDetails o);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_err(long e);
+       // bool CResult_ChannelDetailsDecodeErrorZ_is_ok(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelDetailsDecodeErrorZ_is_ok(long o);
+       // void CResult_ChannelDetailsDecodeErrorZ_free(struct LDKCResult_ChannelDetailsDecodeErrorZ _res);
+       public static native void CResult_ChannelDetailsDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_ChannelDetailsDecodeErrorZ_clone_ptr(LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_clone(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ChannelDetailsDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_ok(struct LDKPhantomRouteHints o);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_ok(long o);
+       // struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_err(long e);
+       // bool CResult_PhantomRouteHintsDecodeErrorZ_is_ok(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PhantomRouteHintsDecodeErrorZ_is_ok(long o);
+       // void CResult_PhantomRouteHintsDecodeErrorZ_free(struct LDKCResult_PhantomRouteHintsDecodeErrorZ _res);
+       public static native void CResult_PhantomRouteHintsDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_PhantomRouteHintsDecodeErrorZ_clone_ptr(LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_clone(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_PhantomRouteHintsDecodeErrorZ_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);
@@ -2103,7 +2794,7 @@ public class bindings {
        public static native boolean CResult_ChannelConfigDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
        public static native void CResult_ChannelConfigDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelConfigDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelConfigDecodeErrorZ_clone(long orig);
@@ -2115,7 +2806,7 @@ public class bindings {
        public static native boolean CResult_OutPointDecodeErrorZ_is_ok(long o);
        // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
        public static native void CResult_OutPointDecodeErrorZ_free(long _res);
-       // uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_OutPointDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_OutPointDecodeErrorZ_clone(long orig);
@@ -2125,7 +2816,7 @@ public class bindings {
        public static native long COption_TypeZ_none();
        // void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
        public static native void COption_TypeZ_free(long _res);
-       // uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg);
+       // uintptr_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg);
        public static native long COption_TypeZ_clone_ptr(long arg);
        // struct LDKCOption_TypeZ COption_TypeZ_clone(const struct LDKCOption_TypeZ *NONNULL_PTR orig);
        public static native long COption_TypeZ_clone(long orig);
@@ -2137,7 +2828,7 @@ public class bindings {
        public static native boolean CResult_COption_TypeZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
        public static native void CResult_COption_TypeZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_COption_TypeZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_clone(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_TypeZDecodeErrorZ_clone(long orig);
@@ -2149,47 +2840,47 @@ public class bindings {
        public static native boolean CResult_PaymentIdPaymentErrorZ_is_ok(long o);
        // void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
        public static native void CResult_PaymentIdPaymentErrorZ_free(long _res);
-       // uint64_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg);
        public static native long CResult_PaymentIdPaymentErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
        public static native long CResult_PaymentIdPaymentErrorZ_clone(long orig);
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_ok(enum LDKSiPrefix o);
-       public static native long CResult_SiPrefixNoneZ_ok(SiPrefix o);
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_err(void);
-       public static native long CResult_SiPrefixNoneZ_err();
-       // bool CResult_SiPrefixNoneZ_is_ok(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR o);
-       public static native boolean CResult_SiPrefixNoneZ_is_ok(long o);
-       // void CResult_SiPrefixNoneZ_free(struct LDKCResult_SiPrefixNoneZ _res);
-       public static native void CResult_SiPrefixNoneZ_free(long _res);
-       // uint64_t CResult_SiPrefixNoneZ_clone_ptr(LDKCResult_SiPrefixNoneZ *NONNULL_PTR arg);
-       public static native long CResult_SiPrefixNoneZ_clone_ptr(long arg);
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_clone(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR orig);
-       public static native long CResult_SiPrefixNoneZ_clone(long orig);
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_ok(struct LDKInvoice o);
-       public static native long CResult_InvoiceNoneZ_ok(long o);
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_err(void);
-       public static native long CResult_InvoiceNoneZ_err();
-       // bool CResult_InvoiceNoneZ_is_ok(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR o);
-       public static native boolean CResult_InvoiceNoneZ_is_ok(long o);
-       // void CResult_InvoiceNoneZ_free(struct LDKCResult_InvoiceNoneZ _res);
-       public static native void CResult_InvoiceNoneZ_free(long _res);
-       // uint64_t CResult_InvoiceNoneZ_clone_ptr(LDKCResult_InvoiceNoneZ *NONNULL_PTR arg);
-       public static native long CResult_InvoiceNoneZ_clone_ptr(long arg);
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_clone(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR orig);
-       public static native long CResult_InvoiceNoneZ_clone(long orig);
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_ok(struct LDKSignedRawInvoice o);
-       public static native long CResult_SignedRawInvoiceNoneZ_ok(long o);
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_err(void);
-       public static native long CResult_SignedRawInvoiceNoneZ_err();
-       // bool CResult_SignedRawInvoiceNoneZ_is_ok(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR o);
-       public static native boolean CResult_SignedRawInvoiceNoneZ_is_ok(long o);
-       // void CResult_SignedRawInvoiceNoneZ_free(struct LDKCResult_SignedRawInvoiceNoneZ _res);
-       public static native void CResult_SignedRawInvoiceNoneZ_free(long _res);
-       // uint64_t CResult_SignedRawInvoiceNoneZ_clone_ptr(LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR arg);
-       public static native long CResult_SignedRawInvoiceNoneZ_clone_ptr(long arg);
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_clone(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR orig);
-       public static native long CResult_SignedRawInvoiceNoneZ_clone(long orig);
-       // uint64_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg);
+       // struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_ok(enum LDKSiPrefix o);
+       public static native long CResult_SiPrefixParseErrorZ_ok(SiPrefix o);
+       // struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_err(struct LDKParseError e);
+       public static native long CResult_SiPrefixParseErrorZ_err(long e);
+       // bool CResult_SiPrefixParseErrorZ_is_ok(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_SiPrefixParseErrorZ_is_ok(long o);
+       // void CResult_SiPrefixParseErrorZ_free(struct LDKCResult_SiPrefixParseErrorZ _res);
+       public static native void CResult_SiPrefixParseErrorZ_free(long _res);
+       // uintptr_t CResult_SiPrefixParseErrorZ_clone_ptr(LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR arg);
+       public static native long CResult_SiPrefixParseErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_clone(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR orig);
+       public static native long CResult_SiPrefixParseErrorZ_clone(long orig);
+       // struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_ok(struct LDKInvoice o);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_ok(long o);
+       // struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_err(struct LDKParseOrSemanticError e);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_err(long e);
+       // bool CResult_InvoiceParseOrSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InvoiceParseOrSemanticErrorZ_is_ok(long o);
+       // void CResult_InvoiceParseOrSemanticErrorZ_free(struct LDKCResult_InvoiceParseOrSemanticErrorZ _res);
+       public static native void CResult_InvoiceParseOrSemanticErrorZ_free(long _res);
+       // uintptr_t CResult_InvoiceParseOrSemanticErrorZ_clone_ptr(LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR arg);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_clone(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR orig);
+       public static native long CResult_InvoiceParseOrSemanticErrorZ_clone(long orig);
+       // struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_ok(struct LDKSignedRawInvoice o);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_ok(long o);
+       // struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_err(struct LDKParseError e);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_err(long e);
+       // bool CResult_SignedRawInvoiceParseErrorZ_is_ok(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_SignedRawInvoiceParseErrorZ_is_ok(long o);
+       // void CResult_SignedRawInvoiceParseErrorZ_free(struct LDKCResult_SignedRawInvoiceParseErrorZ _res);
+       public static native void CResult_SignedRawInvoiceParseErrorZ_free(long _res);
+       // uintptr_t CResult_SignedRawInvoiceParseErrorZ_clone_ptr(LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR arg);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_clone(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR orig);
+       public static native long CResult_SignedRawInvoiceParseErrorZ_clone(long orig);
+       // uintptr_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg);
        public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(long arg);
        // struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
        public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(long orig);
@@ -2205,7 +2896,7 @@ public class bindings {
        public static native boolean CResult_PayeePubKeyErrorZ_is_ok(long o);
        // void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
        public static native void CResult_PayeePubKeyErrorZ_free(long _res);
-       // uint64_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg);
        public static native long CResult_PayeePubKeyErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
        public static native long CResult_PayeePubKeyErrorZ_clone(long orig);
@@ -2219,7 +2910,7 @@ public class bindings {
        public static native boolean CResult_PositiveTimestampCreationErrorZ_is_ok(long o);
        // void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
        public static native void CResult_PositiveTimestampCreationErrorZ_free(long _res);
-       // uint64_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg);
        public static native long CResult_PositiveTimestampCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_PositiveTimestampCreationErrorZ_clone(long orig);
@@ -2231,7 +2922,7 @@ public class bindings {
        public static native boolean CResult_NoneSemanticErrorZ_is_ok(long o);
        // void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
        public static native void CResult_NoneSemanticErrorZ_free(long _res);
-       // uint64_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg);
        public static native long CResult_NoneSemanticErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneSemanticErrorZ_clone(long orig);
@@ -2243,7 +2934,7 @@ public class bindings {
        public static native boolean CResult_InvoiceSemanticErrorZ_is_ok(long o);
        // void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
        public static native void CResult_InvoiceSemanticErrorZ_free(long _res);
-       // uint64_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg);
        public static native long CResult_InvoiceSemanticErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
        public static native long CResult_InvoiceSemanticErrorZ_clone(long orig);
@@ -2255,22 +2946,10 @@ public class bindings {
        public static native boolean CResult_DescriptionCreationErrorZ_is_ok(long o);
        // void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
        public static native void CResult_DescriptionCreationErrorZ_free(long _res);
-       // uint64_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg);
        public static native long CResult_DescriptionCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_DescriptionCreationErrorZ_clone(long orig);
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_ok(struct LDKExpiryTime o);
-       public static native long CResult_ExpiryTimeCreationErrorZ_ok(long o);
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_err(enum LDKCreationError e);
-       public static native long CResult_ExpiryTimeCreationErrorZ_err(CreationError e);
-       // bool CResult_ExpiryTimeCreationErrorZ_is_ok(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_ExpiryTimeCreationErrorZ_is_ok(long o);
-       // void CResult_ExpiryTimeCreationErrorZ_free(struct LDKCResult_ExpiryTimeCreationErrorZ _res);
-       public static native void CResult_ExpiryTimeCreationErrorZ_free(long _res);
-       // uint64_t CResult_ExpiryTimeCreationErrorZ_clone_ptr(LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR arg);
-       public static native long CResult_ExpiryTimeCreationErrorZ_clone_ptr(long arg);
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_clone(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR orig);
-       public static native long CResult_ExpiryTimeCreationErrorZ_clone(long orig);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
        public static native long CResult_PrivateRouteCreationErrorZ_ok(long o);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
@@ -2279,7 +2958,7 @@ public class bindings {
        public static native boolean CResult_PrivateRouteCreationErrorZ_is_ok(long o);
        // void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
        public static native void CResult_PrivateRouteCreationErrorZ_free(long _res);
-       // uint64_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg);
        public static native long CResult_PrivateRouteCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_PrivateRouteCreationErrorZ_clone(long orig);
@@ -2299,7 +2978,7 @@ public class bindings {
        public static native boolean CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
        public static native void CResult_ChannelMonitorUpdateDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_clone(long orig);
@@ -2309,7 +2988,7 @@ public class bindings {
        public static native long COption_MonitorEventZ_none();
        // void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
        public static native void COption_MonitorEventZ_free(long _res);
-       // uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg);
+       // uintptr_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg);
        public static native long COption_MonitorEventZ_clone_ptr(long arg);
        // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
        public static native long COption_MonitorEventZ_clone(long orig);
@@ -2321,7 +3000,7 @@ public class bindings {
        public static native boolean CResult_COption_MonitorEventZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
        public static native void CResult_COption_MonitorEventZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_MonitorEventZDecodeErrorZ_clone(long orig);
@@ -2333,23 +3012,11 @@ public class bindings {
        public static native boolean CResult_HTLCUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
        public static native void CResult_HTLCUpdateDecodeErrorZ_free(long _res);
-       // uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_HTLCUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HTLCUpdateDecodeErrorZ_clone(long orig);
-       // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
-       public static native long CResult_NoneMonitorUpdateErrorZ_ok();
-       // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
-       public static native long CResult_NoneMonitorUpdateErrorZ_err(long e);
-       // bool CResult_NoneMonitorUpdateErrorZ_is_ok(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_NoneMonitorUpdateErrorZ_is_ok(long o);
-       // void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
-       public static native void CResult_NoneMonitorUpdateErrorZ_free(long _res);
-       // uint64_t CResult_NoneMonitorUpdateErrorZ_clone_ptr(LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR arg);
-       public static native long CResult_NoneMonitorUpdateErrorZ_clone_ptr(long arg);
-       // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
-       public static native long CResult_NoneMonitorUpdateErrorZ_clone(long orig);
-       // uint64_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg);
        public static native long C2Tuple_OutPointScriptZ_clone_ptr(long arg);
        // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
        public static native long C2Tuple_OutPointScriptZ_clone(long orig);
@@ -2357,7 +3024,7 @@ public class bindings {
        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);
-       // uint64_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg);
        public static native long C2Tuple_u32ScriptZ_clone_ptr(long arg);
        // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
        public static native long C2Tuple_u32ScriptZ_clone(long orig);
@@ -2367,7 +3034,7 @@ public class bindings {
        public static native void C2Tuple_u32ScriptZ_free(long _res);
        // void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
        public static native void CVec_C2Tuple_u32ScriptZZ_free(long[] _res);
-       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(long arg);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(long orig);
@@ -2381,7 +3048,7 @@ public class bindings {
        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);
-       // uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg);
        public static native long C2Tuple_u32TxOutZ_clone_ptr(long arg);
        // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
        public static native long C2Tuple_u32TxOutZ_clone(long orig);
@@ -2391,7 +3058,7 @@ public class bindings {
        public static native void C2Tuple_u32TxOutZ_free(long _res);
        // void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
        public static native void CVec_C2Tuple_u32TxOutZZ_free(long[] _res);
-       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(long arg);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(long orig);
@@ -2411,7 +3078,7 @@ public class bindings {
        public static native boolean CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(long o);
        // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
        public static native void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(long orig);
@@ -2423,11 +3090,11 @@ public class bindings {
        public static native boolean CResult_NoneLightningErrorZ_is_ok(long o);
        // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
        public static native void CResult_NoneLightningErrorZ_free(long _res);
-       // uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg);
        public static native long CResult_NoneLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneLightningErrorZ_clone(long orig);
-       // uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg);
+       // uintptr_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg);
        public static native long C2Tuple_PublicKeyTypeZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_clone(const struct LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR orig);
        public static native long C2Tuple_PublicKeyTypeZ_clone(long orig);
@@ -2445,11 +3112,11 @@ public class bindings {
        public static native boolean CResult_boolLightningErrorZ_is_ok(long o);
        // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
        public static native void CResult_boolLightningErrorZ_free(long _res);
-       // uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg);
        public static native long CResult_boolLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_boolLightningErrorZ_clone(long orig);
-       // uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg);
+       // uintptr_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg);
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(long arg);
        // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(long orig);
@@ -2463,6 +3130,16 @@ public class bindings {
        public static native void CVec_NodeAnnouncementZ_free(long[] _res);
        // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
        public static native void CVec_PublicKeyZ_free(byte[][] _res);
+       // struct LDKCOption_NetAddressZ COption_NetAddressZ_some(struct LDKNetAddress o);
+       public static native long COption_NetAddressZ_some(long o);
+       // struct LDKCOption_NetAddressZ COption_NetAddressZ_none(void);
+       public static native long COption_NetAddressZ_none();
+       // void COption_NetAddressZ_free(struct LDKCOption_NetAddressZ _res);
+       public static native void COption_NetAddressZ_free(long _res);
+       // uintptr_t COption_NetAddressZ_clone_ptr(LDKCOption_NetAddressZ *NONNULL_PTR arg);
+       public static native long COption_NetAddressZ_clone_ptr(long arg);
+       // struct LDKCOption_NetAddressZ COption_NetAddressZ_clone(const struct LDKCOption_NetAddressZ *NONNULL_PTR orig);
+       public static native long COption_NetAddressZ_clone(long orig);
        // 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);
@@ -2471,7 +3148,7 @@ public class bindings {
        public static native boolean CResult_CVec_u8ZPeerHandleErrorZ_is_ok(long o);
        // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
        public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res);
-       // uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg);
        public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(long arg);
        // 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);
@@ -2483,7 +3160,7 @@ public class bindings {
        public static native boolean CResult_NonePeerHandleErrorZ_is_ok(long o);
        // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
        public static native void CResult_NonePeerHandleErrorZ_free(long _res);
-       // uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg);
        public static native long CResult_NonePeerHandleErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
        public static native long CResult_NonePeerHandleErrorZ_clone(long orig);
@@ -2495,7 +3172,7 @@ public class bindings {
        public static native boolean CResult_boolPeerHandleErrorZ_is_ok(long o);
        // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
        public static native void CResult_boolPeerHandleErrorZ_free(long _res);
-       // uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg);
        public static native long CResult_boolPeerHandleErrorZ_clone_ptr(long arg);
        // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
        public static native long CResult_boolPeerHandleErrorZ_clone(long orig);
@@ -2507,7 +3184,7 @@ public class bindings {
        public static native boolean CResult_NodeIdDecodeErrorZ_is_ok(long o);
        // void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
        public static native void CResult_NodeIdDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NodeIdDecodeErrorZ_clone_ptr(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NodeIdDecodeErrorZ_clone_ptr(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NodeIdDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeIdDecodeErrorZ_clone(long orig);
@@ -2519,7 +3196,7 @@ public class bindings {
        public static native boolean CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
        public static native void CResult_COption_NetworkUpdateZDecodeErrorZ_free(long _res);
-       // uint64_t CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_clone(long orig);
@@ -2529,18 +3206,18 @@ public class bindings {
        public static native long COption_AccessZ_none();
        // void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
        public static native void COption_AccessZ_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);
-       // bool CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR o);
-       public static native boolean CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(long o);
-       // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
-       public static native void CResult_DirectionalChannelInfoDecodeErrorZ_free(long _res);
-       // uint64_t CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR arg);
-       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(long arg);
-       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
-       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_ok(struct LDKChannelUpdateInfo o);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_ok(long o);
+       // struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_err(long e);
+       // bool CResult_ChannelUpdateInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelUpdateInfoDecodeErrorZ_is_ok(long o);
+       // void CResult_ChannelUpdateInfoDecodeErrorZ_free(struct LDKCResult_ChannelUpdateInfoDecodeErrorZ _res);
+       public static native void CResult_ChannelUpdateInfoDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_ChannelUpdateInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_ChannelUpdateInfoDecodeErrorZ_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);
@@ -2549,7 +3226,7 @@ public class bindings {
        public static native boolean CResult_ChannelInfoDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
        public static native void CResult_ChannelInfoDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelInfoDecodeErrorZ_clone(long orig);
@@ -2561,7 +3238,7 @@ public class bindings {
        public static native boolean CResult_RoutingFeesDecodeErrorZ_is_ok(long o);
        // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
        public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RoutingFeesDecodeErrorZ_clone_ptr(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RoutingFeesDecodeErrorZ_clone_ptr(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RoutingFeesDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RoutingFeesDecodeErrorZ_clone(long orig);
@@ -2573,7 +3250,7 @@ public class bindings {
        public static native boolean CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(long o);
        // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
        public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig);
@@ -2587,7 +3264,7 @@ public class bindings {
        public static native boolean CResult_NodeInfoDecodeErrorZ_is_ok(long o);
        // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
        public static native void CResult_NodeInfoDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NodeInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NodeInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NodeInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig);
@@ -2599,7 +3276,7 @@ public class bindings {
        public static native boolean CResult_NetworkGraphDecodeErrorZ_is_ok(long o);
        // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
        public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NetworkGraphDecodeErrorZ_clone_ptr(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NetworkGraphDecodeErrorZ_clone_ptr(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NetworkGraphDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NetworkGraphDecodeErrorZ_clone(long orig);
@@ -2609,7 +3286,7 @@ public class bindings {
        public static native long COption_CVec_NetAddressZZ_none();
        // void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
        public static native void COption_CVec_NetAddressZZ_free(long _res);
-       // uint64_t COption_CVec_NetAddressZZ_clone_ptr(LDKCOption_CVec_NetAddressZZ *NONNULL_PTR arg);
+       // uintptr_t COption_CVec_NetAddressZZ_clone_ptr(LDKCOption_CVec_NetAddressZZ *NONNULL_PTR arg);
        public static native long COption_CVec_NetAddressZZ_clone_ptr(long arg);
        // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
        public static native long COption_CVec_NetAddressZZ_clone(long orig);
@@ -2621,7 +3298,7 @@ public class bindings {
        public static native boolean CResult_NetAddressDecodeErrorZ_is_ok(long o);
        // void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
        public static native void CResult_NetAddressDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NetAddressDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NetAddressDecodeErrorZ_clone(long orig);
@@ -2641,7 +3318,7 @@ public class bindings {
        public static native boolean CResult_AcceptChannelDecodeErrorZ_is_ok(long o);
        // void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
        public static native void CResult_AcceptChannelDecodeErrorZ_free(long _res);
-       // uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_AcceptChannelDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_AcceptChannelDecodeErrorZ_clone(long orig);
@@ -2653,7 +3330,7 @@ public class bindings {
        public static native boolean CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(long o);
        // void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
        public static native void CResult_AnnouncementSignaturesDecodeErrorZ_free(long _res);
-       // uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_AnnouncementSignaturesDecodeErrorZ_clone(long orig);
@@ -2665,7 +3342,7 @@ public class bindings {
        public static native boolean CResult_ChannelReestablishDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
        public static native void CResult_ChannelReestablishDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelReestablishDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelReestablishDecodeErrorZ_clone(long orig);
@@ -2677,7 +3354,7 @@ public class bindings {
        public static native boolean CResult_ClosingSignedDecodeErrorZ_is_ok(long o);
        // void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
        public static native void CResult_ClosingSignedDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ClosingSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ClosingSignedDecodeErrorZ_clone(long orig);
@@ -2689,7 +3366,7 @@ public class bindings {
        public static native boolean CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(long o);
        // void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
        public static native void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(long orig);
@@ -2701,7 +3378,7 @@ public class bindings {
        public static native boolean CResult_CommitmentSignedDecodeErrorZ_is_ok(long o);
        // void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
        public static native void CResult_CommitmentSignedDecodeErrorZ_free(long _res);
-       // uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_CommitmentSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CommitmentSignedDecodeErrorZ_clone(long orig);
@@ -2713,7 +3390,7 @@ public class bindings {
        public static native boolean CResult_FundingCreatedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
        public static native void CResult_FundingCreatedDecodeErrorZ_free(long _res);
-       // uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_FundingCreatedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingCreatedDecodeErrorZ_clone(long orig);
@@ -2725,7 +3402,7 @@ public class bindings {
        public static native boolean CResult_FundingSignedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
        public static native void CResult_FundingSignedDecodeErrorZ_free(long _res);
-       // uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_FundingSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingSignedDecodeErrorZ_clone(long orig);
@@ -2737,7 +3414,7 @@ public class bindings {
        public static native boolean CResult_FundingLockedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
        public static native void CResult_FundingLockedDecodeErrorZ_free(long _res);
-       // uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_FundingLockedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingLockedDecodeErrorZ_clone(long orig);
@@ -2749,7 +3426,7 @@ public class bindings {
        public static native boolean CResult_InitDecodeErrorZ_is_ok(long o);
        // void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
        public static native void CResult_InitDecodeErrorZ_free(long _res);
-       // uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_InitDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_InitDecodeErrorZ_clone(long orig);
@@ -2761,7 +3438,7 @@ public class bindings {
        public static native boolean CResult_OpenChannelDecodeErrorZ_is_ok(long o);
        // void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
        public static native void CResult_OpenChannelDecodeErrorZ_free(long _res);
-       // uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_OpenChannelDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_OpenChannelDecodeErrorZ_clone(long orig);
@@ -2773,7 +3450,7 @@ public class bindings {
        public static native boolean CResult_RevokeAndACKDecodeErrorZ_is_ok(long o);
        // void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
        public static native void CResult_RevokeAndACKDecodeErrorZ_free(long _res);
-       // uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_RevokeAndACKDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RevokeAndACKDecodeErrorZ_clone(long orig);
@@ -2785,7 +3462,7 @@ public class bindings {
        public static native boolean CResult_ShutdownDecodeErrorZ_is_ok(long o);
        // void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
        public static native void CResult_ShutdownDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ShutdownDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownDecodeErrorZ_clone(long orig);
@@ -2797,7 +3474,7 @@ public class bindings {
        public static native boolean CResult_UpdateFailHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFailHTLCDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFailHTLCDecodeErrorZ_clone(long orig);
@@ -2809,7 +3486,7 @@ public class bindings {
        public static native boolean CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(long orig);
@@ -2821,7 +3498,7 @@ public class bindings {
        public static native boolean CResult_UpdateFeeDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
        public static native void CResult_UpdateFeeDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UpdateFeeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFeeDecodeErrorZ_clone(long orig);
@@ -2833,7 +3510,7 @@ public class bindings {
        public static native boolean CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFulfillHTLCDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_clone(long orig);
@@ -2845,7 +3522,7 @@ public class bindings {
        public static native boolean CResult_UpdateAddHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateAddHTLCDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateAddHTLCDecodeErrorZ_clone(long orig);
@@ -2857,7 +3534,7 @@ public class bindings {
        public static native boolean CResult_PingDecodeErrorZ_is_ok(long o);
        // void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
        public static native void CResult_PingDecodeErrorZ_free(long _res);
-       // uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_PingDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_PingDecodeErrorZ_clone(long orig);
@@ -2869,7 +3546,7 @@ public class bindings {
        public static native boolean CResult_PongDecodeErrorZ_is_ok(long o);
        // void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
        public static native void CResult_PongDecodeErrorZ_free(long _res);
-       // uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_PongDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_PongDecodeErrorZ_clone(long orig);
@@ -2881,7 +3558,7 @@ public class bindings {
        public static native boolean CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
        public static native void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(long orig);
@@ -2893,7 +3570,7 @@ public class bindings {
        public static native boolean CResult_ChannelAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
        public static native void CResult_ChannelAnnouncementDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelAnnouncementDecodeErrorZ_clone(long orig);
@@ -2905,7 +3582,7 @@ public class bindings {
        public static native boolean CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
        public static native void CResult_UnsignedChannelUpdateDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_clone(long orig);
@@ -2917,7 +3594,7 @@ public class bindings {
        public static native boolean CResult_ChannelUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
        public static native void CResult_ChannelUpdateDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ChannelUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelUpdateDecodeErrorZ_clone(long orig);
@@ -2929,10 +3606,22 @@ public class bindings {
        public static native boolean CResult_ErrorMessageDecodeErrorZ_is_ok(long o);
        // void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
        public static native void CResult_ErrorMessageDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ErrorMessageDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ErrorMessageDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_ok(struct LDKWarningMessage o);
+       public static native long CResult_WarningMessageDecodeErrorZ_ok(long o);
+       // struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_WarningMessageDecodeErrorZ_err(long e);
+       // bool CResult_WarningMessageDecodeErrorZ_is_ok(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_WarningMessageDecodeErrorZ_is_ok(long o);
+       // void CResult_WarningMessageDecodeErrorZ_free(struct LDKCResult_WarningMessageDecodeErrorZ _res);
+       public static native void CResult_WarningMessageDecodeErrorZ_free(long _res);
+       // uintptr_t CResult_WarningMessageDecodeErrorZ_clone_ptr(LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_WarningMessageDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_clone(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_WarningMessageDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(long o);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
@@ -2941,7 +3630,7 @@ public class bindings {
        public static native boolean CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
        public static native void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(long _res);
-       // uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(long orig);
@@ -2953,7 +3642,7 @@ public class bindings {
        public static native boolean CResult_NodeAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
        public static native void CResult_NodeAnnouncementDecodeErrorZ_free(long _res);
-       // uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeAnnouncementDecodeErrorZ_clone(long orig);
@@ -2965,7 +3654,7 @@ public class bindings {
        public static native boolean CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(long o);
        // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
        public static native void CResult_QueryShortChannelIdsDecodeErrorZ_free(long _res);
-       // uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_QueryShortChannelIdsDecodeErrorZ_clone(long orig);
@@ -2977,7 +3666,7 @@ public class bindings {
        public static native boolean CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(long o);
        // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
        public static native void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(long orig);
@@ -2989,7 +3678,7 @@ public class bindings {
        public static native boolean CResult_QueryChannelRangeDecodeErrorZ_is_ok(long o);
        // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
        public static native void CResult_QueryChannelRangeDecodeErrorZ_free(long _res);
-       // uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_QueryChannelRangeDecodeErrorZ_clone(long orig);
@@ -3001,7 +3690,7 @@ public class bindings {
        public static native boolean CResult_ReplyChannelRangeDecodeErrorZ_is_ok(long o);
        // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
        public static native void CResult_ReplyChannelRangeDecodeErrorZ_free(long _res);
-       // uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ReplyChannelRangeDecodeErrorZ_clone(long orig);
@@ -3013,10 +3702,12 @@ public class bindings {
        public static native boolean CResult_GossipTimestampFilterDecodeErrorZ_is_ok(long o);
        // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
        public static native void CResult_GossipTimestampFilterDecodeErrorZ_free(long _res);
-       // uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone(long orig);
+       // void CVec_PhantomRouteHintsZ_free(struct LDKCVec_PhantomRouteHintsZ _res);
+       public static native void CVec_PhantomRouteHintsZ_free(long[] _res);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
        public static native long CResult_InvoiceSignOrCreationErrorZ_ok(long o);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
@@ -3025,7 +3716,7 @@ public class bindings {
        public static native boolean CResult_InvoiceSignOrCreationErrorZ_is_ok(long o);
        // void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
        public static native void CResult_InvoiceSignOrCreationErrorZ_free(long _res);
-       // uint64_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg);
+       // uintptr_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg);
        public static native long CResult_InvoiceSignOrCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_InvoiceSignOrCreationErrorZ_clone(long orig);
@@ -3047,17 +3738,17 @@ public class bindings {
        public static native void CVec_OutPointZ_free(long[] _res);
        // void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
        public static native void PaymentPurpose_free(long this_ptr);
-       // uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg);
+       // uintptr_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg);
        public static native long PaymentPurpose_clone_ptr(long arg);
        // struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
        public static native long PaymentPurpose_clone(long orig);
-       // struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret, uint64_t user_payment_id);
-       public static native long PaymentPurpose_invoice_payment(byte[] payment_preimage, byte[] payment_secret, long user_payment_id);
+       // struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
+       public static native long PaymentPurpose_invoice_payment(byte[] payment_preimage, byte[] payment_secret);
        // struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
        public static native long PaymentPurpose_spontaneous_payment(byte[] a);
        // void ClosureReason_free(struct LDKClosureReason this_ptr);
        public static native void ClosureReason_free(long this_ptr);
-       // uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg);
+       // uintptr_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg);
        public static native long ClosureReason_clone_ptr(long arg);
        // struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
        public static native long ClosureReason_clone(long orig);
@@ -3069,6 +3760,8 @@ public class bindings {
        public static native long ClosureReason_cooperative_closure();
        // struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
        public static native long ClosureReason_commitment_tx_confirmed();
+       // struct LDKClosureReason ClosureReason_funding_timed_out(void);
+       public static native long ClosureReason_funding_timed_out();
        // struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
        public static native long ClosureReason_processing_error(String err);
        // struct LDKClosureReason ClosureReason_disconnected_peer(void);
@@ -3081,7 +3774,7 @@ public class bindings {
        public static native long ClosureReason_read(byte[] ser);
        // void Event_free(struct LDKEvent this_ptr);
        public static native void Event_free(long this_ptr);
-       // uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg);
+       // uintptr_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg);
        public static native long Event_clone_ptr(long arg);
        // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
        public static native long Event_clone(long orig);
@@ -3093,6 +3786,8 @@ public class bindings {
        public static native long Event_payment_sent(byte[] payment_id, byte[] payment_preimage, byte[] payment_hash, long fee_paid_msat);
        // struct LDKEvent Event_payment_path_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, bool rejected_by_dest, struct LDKCOption_NetworkUpdateZ network_update, bool all_paths_failed, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id, struct LDKRouteParameters retry);
        public static native long Event_payment_path_failed(byte[] payment_id, byte[] payment_hash, boolean rejected_by_dest, long network_update, boolean all_paths_failed, long[] path, long short_channel_id, long retry);
+       // struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
+       public static native long Event_payment_failed(byte[] payment_id, byte[] payment_hash);
        // struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
        public static native long Event_pending_htlcs_forwardable(long time_forwardable);
        // struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
@@ -3103,13 +3798,17 @@ public class bindings {
        public static native long Event_channel_closed(byte[] channel_id, long user_channel_id, long reason);
        // struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
        public static native long Event_discard_funding(byte[] channel_id, byte[] transaction);
+       // struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
+       public static native long Event_payment_path_successful(byte[] payment_id, byte[] payment_hash, long[] path);
+       // struct LDKEvent Event_open_channel_request(struct LDKThirtyTwoBytes temporary_channel_id, struct LDKPublicKey counterparty_node_id, uint64_t funding_satoshis, uint64_t push_msat, struct LDKChannelTypeFeatures channel_type);
+       public static native long Event_open_channel_request(byte[] temporary_channel_id, byte[] counterparty_node_id, long funding_satoshis, long push_msat, long channel_type);
        // struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
        public static native byte[] Event_write(long obj);
        // struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
        public static native long Event_read(byte[] ser);
        // void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
        public static native void MessageSendEvent_free(long this_ptr);
-       // uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg);
+       // uintptr_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg);
        public static native long MessageSendEvent_clone_ptr(long arg);
        // struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
        public static native long MessageSendEvent_clone(long orig);
@@ -3151,6 +3850,8 @@ public class bindings {
        public static native long MessageSendEvent_send_short_ids_query(byte[] node_id, long msg);
        // struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
        public static native long MessageSendEvent_send_reply_channel_range(byte[] node_id, long msg);
+       // struct LDKMessageSendEvent MessageSendEvent_send_gossip_timestamp_filter(struct LDKPublicKey node_id, struct LDKGossipTimestampFilter msg);
+       public static native long MessageSendEvent_send_gossip_timestamp_filter(byte[] node_id, long msg);
        // void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
        public static native void MessageSendEventsProvider_free(long this_ptr);
        // void EventsProvider_free(struct LDKEventsProvider this_ptr);
@@ -3159,7 +3860,7 @@ public class bindings {
        public static native void EventHandler_free(long this_ptr);
        // void APIError_free(struct LDKAPIError this_ptr);
        public static native void APIError_free(long this_ptr);
-       // uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg);
+       // uintptr_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg);
        public static native long APIError_clone_ptr(long arg);
        // struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
        public static native long APIError_clone(long orig);
@@ -3181,8 +3882,12 @@ public class bindings {
        public static native long recover_pk(byte[] msg, String sig);
        // bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
        public static native boolean verify(byte[] msg, String sig, byte[] pk);
+       // struct LDKCVec_u8Z construct_invoice_preimage(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z data_without_signature);
+       public static native byte[] construct_invoice_preimage(byte[] hrp_bytes, byte[] data_without_signature);
        // enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
        public static native Level Level_clone(long orig);
+       // enum LDKLevel Level_gossip(void);
+       public static native Level Level_gossip();
        // enum LDKLevel Level_trace(void);
        public static native Level Level_trace();
        // enum LDKLevel Level_debug(void);
@@ -3221,7 +3926,7 @@ public class bindings {
        public static native int Record_get_line(long this_ptr);
        // void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
        public static native void Record_set_line(long this_ptr, int val);
-       // uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg);
+       // uintptr_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg);
        public static native long Record_clone_ptr(long arg);
        // struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
        public static native long Record_clone(long orig);
@@ -3241,9 +3946,13 @@ public class bindings {
        public static native long ChannelHandshakeConfig_get_our_htlc_minimum_msat(long this_ptr);
        // void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelHandshakeConfig_set_our_htlc_minimum_msat(long this_ptr, long val);
-       // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
-       public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
-       // uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg);
+       // bool ChannelHandshakeConfig_get_negotiate_scid_privacy(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
+       public static native boolean ChannelHandshakeConfig_get_negotiate_scid_privacy(long this_ptr);
+       // void ChannelHandshakeConfig_set_negotiate_scid_privacy(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, bool val);
+       public static native void ChannelHandshakeConfig_set_negotiate_scid_privacy(long this_ptr, boolean val);
+       // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg, bool negotiate_scid_privacy_arg);
+       public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg, boolean negotiate_scid_privacy_arg);
+       // uintptr_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg);
        public static native long ChannelHandshakeConfig_clone_ptr(long arg);
        // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
        public static native long ChannelHandshakeConfig_clone(long orig);
@@ -3285,7 +3994,7 @@ public class bindings {
        public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, short val);
        // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
        public static native long ChannelHandshakeLimits_new(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, short min_max_accepted_htlcs_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, short their_to_self_delay_arg);
-       // uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg);
+       // uintptr_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg);
        public static native long ChannelHandshakeLimits_clone_ptr(long arg);
        // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
        public static native long ChannelHandshakeLimits_clone(long orig);
@@ -3323,7 +4032,7 @@ public class bindings {
        public static native void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t forwarding_fee_proportional_millionths_arg, uint32_t forwarding_fee_base_msat_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
        public static native long ChannelConfig_new(int forwarding_fee_proportional_millionths_arg, int forwarding_fee_base_msat_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg, long max_dust_htlc_exposure_msat_arg, long force_close_avoidance_max_fee_satoshis_arg);
-       // uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg);
+       // uintptr_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg);
        public static native long ChannelConfig_clone_ptr(long arg);
        // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
        public static native long ChannelConfig_clone(long orig);
@@ -3351,9 +4060,17 @@ public class bindings {
        public static native boolean UserConfig_get_accept_forwards_to_priv_channels(long this_ptr);
        // void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
        public static native void UserConfig_set_accept_forwards_to_priv_channels(long this_ptr, boolean val);
-       // MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig own_channel_config_arg, struct LDKChannelHandshakeLimits peer_channel_config_limits_arg, struct LDKChannelConfig channel_options_arg, bool accept_forwards_to_priv_channels_arg);
-       public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg, boolean accept_forwards_to_priv_channels_arg);
-       // uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg);
+       // bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       public static native boolean UserConfig_get_accept_inbound_channels(long this_ptr);
+       // void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
+       public static native void UserConfig_set_accept_inbound_channels(long this_ptr, boolean val);
+       // bool UserConfig_get_manually_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       public static native boolean UserConfig_get_manually_accept_inbound_channels(long this_ptr);
+       // void UserConfig_set_manually_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
+       public static native void UserConfig_set_manually_accept_inbound_channels(long this_ptr, boolean val);
+       // MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig own_channel_config_arg, struct LDKChannelHandshakeLimits peer_channel_config_limits_arg, struct LDKChannelConfig channel_options_arg, bool accept_forwards_to_priv_channels_arg, bool accept_inbound_channels_arg, bool manually_accept_inbound_channels_arg);
+       public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg, boolean accept_forwards_to_priv_channels_arg, boolean accept_inbound_channels_arg, boolean manually_accept_inbound_channels_arg);
+       // uintptr_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg);
        public static native long UserConfig_clone_ptr(long arg);
        // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
        public static native long UserConfig_clone(long orig);
@@ -3361,7 +4078,7 @@ public class bindings {
        public static native long UserConfig_default();
        // void BestBlock_free(struct LDKBestBlock this_obj);
        public static native void BestBlock_free(long this_obj);
-       // uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg);
+       // uintptr_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg);
        public static native long BestBlock_clone_ptr(long arg);
        // struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
        public static native long BestBlock_clone(long orig);
@@ -3411,7 +4128,7 @@ public class bindings {
        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);
-       // uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg);
+       // uintptr_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg);
        public static native long WatchedOutput_clone_ptr(long arg);
        // struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
        public static native long WatchedOutput_clone(long orig);
@@ -3433,7 +4150,7 @@ public class bindings {
        public static native void FeeEstimator_free(long this_ptr);
        // void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
        public static native void MonitorUpdateId_free(long this_obj);
-       // uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg);
+       // uintptr_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg);
        public static native long MonitorUpdateId_clone_ptr(long arg);
        // struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
        public static native long MonitorUpdateId_clone(long orig);
@@ -3471,7 +4188,7 @@ public class bindings {
        public static native long ChannelMonitorUpdate_get_update_id(long this_ptr);
        // void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val);
-       // uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg);
+       // uintptr_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg);
        public static native long ChannelMonitorUpdate_clone_ptr(long arg);
        // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
        public static native long ChannelMonitorUpdate_clone(long orig);
@@ -3479,21 +4196,9 @@ public class bindings {
        public static native byte[] ChannelMonitorUpdate_write(long obj);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
        public static native long ChannelMonitorUpdate_read(byte[] ser);
-       // void MonitorUpdateError_free(struct LDKMonitorUpdateError this_obj);
-       public static native void MonitorUpdateError_free(long this_obj);
-       // struct LDKStr MonitorUpdateError_get_a(const struct LDKMonitorUpdateError *NONNULL_PTR this_ptr);
-       public static native String MonitorUpdateError_get_a(long this_ptr);
-       // void MonitorUpdateError_set_a(struct LDKMonitorUpdateError *NONNULL_PTR this_ptr, struct LDKStr val);
-       public static native void MonitorUpdateError_set_a(long this_ptr, String val);
-       // MUST_USE_RES struct LDKMonitorUpdateError MonitorUpdateError_new(struct LDKStr a_arg);
-       public static native long MonitorUpdateError_new(String a_arg);
-       // uint64_t MonitorUpdateError_clone_ptr(LDKMonitorUpdateError *NONNULL_PTR arg);
-       public static native long MonitorUpdateError_clone_ptr(long arg);
-       // struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
-       public static native long MonitorUpdateError_clone(long orig);
        // void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
        public static native void MonitorEvent_free(long this_ptr);
-       // uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg);
+       // uintptr_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg);
        public static native long MonitorEvent_clone_ptr(long arg);
        // struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
        public static native long MonitorEvent_clone(long orig);
@@ -3511,7 +4216,7 @@ public class bindings {
        public static native long MonitorEvent_read(byte[] ser);
        // void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
        public static native void HTLCUpdate_free(long this_obj);
-       // uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg);
+       // uintptr_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg);
        public static native long HTLCUpdate_clone_ptr(long arg);
        // struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
        public static native long HTLCUpdate_clone(long orig);
@@ -3521,7 +4226,7 @@ public class bindings {
        public static native long HTLCUpdate_read(byte[] ser);
        // void Balance_free(struct LDKBalance this_ptr);
        public static native void Balance_free(long this_ptr);
-       // uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg);
+       // uintptr_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg);
        public static native long Balance_clone_ptr(long arg);
        // struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
        public static native long Balance_clone(long orig);
@@ -3537,13 +4242,13 @@ public class bindings {
        public static native boolean Balance_eq(long a, long b);
        // void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
        public static native void ChannelMonitor_free(long this_obj);
-       // uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg);
+       // uintptr_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg);
        public static native long ChannelMonitor_clone_ptr(long arg);
        // struct LDKChannelMonitor ChannelMonitor_clone(const struct LDKChannelMonitor *NONNULL_PTR orig);
        public static native long ChannelMonitor_clone(long orig);
        // struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
        public static native byte[] ChannelMonitor_write(long obj);
-       // MUST_USE_RES struct LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKChannelMonitorUpdate *NONNULL_PTR updates, const struct LDKBroadcasterInterface *NONNULL_PTR broadcaster, const struct LDKFeeEstimator *NONNULL_PTR fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
+       // MUST_USE_RES struct LDKCResult_NoneNoneZ ChannelMonitor_update_monitor(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKChannelMonitorUpdate *NONNULL_PTR updates, const struct LDKBroadcasterInterface *NONNULL_PTR broadcaster, const struct LDKFeeEstimator *NONNULL_PTR fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
        public static native long ChannelMonitor_update_monitor(long this_arg, long updates, long broadcaster, long fee_estimator, long logger);
        // MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
        public static native long ChannelMonitor_get_latest_update_id(long this_arg);
@@ -3589,7 +4294,7 @@ public class bindings {
        public static native void OutPoint_set_index(long this_ptr, short val);
        // MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
        public static native long OutPoint_new(byte[] txid_arg, short index_arg);
-       // uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg);
+       // uintptr_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg);
        public static native long OutPoint_clone_ptr(long arg);
        // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
        public static native long OutPoint_clone(long orig);
@@ -3633,7 +4338,7 @@ public class bindings {
        public static native void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKPublicKey per_commitment_point_arg, uint16_t to_self_delay_arg, struct LDKTxOut output_arg, struct LDKPublicKey revocation_pubkey_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
        public static native long DelayedPaymentOutputDescriptor_new(long outpoint_arg, byte[] per_commitment_point_arg, short to_self_delay_arg, long output_arg, byte[] revocation_pubkey_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg);
-       // uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg);
+       // uintptr_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg);
        public static native long DelayedPaymentOutputDescriptor_clone_ptr(long arg);
        // struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
        public static native long DelayedPaymentOutputDescriptor_clone(long orig);
@@ -3659,7 +4364,7 @@ public class bindings {
        public static native void StaticPaymentOutputDescriptor_set_channel_value_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKTxOut output_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
        public static native long StaticPaymentOutputDescriptor_new(long outpoint_arg, long output_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg);
-       // uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg);
+       // uintptr_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg);
        public static native long StaticPaymentOutputDescriptor_clone_ptr(long arg);
        // struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
        public static native long StaticPaymentOutputDescriptor_clone(long orig);
@@ -3669,7 +4374,7 @@ public class bindings {
        public static native long StaticPaymentOutputDescriptor_read(byte[] ser);
        // void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
        public static native void SpendableOutputDescriptor_free(long this_ptr);
-       // uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg);
+       // uintptr_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg);
        public static native long SpendableOutputDescriptor_clone_ptr(long arg);
        // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
        public static native long SpendableOutputDescriptor_clone(long orig);
@@ -3685,12 +4390,18 @@ public class bindings {
        public static native long SpendableOutputDescriptor_read(byte[] ser);
        // void BaseSign_free(struct LDKBaseSign this_ptr);
        public static native void BaseSign_free(long this_ptr);
-       // uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg);
+       // uintptr_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg);
        public static native long Sign_clone_ptr(long arg);
        // 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);
        public static native void Sign_free(long this_ptr);
+       // enum LDKRecipient Recipient_clone(const enum LDKRecipient *NONNULL_PTR orig);
+       public static native Recipient Recipient_clone(long orig);
+       // enum LDKRecipient Recipient_node(void);
+       public static native Recipient Recipient_node();
+       // enum LDKRecipient Recipient_phantom_node(void);
+       public static native Recipient Recipient_phantom_node();
        // void KeysInterface_free(struct LDKKeysInterface this_ptr);
        public static native void KeysInterface_free(long this_ptr);
        // void InMemorySigner_free(struct LDKInMemorySigner this_obj);
@@ -3719,12 +4430,12 @@ public class bindings {
        public static native byte[] InMemorySigner_get_commitment_seed(long this_ptr);
        // void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
        public static native void InMemorySigner_set_commitment_seed(long this_ptr, byte[] val);
-       // uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg);
+       // uintptr_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg);
        public static native long InMemorySigner_clone_ptr(long arg);
        // struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
        public static native long InMemorySigner_clone(long orig);
-       // MUST_USE_RES struct LDKInMemorySigner InMemorySigner_new(struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
-       public static native long InMemorySigner_new(byte[] funding_key, byte[] revocation_base_key, byte[] payment_key, byte[] delayed_payment_base_key, byte[] htlc_base_key, byte[] commitment_seed, long channel_value_satoshis, byte[] channel_keys_id);
+       // MUST_USE_RES struct LDKInMemorySigner InMemorySigner_new(struct LDKSecretKey node_secret, struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
+       public static native long InMemorySigner_new(byte[] node_secret, byte[] funding_key, byte[] revocation_base_key, byte[] payment_key, byte[] delayed_payment_base_key, byte[] htlc_base_key, byte[] commitment_seed, long channel_value_satoshis, byte[] channel_keys_id);
        // MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
        public static native long InMemorySigner_counterparty_pubkeys(long this_arg);
        // MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
@@ -3737,6 +4448,8 @@ public class bindings {
        public static native long InMemorySigner_funding_outpoint(long this_arg);
        // MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
        public static native long InMemorySigner_get_channel_parameters(long this_arg);
+       // MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       public static native boolean InMemorySigner_opt_anchors(long this_arg);
        // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_counterparty_payment_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR descriptor);
        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);
@@ -3747,8 +4460,8 @@ public class bindings {
        public static native long InMemorySigner_as_Sign(long this_arg);
        // struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
        public static native byte[] InMemorySigner_write(long obj);
-       // struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
-       public static native long InMemorySigner_read(byte[] ser);
+       // struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser, struct LDKSecretKey arg);
+       public static native long InMemorySigner_read(byte[] ser, byte[] arg);
        // void KeysManager_free(struct LDKKeysManager this_obj);
        public static native void KeysManager_free(long this_obj);
        // MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
@@ -3759,6 +4472,16 @@ public class bindings {
        public static native long KeysManager_spend_spendable_outputs(long this_arg, long[] descriptors, long[] outputs, byte[] change_destination_script, int feerate_sat_per_1000_weight);
        // struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
        public static native long KeysManager_as_KeysInterface(long this_arg);
+       // void PhantomKeysManager_free(struct LDKPhantomKeysManager this_obj);
+       public static native void PhantomKeysManager_free(long this_obj);
+       // struct LDKKeysInterface PhantomKeysManager_as_KeysInterface(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg);
+       public static native long PhantomKeysManager_as_KeysInterface(long this_arg);
+       // MUST_USE_RES struct LDKPhantomKeysManager PhantomKeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos, const uint8_t (*cross_node_seed)[32]);
+       public static native long PhantomKeysManager_new(byte[] seed, long starting_time_secs, int starting_time_nanos, byte[] cross_node_seed);
+       // MUST_USE_RES struct LDKCResult_TransactionNoneZ PhantomKeysManager_spend_spendable_outputs(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg, struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight);
+       public static native long PhantomKeysManager_spend_spendable_outputs(long this_arg, long[] descriptors, long[] outputs, byte[] change_destination_script, int feerate_sat_per_1000_weight);
+       // MUST_USE_RES struct LDKInMemorySigner PhantomKeysManager_derive_channel_keys(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg, uint64_t channel_value_satoshis, const uint8_t (*params)[32]);
+       public static native long PhantomKeysManager_derive_channel_keys(long this_arg, long channel_value_satoshis, byte[] params);
        // void ChannelManager_free(struct LDKChannelManager this_obj);
        public static native void ChannelManager_free(long this_obj);
        // void ChainParameters_free(struct LDKChainParameters this_obj);
@@ -3773,7 +4496,7 @@ public class bindings {
        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(Network network_arg, long best_block_arg);
-       // uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg);
+       // uintptr_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg);
        public static native long ChainParameters_clone_ptr(long arg);
        // struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
        public static native long ChainParameters_clone(long orig);
@@ -3793,7 +4516,7 @@ public class bindings {
        public static native void CounterpartyForwardingInfo_set_cltv_expiry_delta(long this_ptr, short val);
        // MUST_USE_RES struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_new(uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg);
        public static native long CounterpartyForwardingInfo_new(int fee_base_msat_arg, int fee_proportional_millionths_arg, short cltv_expiry_delta_arg);
-       // uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg);
+       // uintptr_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg);
        public static native long CounterpartyForwardingInfo_clone_ptr(long arg);
        // struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
        public static native long CounterpartyForwardingInfo_clone(long orig);
@@ -3817,7 +4540,7 @@ public class bindings {
        public static native void ChannelCounterparty_set_forwarding_info(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelCounterparty ChannelCounterparty_new(struct LDKPublicKey node_id_arg, struct LDKInitFeatures features_arg, uint64_t unspendable_punishment_reserve_arg, struct LDKCounterpartyForwardingInfo forwarding_info_arg);
        public static native long ChannelCounterparty_new(byte[] node_id_arg, long features_arg, long unspendable_punishment_reserve_arg, long forwarding_info_arg);
-       // uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg);
+       // uintptr_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg);
        public static native long ChannelCounterparty_clone_ptr(long arg);
        // struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
        public static native long ChannelCounterparty_clone(long orig);
@@ -3835,10 +4558,18 @@ public class bindings {
        public static native long ChannelDetails_get_funding_txo(long this_ptr);
        // void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
        public static native void ChannelDetails_set_funding_txo(long this_ptr, long val);
+       // struct LDKChannelTypeFeatures ChannelDetails_get_channel_type(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       public static native long ChannelDetails_get_channel_type(long this_ptr);
+       // void ChannelDetails_set_channel_type(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
+       public static native void ChannelDetails_set_channel_type(long this_ptr, long 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 LDKCOption_u64Z ChannelDetails_get_inbound_scid_alias(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       public static native long ChannelDetails_get_inbound_scid_alias(long this_ptr);
+       // void ChannelDetails_set_inbound_scid_alias(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void ChannelDetails_set_inbound_scid_alias(long this_ptr, long val);
        // uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
        public static native long ChannelDetails_get_channel_value_satoshis(long this_ptr);
        // void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
@@ -3851,6 +4582,10 @@ public class bindings {
        public static native long ChannelDetails_get_user_channel_id(long this_ptr);
        // void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelDetails_set_user_channel_id(long this_ptr, long val);
+       // uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       public static native long ChannelDetails_get_balance_msat(long this_ptr);
+       // void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ChannelDetails_set_balance_msat(long this_ptr, long val);
        // uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
        public static native long ChannelDetails_get_outbound_capacity_msat(long this_ptr);
        // void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
@@ -3883,15 +4618,17 @@ public class bindings {
        public static native boolean ChannelDetails_get_is_public(long this_ptr);
        // void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
        public static native void ChannelDetails_set_is_public(long this_ptr, boolean val);
-       // MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
-       public static native long ChannelDetails_new(byte[] channel_id_arg, long counterparty_arg, long funding_txo_arg, long short_channel_id_arg, long channel_value_satoshis_arg, long unspendable_punishment_reserve_arg, long user_channel_id_arg, long outbound_capacity_msat_arg, long inbound_capacity_msat_arg, long confirmations_required_arg, long force_close_spend_delay_arg, boolean is_outbound_arg, boolean is_funding_locked_arg, boolean is_usable_arg, boolean is_public_arg);
-       // uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg);
+       // MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKChannelTypeFeatures channel_type_arg, struct LDKCOption_u64Z short_channel_id_arg, struct LDKCOption_u64Z inbound_scid_alias_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t balance_msat_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
+       public static native long ChannelDetails_new(byte[] channel_id_arg, long counterparty_arg, long funding_txo_arg, long channel_type_arg, long short_channel_id_arg, long inbound_scid_alias_arg, long channel_value_satoshis_arg, long unspendable_punishment_reserve_arg, long user_channel_id_arg, long balance_msat_arg, long outbound_capacity_msat_arg, long inbound_capacity_msat_arg, long confirmations_required_arg, long force_close_spend_delay_arg, boolean is_outbound_arg, boolean is_funding_locked_arg, boolean is_usable_arg, boolean is_public_arg);
+       // uintptr_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg);
        public static native long ChannelDetails_clone_ptr(long arg);
        // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
        public static native long ChannelDetails_clone(long orig);
+       // MUST_USE_RES struct LDKCOption_u64Z ChannelDetails_get_inbound_payment_scid(const struct LDKChannelDetails *NONNULL_PTR this_arg);
+       public static native long ChannelDetails_get_inbound_payment_scid(long this_arg);
        // void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
        public static native void PaymentSendFailure_free(long this_ptr);
-       // uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg);
+       // uintptr_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg);
        public static native long PaymentSendFailure_clone_ptr(long arg);
        // struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
        public static native long PaymentSendFailure_clone(long orig);
@@ -3903,6 +4640,26 @@ public class bindings {
        public static native long PaymentSendFailure_all_failed_retry_safe(long[] a);
        // struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
        public static native long PaymentSendFailure_partial_failure(long[] results, long failed_paths_retry, byte[] payment_id);
+       // void PhantomRouteHints_free(struct LDKPhantomRouteHints this_obj);
+       public static native void PhantomRouteHints_free(long this_obj);
+       // struct LDKCVec_ChannelDetailsZ PhantomRouteHints_get_channels(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
+       public static native long[] PhantomRouteHints_get_channels(long this_ptr);
+       // void PhantomRouteHints_set_channels(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKCVec_ChannelDetailsZ val);
+       public static native void PhantomRouteHints_set_channels(long this_ptr, long[] val);
+       // uint64_t PhantomRouteHints_get_phantom_scid(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
+       public static native long PhantomRouteHints_get_phantom_scid(long this_ptr);
+       // void PhantomRouteHints_set_phantom_scid(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void PhantomRouteHints_set_phantom_scid(long this_ptr, long val);
+       // struct LDKPublicKey PhantomRouteHints_get_real_node_pubkey(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
+       public static native byte[] PhantomRouteHints_get_real_node_pubkey(long this_ptr);
+       // void PhantomRouteHints_set_real_node_pubkey(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       public static native void PhantomRouteHints_set_real_node_pubkey(long this_ptr, byte[] val);
+       // MUST_USE_RES struct LDKPhantomRouteHints PhantomRouteHints_new(struct LDKCVec_ChannelDetailsZ channels_arg, uint64_t phantom_scid_arg, struct LDKPublicKey real_node_pubkey_arg);
+       public static native long PhantomRouteHints_new(long[] channels_arg, long phantom_scid_arg, byte[] real_node_pubkey_arg);
+       // uintptr_t PhantomRouteHints_clone_ptr(LDKPhantomRouteHints *NONNULL_PTR arg);
+       public static native long PhantomRouteHints_clone_ptr(long arg);
+       // struct LDKPhantomRouteHints PhantomRouteHints_clone(const struct LDKPhantomRouteHints *NONNULL_PTR orig);
+       public static native long PhantomRouteHints_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);
@@ -3925,6 +4682,8 @@ public class bindings {
        public static native long ChannelManager_send_payment(long this_arg, long route, byte[] payment_hash, byte[] payment_secret);
        // MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_retry_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
        public static native long ChannelManager_retry_payment(long this_arg, long route, byte[] payment_id);
+       // void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
+       public static native void ChannelManager_abandon_payment(long this_arg, byte[] payment_id);
        // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
        public static native long ChannelManager_send_spontaneous_payment(long this_arg, long route, byte[] payment_preimage);
        // 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);
@@ -3941,10 +4700,22 @@ public class bindings {
        public static native boolean ChannelManager_claim_funds(long this_arg, byte[] payment_preimage);
        // MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native byte[] ChannelManager_get_our_node_id(long this_arg);
-       // MUST_USE_RES struct LDKC2Tuple_PaymentHashPaymentSecretZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs, uint64_t user_payment_id);
-       public static native long ChannelManager_create_inbound_payment(long this_arg, long min_value_msat, int invoice_expiry_delta_secs, long user_payment_id);
-       // MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs, uint64_t user_payment_id);
-       public static native long ChannelManager_create_inbound_payment_for_hash(long this_arg, byte[] payment_hash, long min_value_msat, int invoice_expiry_delta_secs, long user_payment_id);
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_accept_inbound_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], uint64_t user_channel_id);
+       public static native long ChannelManager_accept_inbound_channel(long this_arg, byte[] temporary_channel_id, long user_channel_id);
+       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       public static native long ChannelManager_create_inbound_payment(long this_arg, long min_value_msat, int invoice_expiry_delta_secs);
+       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ChannelManager_create_inbound_payment_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       public static native long ChannelManager_create_inbound_payment_legacy(long this_arg, long min_value_msat, int invoice_expiry_delta_secs);
+       // MUST_USE_RES struct LDKCResult_PaymentSecretNoneZ ChannelManager_create_inbound_payment_for_hash(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       public static native long ChannelManager_create_inbound_payment_for_hash(long this_arg, byte[] payment_hash, long min_value_msat, int invoice_expiry_delta_secs);
+       // MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       public static native long ChannelManager_create_inbound_payment_for_hash_legacy(long this_arg, byte[] payment_hash, long min_value_msat, int invoice_expiry_delta_secs);
+       // MUST_USE_RES struct LDKCResult_PaymentPreimageAPIErrorZ ChannelManager_get_payment_preimage(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
+       public static native long ChannelManager_get_payment_preimage(long this_arg, byte[] payment_hash, byte[] payment_secret);
+       // MUST_USE_RES uint64_t ChannelManager_get_phantom_scid(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       public static native long ChannelManager_get_phantom_scid(long this_arg);
+       // MUST_USE_RES struct LDKPhantomRouteHints ChannelManager_get_phantom_route_hints(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       public static native long ChannelManager_get_phantom_route_hints(long this_arg);
        // struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native long ChannelManager_as_MessageSendEventsProvider(long this_arg);
        // struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
@@ -3961,6 +4732,22 @@ public class bindings {
        public static native long ChannelManager_current_best_block(long this_arg);
        // struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native long ChannelManager_as_ChannelMessageHandler(long this_arg);
+       // struct LDKCVec_u8Z CounterpartyForwardingInfo_write(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR obj);
+       public static native byte[] CounterpartyForwardingInfo_write(long obj);
+       // struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CounterpartyForwardingInfo_read(struct LDKu8slice ser);
+       public static native long CounterpartyForwardingInfo_read(byte[] ser);
+       // struct LDKCVec_u8Z ChannelCounterparty_write(const struct LDKChannelCounterparty *NONNULL_PTR obj);
+       public static native byte[] ChannelCounterparty_write(long obj);
+       // struct LDKCResult_ChannelCounterpartyDecodeErrorZ ChannelCounterparty_read(struct LDKu8slice ser);
+       public static native long ChannelCounterparty_read(byte[] ser);
+       // struct LDKCVec_u8Z ChannelDetails_write(const struct LDKChannelDetails *NONNULL_PTR obj);
+       public static native byte[] ChannelDetails_write(long obj);
+       // struct LDKCResult_ChannelDetailsDecodeErrorZ ChannelDetails_read(struct LDKu8slice ser);
+       public static native long ChannelDetails_read(byte[] ser);
+       // struct LDKCVec_u8Z PhantomRouteHints_write(const struct LDKPhantomRouteHints *NONNULL_PTR obj);
+       public static native byte[] PhantomRouteHints_write(long obj);
+       // struct LDKCResult_PhantomRouteHintsDecodeErrorZ PhantomRouteHints_read(struct LDKu8slice ser);
+       public static native long PhantomRouteHints_read(byte[] ser);
        // struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
        public static native byte[] ChannelManager_write(long obj);
        // void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
@@ -3995,7 +4782,7 @@ public class bindings {
        public static native long C2Tuple_BlockHashChannelManagerZ_read(byte[] ser, long arg);
        // void DecodeError_free(struct LDKDecodeError this_obj);
        public static native void DecodeError_free(long this_obj);
-       // uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg);
+       // uintptr_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg);
        public static native long DecodeError_clone_ptr(long arg);
        // struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
        public static native long DecodeError_clone(long orig);
@@ -4005,9 +4792,13 @@ public class bindings {
        public static native long Init_get_features(long this_ptr);
        // void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
        public static native void Init_set_features(long this_ptr, long val);
-       // MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
-       public static native long Init_new(long features_arg);
-       // uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg);
+       // struct LDKCOption_NetAddressZ Init_get_remote_network_address(const struct LDKInit *NONNULL_PTR this_ptr);
+       public static native long Init_get_remote_network_address(long this_ptr);
+       // void Init_set_remote_network_address(struct LDKInit *NONNULL_PTR this_ptr, struct LDKCOption_NetAddressZ val);
+       public static native void Init_set_remote_network_address(long this_ptr, long val);
+       // MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg, struct LDKCOption_NetAddressZ remote_network_address_arg);
+       public static native long Init_new(long features_arg, long remote_network_address_arg);
+       // uintptr_t Init_clone_ptr(LDKInit *NONNULL_PTR arg);
        public static native long Init_clone_ptr(long arg);
        // struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
        public static native long Init_clone(long orig);
@@ -4023,10 +4814,26 @@ public class bindings {
        public static native void ErrorMessage_set_data(long this_ptr, String val);
        // MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
        public static native long ErrorMessage_new(byte[] channel_id_arg, String data_arg);
-       // uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg);
+       // uintptr_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg);
        public static native long ErrorMessage_clone_ptr(long arg);
        // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
        public static native long ErrorMessage_clone(long orig);
+       // void WarningMessage_free(struct LDKWarningMessage this_obj);
+       public static native void WarningMessage_free(long this_obj);
+       // const uint8_t (*WarningMessage_get_channel_id(const struct LDKWarningMessage *NONNULL_PTR this_ptr))[32];
+       public static native byte[] WarningMessage_get_channel_id(long this_ptr);
+       // void WarningMessage_set_channel_id(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       public static native void WarningMessage_set_channel_id(long this_ptr, byte[] val);
+       // struct LDKStr WarningMessage_get_data(const struct LDKWarningMessage *NONNULL_PTR this_ptr);
+       public static native String WarningMessage_get_data(long this_ptr);
+       // void WarningMessage_set_data(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKStr val);
+       public static native void WarningMessage_set_data(long this_ptr, String val);
+       // MUST_USE_RES struct LDKWarningMessage WarningMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
+       public static native long WarningMessage_new(byte[] channel_id_arg, String data_arg);
+       // uintptr_t WarningMessage_clone_ptr(LDKWarningMessage *NONNULL_PTR arg);
+       public static native long WarningMessage_clone_ptr(long arg);
+       // struct LDKWarningMessage WarningMessage_clone(const struct LDKWarningMessage *NONNULL_PTR orig);
+       public static native long WarningMessage_clone(long orig);
        // void Ping_free(struct LDKPing this_obj);
        public static native void Ping_free(long this_obj);
        // uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
@@ -4039,7 +4846,7 @@ public class bindings {
        public static native void Ping_set_byteslen(long this_ptr, short val);
        // MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
        public static native long Ping_new(short ponglen_arg, short byteslen_arg);
-       // uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg);
+       // uintptr_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg);
        public static native long Ping_clone_ptr(long arg);
        // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
        public static native long Ping_clone(long orig);
@@ -4051,7 +4858,7 @@ public class bindings {
        public static native void Pong_set_byteslen(long this_ptr, short val);
        // MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
        public static native long Pong_new(short byteslen_arg);
-       // uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg);
+       // uintptr_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg);
        public static native long Pong_clone_ptr(long arg);
        // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
        public static native long Pong_clone(long orig);
@@ -4129,7 +4936,11 @@ public class bindings {
        public static native byte OpenChannel_get_channel_flags(long this_ptr);
        // void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
        public static native void OpenChannel_set_channel_flags(long this_ptr, byte val);
-       // uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg);
+       // struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       public static native long OpenChannel_get_channel_type(long this_ptr);
+       // void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
+       public static native void OpenChannel_set_channel_type(long this_ptr, long val);
+       // uintptr_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg);
        public static native long OpenChannel_clone_ptr(long arg);
        // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
        public static native long OpenChannel_clone(long orig);
@@ -4191,7 +5002,11 @@ public class bindings {
        public static native byte[] AcceptChannel_get_first_per_commitment_point(long this_ptr);
        // void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
        public static native void AcceptChannel_set_first_per_commitment_point(long this_ptr, byte[] val);
-       // uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg);
+       // struct LDKChannelTypeFeatures AcceptChannel_get_channel_type(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       public static native long AcceptChannel_get_channel_type(long this_ptr);
+       // void AcceptChannel_set_channel_type(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
+       public static native void AcceptChannel_set_channel_type(long this_ptr, long val);
+       // uintptr_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg);
        public static native long AcceptChannel_clone_ptr(long arg);
        // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
        public static native long AcceptChannel_clone(long orig);
@@ -4215,7 +5030,7 @@ public class bindings {
        public static native void FundingCreated_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKFundingCreated FundingCreated_new(struct LDKThirtyTwoBytes temporary_channel_id_arg, struct LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, struct LDKSignature signature_arg);
        public static native long FundingCreated_new(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg);
-       // uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg);
+       // uintptr_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg);
        public static native long FundingCreated_clone_ptr(long arg);
        // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
        public static native long FundingCreated_clone(long orig);
@@ -4231,7 +5046,7 @@ public class bindings {
        public static native void FundingSigned_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
        public static native long FundingSigned_new(byte[] channel_id_arg, byte[] signature_arg);
-       // uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg);
+       // uintptr_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg);
        public static native long FundingSigned_clone_ptr(long arg);
        // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
        public static native long FundingSigned_clone(long orig);
@@ -4245,9 +5060,13 @@ public class bindings {
        public static native byte[] FundingLocked_get_next_per_commitment_point(long this_ptr);
        // void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
        public static native void FundingLocked_set_next_per_commitment_point(long this_ptr, byte[] val);
-       // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
-       public static native long FundingLocked_new(byte[] channel_id_arg, byte[] next_per_commitment_point_arg);
-       // uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg);
+       // struct LDKCOption_u64Z FundingLocked_get_short_channel_id_alias(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
+       public static native long FundingLocked_get_short_channel_id_alias(long this_ptr);
+       // void FundingLocked_set_short_channel_id_alias(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void FundingLocked_set_short_channel_id_alias(long this_ptr, long val);
+       // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg, struct LDKCOption_u64Z short_channel_id_alias_arg);
+       public static native long FundingLocked_new(byte[] channel_id_arg, byte[] next_per_commitment_point_arg, long short_channel_id_alias_arg);
+       // uintptr_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg);
        public static native long FundingLocked_clone_ptr(long arg);
        // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
        public static native long FundingLocked_clone(long orig);
@@ -4263,7 +5082,7 @@ public class bindings {
        public static native void Shutdown_set_scriptpubkey(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
        public static native long Shutdown_new(byte[] channel_id_arg, byte[] scriptpubkey_arg);
-       // uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg);
+       // uintptr_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg);
        public static native long Shutdown_clone_ptr(long arg);
        // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
        public static native long Shutdown_clone(long orig);
@@ -4279,7 +5098,7 @@ public class bindings {
        public static native void ClosingSignedFeeRange_set_max_fee_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
        public static native long ClosingSignedFeeRange_new(long min_fee_satoshis_arg, long max_fee_satoshis_arg);
-       // uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg);
+       // uintptr_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg);
        public static native long ClosingSignedFeeRange_clone_ptr(long arg);
        // struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
        public static native long ClosingSignedFeeRange_clone(long orig);
@@ -4303,7 +5122,7 @@ public class bindings {
        public static native void ClosingSigned_set_fee_range(long this_ptr, long val);
        // MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg, struct LDKClosingSignedFeeRange fee_range_arg);
        public static native long ClosingSigned_new(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg, long fee_range_arg);
-       // uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg);
+       // uintptr_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg);
        public static native long ClosingSigned_clone_ptr(long arg);
        // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
        public static native long ClosingSigned_clone(long orig);
@@ -4329,7 +5148,7 @@ public class bindings {
        public static native int UpdateAddHTLC_get_cltv_expiry(long this_ptr);
        // void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
        public static native void UpdateAddHTLC_set_cltv_expiry(long this_ptr, int val);
-       // uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg);
+       // uintptr_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg);
        public static native long UpdateAddHTLC_clone_ptr(long arg);
        // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
        public static native long UpdateAddHTLC_clone(long orig);
@@ -4349,7 +5168,7 @@ public class bindings {
        public static native void UpdateFulfillHTLC_set_payment_preimage(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
        public static native long UpdateFulfillHTLC_new(byte[] channel_id_arg, long htlc_id_arg, byte[] payment_preimage_arg);
-       // uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg);
+       // uintptr_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg);
        public static native long UpdateFulfillHTLC_clone_ptr(long arg);
        // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
        public static native long UpdateFulfillHTLC_clone(long orig);
@@ -4363,7 +5182,7 @@ public class bindings {
        public static native long UpdateFailHTLC_get_htlc_id(long this_ptr);
        // void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
        public static native void UpdateFailHTLC_set_htlc_id(long this_ptr, long val);
-       // uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg);
+       // uintptr_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg);
        public static native long UpdateFailHTLC_clone_ptr(long arg);
        // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
        public static native long UpdateFailHTLC_clone(long orig);
@@ -4381,7 +5200,7 @@ public class bindings {
        public static native short UpdateFailMalformedHTLC_get_failure_code(long this_ptr);
        // void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
        public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, short val);
-       // uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg);
+       // uintptr_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg);
        public static native long UpdateFailMalformedHTLC_clone_ptr(long arg);
        // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
        public static native long UpdateFailMalformedHTLC_clone(long orig);
@@ -4399,7 +5218,7 @@ public class bindings {
        public static native void CommitmentSigned_set_htlc_signatures(long this_ptr, byte[][] val);
        // MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
        public static native long CommitmentSigned_new(byte[] channel_id_arg, byte[] signature_arg, byte[][] htlc_signatures_arg);
-       // uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg);
+       // uintptr_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg);
        public static native long CommitmentSigned_clone_ptr(long arg);
        // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
        public static native long CommitmentSigned_clone(long orig);
@@ -4419,7 +5238,7 @@ public class bindings {
        public static native void RevokeAndACK_set_next_per_commitment_point(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKRevokeAndACK RevokeAndACK_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKThirtyTwoBytes per_commitment_secret_arg, struct LDKPublicKey next_per_commitment_point_arg);
        public static native long RevokeAndACK_new(byte[] channel_id_arg, byte[] per_commitment_secret_arg, byte[] next_per_commitment_point_arg);
-       // uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg);
+       // uintptr_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg);
        public static native long RevokeAndACK_clone_ptr(long arg);
        // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
        public static native long RevokeAndACK_clone(long orig);
@@ -4435,7 +5254,7 @@ public class bindings {
        public static native void UpdateFee_set_feerate_per_kw(long this_ptr, int val);
        // MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
        public static native long UpdateFee_new(byte[] channel_id_arg, int feerate_per_kw_arg);
-       // uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg);
+       // uintptr_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg);
        public static native long UpdateFee_clone_ptr(long arg);
        // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
        public static native long UpdateFee_clone(long orig);
@@ -4451,7 +5270,7 @@ public class bindings {
        public static native void DataLossProtect_set_my_current_per_commitment_point(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
        public static native long DataLossProtect_new(byte[] your_last_per_commitment_secret_arg, byte[] my_current_per_commitment_point_arg);
-       // uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg);
+       // uintptr_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg);
        public static native long DataLossProtect_clone_ptr(long arg);
        // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
        public static native long DataLossProtect_clone(long orig);
@@ -4469,7 +5288,7 @@ public class bindings {
        public static native long ChannelReestablish_get_next_remote_commitment_number(long this_ptr);
        // void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelReestablish_set_next_remote_commitment_number(long this_ptr, long val);
-       // uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg);
+       // uintptr_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg);
        public static native long ChannelReestablish_clone_ptr(long arg);
        // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
        public static native long ChannelReestablish_clone(long orig);
@@ -4493,13 +5312,13 @@ public class bindings {
        public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKAnnouncementSignatures AnnouncementSignatures_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, struct LDKSignature node_signature_arg, struct LDKSignature bitcoin_signature_arg);
        public static native long AnnouncementSignatures_new(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg);
-       // uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg);
+       // uintptr_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg);
        public static native long AnnouncementSignatures_clone_ptr(long arg);
        // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
        public static native long AnnouncementSignatures_clone(long orig);
        // void NetAddress_free(struct LDKNetAddress this_ptr);
        public static native void NetAddress_free(long this_ptr);
-       // uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg);
+       // uintptr_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg);
        public static native long NetAddress_clone_ptr(long arg);
        // struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
        public static native long NetAddress_clone(long orig);
@@ -4507,8 +5326,8 @@ public class bindings {
        public static native long NetAddress_ipv4(byte[] addr, short port);
        // struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
        public static native long NetAddress_ipv6(byte[] addr, short port);
-       // struct LDKNetAddress NetAddress_onion_v2(struct LDKTenBytes addr, uint16_t port);
-       public static native long NetAddress_onion_v2(byte[] addr, short port);
+       // struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
+       public static native long NetAddress_onion_v2(byte[] a);
        // struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
        public static native long NetAddress_onion_v3(byte[] ed25519_pubkey, short checksum, byte version, short port);
        // struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
@@ -4539,7 +5358,7 @@ public class bindings {
        public static native void UnsignedNodeAnnouncement_set_alias(long this_ptr, byte[] val);
        // void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
        public static native void UnsignedNodeAnnouncement_set_addresses(long this_ptr, long[] val);
-       // uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg);
+       // uintptr_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg);
        public static native long UnsignedNodeAnnouncement_clone_ptr(long arg);
        // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
        public static native long UnsignedNodeAnnouncement_clone(long orig);
@@ -4555,7 +5374,7 @@ public class bindings {
        public static native void NodeAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
        public static native long NodeAnnouncement_new(byte[] signature_arg, long contents_arg);
-       // uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg);
+       // uintptr_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg);
        public static native long NodeAnnouncement_clone_ptr(long arg);
        // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
        public static native long NodeAnnouncement_clone(long orig);
@@ -4589,7 +5408,7 @@ public class bindings {
        public static native byte[] UnsignedChannelAnnouncement_get_bitcoin_key_2(long this_ptr);
        // void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
        public static native void UnsignedChannelAnnouncement_set_bitcoin_key_2(long this_ptr, byte[] val);
-       // uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg);
+       // uintptr_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg);
        public static native long UnsignedChannelAnnouncement_clone_ptr(long arg);
        // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
        public static native long UnsignedChannelAnnouncement_clone(long orig);
@@ -4617,7 +5436,7 @@ public class bindings {
        public static native void ChannelAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelAnnouncement ChannelAnnouncement_new(struct LDKSignature node_signature_1_arg, struct LDKSignature node_signature_2_arg, struct LDKSignature bitcoin_signature_1_arg, struct LDKSignature bitcoin_signature_2_arg, struct LDKUnsignedChannelAnnouncement contents_arg);
        public static native long ChannelAnnouncement_new(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, long contents_arg);
-       // uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg);
+       // uintptr_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg);
        public static native long ChannelAnnouncement_clone_ptr(long arg);
        // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
        public static native long ChannelAnnouncement_clone(long orig);
@@ -4655,7 +5474,7 @@ public class bindings {
        public static native int UnsignedChannelUpdate_get_fee_proportional_millionths(long this_ptr);
        // void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
        public static native void UnsignedChannelUpdate_set_fee_proportional_millionths(long this_ptr, int val);
-       // uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg);
+       // uintptr_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg);
        public static native long UnsignedChannelUpdate_clone_ptr(long arg);
        // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
        public static native long UnsignedChannelUpdate_clone(long orig);
@@ -4671,7 +5490,7 @@ public class bindings {
        public static native void ChannelUpdate_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
        public static native long ChannelUpdate_new(byte[] signature_arg, long contents_arg);
-       // uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg);
+       // uintptr_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg);
        public static native long ChannelUpdate_clone_ptr(long arg);
        // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
        public static native long ChannelUpdate_clone(long orig);
@@ -4691,7 +5510,7 @@ public class bindings {
        public static native void QueryChannelRange_set_number_of_blocks(long this_ptr, int val);
        // MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
        public static native long QueryChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg);
-       // uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg);
+       // uintptr_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg);
        public static native long QueryChannelRange_clone_ptr(long arg);
        // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
        public static native long QueryChannelRange_clone(long orig);
@@ -4717,7 +5536,7 @@ public class bindings {
        public static native void ReplyChannelRange_set_short_channel_ids(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool sync_complete_arg, struct LDKCVec_u64Z short_channel_ids_arg);
        public static native long ReplyChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean sync_complete_arg, long[] short_channel_ids_arg);
-       // uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg);
+       // uintptr_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg);
        public static native long ReplyChannelRange_clone_ptr(long arg);
        // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
        public static native long ReplyChannelRange_clone(long orig);
@@ -4731,7 +5550,7 @@ public class bindings {
        public static native void QueryShortChannelIds_set_short_channel_ids(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
        public static native long QueryShortChannelIds_new(byte[] chain_hash_arg, long[] short_channel_ids_arg);
-       // uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg);
+       // uintptr_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg);
        public static native long QueryShortChannelIds_clone_ptr(long arg);
        // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
        public static native long QueryShortChannelIds_clone(long orig);
@@ -4747,7 +5566,7 @@ public class bindings {
        public static native void ReplyShortChannelIdsEnd_set_full_information(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
        public static native long ReplyShortChannelIdsEnd_new(byte[] chain_hash_arg, boolean full_information_arg);
-       // uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg);
+       // uintptr_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg);
        public static native long ReplyShortChannelIdsEnd_clone_ptr(long arg);
        // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
        public static native long ReplyShortChannelIdsEnd_clone(long orig);
@@ -4767,13 +5586,13 @@ public class bindings {
        public static native void GossipTimestampFilter_set_timestamp_range(long this_ptr, int val);
        // MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
        public static native long GossipTimestampFilter_new(byte[] chain_hash_arg, int first_timestamp_arg, int timestamp_range_arg);
-       // uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg);
+       // uintptr_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg);
        public static native long GossipTimestampFilter_clone_ptr(long arg);
        // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
        public static native long GossipTimestampFilter_clone(long orig);
        // void ErrorAction_free(struct LDKErrorAction this_ptr);
        public static native void ErrorAction_free(long this_ptr);
-       // uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg);
+       // uintptr_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg);
        public static native long ErrorAction_clone_ptr(long arg);
        // struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
        public static native long ErrorAction_clone(long orig);
@@ -4783,8 +5602,12 @@ public class bindings {
        public static native long ErrorAction_ignore_error();
        // struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
        public static native long ErrorAction_ignore_and_log(Level a);
+       // struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
+       public static native long ErrorAction_ignore_duplicate_gossip();
        // struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
        public static native long ErrorAction_send_error_message(long msg);
+       // struct LDKErrorAction ErrorAction_send_warning_message(struct LDKWarningMessage msg, enum LDKLevel log_level);
+       public static native long ErrorAction_send_warning_message(long msg, Level log_level);
        // void LightningError_free(struct LDKLightningError this_obj);
        public static native void LightningError_free(long this_obj);
        // struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
@@ -4797,7 +5620,7 @@ public class bindings {
        public static native void LightningError_set_action(long this_ptr, long val);
        // MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
        public static native long LightningError_new(String err_arg, long action_arg);
-       // uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg);
+       // uintptr_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg);
        public static native long LightningError_clone_ptr(long arg);
        // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
        public static native long LightningError_clone(long orig);
@@ -4829,7 +5652,7 @@ public class bindings {
        public static native void CommitmentUpdate_set_commitment_signed(long this_ptr, long val);
        // MUST_USE_RES struct LDKCommitmentUpdate CommitmentUpdate_new(struct LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, struct LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, struct LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, struct LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, struct LDKUpdateFee update_fee_arg, struct LDKCommitmentSigned commitment_signed_arg);
        public static native long CommitmentUpdate_new(long[] update_add_htlcs_arg, long[] update_fulfill_htlcs_arg, long[] update_fail_htlcs_arg, long[] update_fail_malformed_htlcs_arg, long update_fee_arg, long commitment_signed_arg);
-       // uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg);
+       // uintptr_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg);
        public static native long CommitmentUpdate_clone_ptr(long arg);
        // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
        public static native long CommitmentUpdate_clone(long orig);
@@ -4937,6 +5760,10 @@ public class bindings {
        public static native byte[] ErrorMessage_write(long obj);
        // struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
        public static native long ErrorMessage_read(byte[] ser);
+       // struct LDKCVec_u8Z WarningMessage_write(const struct LDKWarningMessage *NONNULL_PTR obj);
+       public static native byte[] WarningMessage_write(long obj);
+       // struct LDKCResult_WarningMessageDecodeErrorZ WarningMessage_read(struct LDKu8slice ser);
+       public static native long WarningMessage_read(byte[] ser);
        // struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
        public static native byte[] UnsignedNodeAnnouncement_write(long obj);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
@@ -5001,7 +5828,7 @@ public class bindings {
        public static native void MessageHandler_set_route_handler(long this_ptr, long val);
        // MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
        public static native long MessageHandler_new(long chan_handler_arg, long route_handler_arg);
-       // uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg);
+       // uintptr_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg);
        public static native long SocketDescriptor_clone_ptr(long arg);
        // struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
        public static native long SocketDescriptor_clone(long orig);
@@ -5015,7 +5842,7 @@ public class bindings {
        public static native void PeerHandleError_set_no_connection_possible(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
        public static native long PeerHandleError_new(boolean no_connection_possible_arg);
-       // uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg);
+       // uintptr_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg);
        public static native long PeerHandleError_clone_ptr(long arg);
        // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
        public static native long PeerHandleError_clone(long orig);
@@ -5025,10 +5852,10 @@ public class bindings {
        public static native long PeerManager_new(long message_handler, byte[] our_node_secret, byte[] ephemeral_random_data, long logger, long custom_message_handler);
        // MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
        public static native byte[][] PeerManager_get_peer_node_ids(long this_arg);
-       // MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor);
-       public static native long PeerManager_new_outbound_connection(long this_arg, byte[] their_node_id, long descriptor);
-       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
-       public static native long PeerManager_new_inbound_connection(long this_arg, long descriptor);
+       // MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor, struct LDKCOption_NetAddressZ remote_network_address);
+       public static native long PeerManager_new_outbound_connection(long this_arg, byte[] their_node_id, long descriptor, long remote_network_address);
+       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor, struct LDKCOption_NetAddressZ remote_network_address);
+       public static native long PeerManager_new_inbound_connection(long this_arg, long descriptor, long remote_network_address);
        // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
        public static native long PeerManager_write_buffer_space_avail(long this_arg, long descriptor);
        // MUST_USE_RES struct LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR peer_descriptor, struct LDKu8slice data);
@@ -5043,10 +5870,32 @@ public class bindings {
        public static native void PeerManager_disconnect_all_peers(long this_arg);
        // void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
        public static native void PeerManager_timer_tick_occurred(long this_arg);
+       // uint64_t htlc_success_tx_weight(bool opt_anchors);
+       public static native long htlc_success_tx_weight(boolean opt_anchors);
+       // uint64_t htlc_timeout_tx_weight(bool opt_anchors);
+       public static native long htlc_timeout_tx_weight(boolean opt_anchors);
        // struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
        public static native byte[] build_commitment_secret(byte[] commitment_seed, long idx);
        // struct LDKTransaction build_closing_transaction(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
        public static native byte[] build_closing_transaction(long to_holder_value_sat, long to_counterparty_value_sat, byte[] to_holder_script, byte[] to_counterparty_script, long funding_outpoint);
+       // void CounterpartyCommitmentSecrets_free(struct LDKCounterpartyCommitmentSecrets this_obj);
+       public static native void CounterpartyCommitmentSecrets_free(long this_obj);
+       // uintptr_t CounterpartyCommitmentSecrets_clone_ptr(LDKCounterpartyCommitmentSecrets *NONNULL_PTR arg);
+       public static native long CounterpartyCommitmentSecrets_clone_ptr(long arg);
+       // struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_clone(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR orig);
+       public static native long CounterpartyCommitmentSecrets_clone(long orig);
+       // MUST_USE_RES struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_new(void);
+       public static native long CounterpartyCommitmentSecrets_new();
+       // MUST_USE_RES uint64_t CounterpartyCommitmentSecrets_get_min_seen_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg);
+       public static native long CounterpartyCommitmentSecrets_get_min_seen_secret(long this_arg);
+       // MUST_USE_RES struct LDKCResult_NoneNoneZ CounterpartyCommitmentSecrets_provide_secret(struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx, struct LDKThirtyTwoBytes secret);
+       public static native long CounterpartyCommitmentSecrets_provide_secret(long this_arg, long idx, byte[] secret);
+       // MUST_USE_RES struct LDKThirtyTwoBytes CounterpartyCommitmentSecrets_get_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx);
+       public static native byte[] CounterpartyCommitmentSecrets_get_secret(long this_arg, long idx);
+       // struct LDKCVec_u8Z CounterpartyCommitmentSecrets_write(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR obj);
+       public static native byte[] CounterpartyCommitmentSecrets_write(long obj);
+       // struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CounterpartyCommitmentSecrets_read(struct LDKu8slice ser);
+       public static native long CounterpartyCommitmentSecrets_read(byte[] ser);
        // struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
        public static native long derive_private_key(byte[] per_commitment_point, byte[] base_secret);
        // struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
@@ -5079,7 +5928,7 @@ public class bindings {
        public static native void TxCreationKeys_set_broadcaster_delayed_payment_key(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKTxCreationKeys TxCreationKeys_new(struct LDKPublicKey per_commitment_point_arg, struct LDKPublicKey revocation_key_arg, struct LDKPublicKey broadcaster_htlc_key_arg, struct LDKPublicKey countersignatory_htlc_key_arg, struct LDKPublicKey broadcaster_delayed_payment_key_arg);
        public static native long TxCreationKeys_new(byte[] per_commitment_point_arg, byte[] revocation_key_arg, byte[] broadcaster_htlc_key_arg, byte[] countersignatory_htlc_key_arg, byte[] broadcaster_delayed_payment_key_arg);
-       // uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg);
+       // uintptr_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg);
        public static native long TxCreationKeys_clone_ptr(long arg);
        // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
        public static native long TxCreationKeys_clone(long orig);
@@ -5111,7 +5960,7 @@ public class bindings {
        public static native void ChannelPublicKeys_set_htlc_basepoint(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKChannelPublicKeys ChannelPublicKeys_new(struct LDKPublicKey funding_pubkey_arg, struct LDKPublicKey revocation_basepoint_arg, struct LDKPublicKey payment_point_arg, struct LDKPublicKey delayed_payment_basepoint_arg, struct LDKPublicKey htlc_basepoint_arg);
        public static native long ChannelPublicKeys_new(byte[] funding_pubkey_arg, byte[] revocation_basepoint_arg, byte[] payment_point_arg, byte[] delayed_payment_basepoint_arg, byte[] htlc_basepoint_arg);
-       // uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg);
+       // uintptr_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg);
        public static native long ChannelPublicKeys_clone_ptr(long arg);
        // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
        public static native long ChannelPublicKeys_clone(long orig);
@@ -5149,7 +5998,7 @@ public class bindings {
        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);
-       // uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg);
+       // uintptr_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg);
        public static native long HTLCOutputInCommitment_clone_ptr(long arg);
        // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
        public static native long HTLCOutputInCommitment_clone(long orig);
@@ -5157,12 +6006,14 @@ public class bindings {
        public static native byte[] HTLCOutputInCommitment_write(long obj);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
        public static native long HTLCOutputInCommitment_read(byte[] ser);
-       // struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys);
-       public static native byte[] get_htlc_redeemscript(long htlc, long keys);
+       // struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
+       public static native byte[] get_htlc_redeemscript(long htlc, boolean opt_anchors, long keys);
        // struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
        public static native byte[] make_funding_redeemscript(byte[] broadcaster, byte[] countersignatory);
-       // struct LDKTransaction build_htlc_transaction(const uint8_t (*commitment_txid)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
-       public static native byte[] build_htlc_transaction(byte[] commitment_txid, int feerate_per_kw, short contest_delay, long htlc, byte[] broadcaster_delayed_payment_key, byte[] revocation_key);
+       // struct LDKTransaction build_htlc_transaction(const uint8_t (*commitment_txid)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
+       public static native byte[] build_htlc_transaction(byte[] commitment_txid, int feerate_per_kw, short contest_delay, long htlc, boolean opt_anchors, byte[] broadcaster_delayed_payment_key, byte[] revocation_key);
+       // struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
+       public static native byte[] get_anchor_redeemscript(byte[] funding_pubkey);
        // void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
        public static native void ChannelTransactionParameters_free(long this_obj);
        // struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
@@ -5185,9 +6036,13 @@ public class bindings {
        public static native long ChannelTransactionParameters_get_funding_outpoint(long this_ptr);
        // void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
        public static native void ChannelTransactionParameters_set_funding_outpoint(long this_ptr, long val);
-       // MUST_USE_RES struct LDKChannelTransactionParameters ChannelTransactionParameters_new(struct LDKChannelPublicKeys holder_pubkeys_arg, uint16_t holder_selected_contest_delay_arg, bool is_outbound_from_holder_arg, struct LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg, struct LDKOutPoint funding_outpoint_arg);
-       public static native long ChannelTransactionParameters_new(long holder_pubkeys_arg, short holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, long counterparty_parameters_arg, long funding_outpoint_arg);
-       // uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg);
+       // enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       public static native COption_NoneZ ChannelTransactionParameters_get_opt_anchors(long this_ptr);
+       // void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
+       public static native void ChannelTransactionParameters_set_opt_anchors(long this_ptr, COption_NoneZ val);
+       // MUST_USE_RES struct LDKChannelTransactionParameters ChannelTransactionParameters_new(struct LDKChannelPublicKeys holder_pubkeys_arg, uint16_t holder_selected_contest_delay_arg, bool is_outbound_from_holder_arg, struct LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg, struct LDKOutPoint funding_outpoint_arg, enum LDKCOption_NoneZ opt_anchors_arg);
+       public static native long ChannelTransactionParameters_new(long holder_pubkeys_arg, short holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, long counterparty_parameters_arg, long funding_outpoint_arg, COption_NoneZ opt_anchors_arg);
+       // uintptr_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg);
        public static native long ChannelTransactionParameters_clone_ptr(long arg);
        // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
        public static native long ChannelTransactionParameters_clone(long orig);
@@ -5203,7 +6058,7 @@ public class bindings {
        public static native void CounterpartyChannelTransactionParameters_set_selected_contest_delay(long this_ptr, short val);
        // MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
        public static native long CounterpartyChannelTransactionParameters_new(long pubkeys_arg, short selected_contest_delay_arg);
-       // uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg);
+       // uintptr_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg);
        public static native long CounterpartyChannelTransactionParameters_clone_ptr(long arg);
        // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
        public static native long CounterpartyChannelTransactionParameters_clone(long orig);
@@ -5233,6 +6088,8 @@ public class bindings {
        public static native boolean DirectedChannelTransactionParameters_is_outbound(long this_arg);
        // MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
        public static native long DirectedChannelTransactionParameters_funding_outpoint(long this_arg);
+       // MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       public static native boolean DirectedChannelTransactionParameters_opt_anchors(long this_arg);
        // void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
        public static native void HolderCommitmentTransaction_free(long this_obj);
        // struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
@@ -5241,7 +6098,7 @@ public class bindings {
        public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, byte[] val);
        // void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
        public static native void HolderCommitmentTransaction_set_counterparty_htlc_sigs(long this_ptr, byte[][] val);
-       // uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg);
+       // uintptr_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg);
        public static native long HolderCommitmentTransaction_clone_ptr(long arg);
        // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
        public static native long HolderCommitmentTransaction_clone(long orig);
@@ -5263,7 +6120,7 @@ public class bindings {
        public static native void BuiltCommitmentTransaction_set_txid(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
        public static native long BuiltCommitmentTransaction_new(byte[] transaction_arg, byte[] txid_arg);
-       // uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg);
+       // uintptr_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg);
        public static native long BuiltCommitmentTransaction_clone_ptr(long arg);
        // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
        public static native long BuiltCommitmentTransaction_clone(long orig);
@@ -5277,7 +6134,7 @@ public class bindings {
        public static native byte[] BuiltCommitmentTransaction_sign(long this_arg, byte[] funding_key, byte[] funding_redeemscript, long channel_value_satoshis);
        // void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
        public static native void ClosingTransaction_free(long this_obj);
-       // uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg);
+       // uintptr_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg);
        public static native long ClosingTransaction_clone_ptr(long arg);
        // struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
        public static native long ClosingTransaction_clone(long orig);
@@ -5307,7 +6164,7 @@ public class bindings {
        public static native byte[] TrustedClosingTransaction_sign(long this_arg, byte[] funding_key, byte[] funding_redeemscript, long channel_value_satoshis);
        // void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
        public static native void CommitmentTransaction_free(long this_obj);
-       // uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg);
+       // uintptr_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg);
        public static native long CommitmentTransaction_clone_ptr(long arg);
        // struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
        public static native long CommitmentTransaction_clone(long orig);
@@ -5335,6 +6192,8 @@ public class bindings {
        public static native long TrustedCommitmentTransaction_built_transaction(long this_arg);
        // MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
        public static native long TrustedCommitmentTransaction_keys(long this_arg);
+       // MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
+       public static native boolean TrustedCommitmentTransaction_opt_anchors(long this_arg);
        // MUST_USE_RES struct LDKCResult_CVec_SignatureZNoneZ TrustedCommitmentTransaction_get_htlc_sigs(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*htlc_base_key)[32], const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters);
        public static native long TrustedCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, long channel_parameters);
        // uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
@@ -5347,22 +6206,28 @@ public class bindings {
        public static native boolean ChannelFeatures_eq(long a, long b);
        // bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
        public static native boolean InvoiceFeatures_eq(long a, long b);
-       // uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg);
+       // bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
+       public static native boolean ChannelTypeFeatures_eq(long a, long b);
+       // uintptr_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg);
        public static native long InitFeatures_clone_ptr(long arg);
        // struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
        public static native long InitFeatures_clone(long orig);
-       // uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg);
+       // uintptr_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg);
        public static native long NodeFeatures_clone_ptr(long arg);
        // struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
        public static native long NodeFeatures_clone(long orig);
-       // uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg);
+       // uintptr_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg);
        public static native long ChannelFeatures_clone_ptr(long arg);
        // struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
        public static native long ChannelFeatures_clone(long orig);
-       // uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg);
+       // uintptr_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg);
        public static native long InvoiceFeatures_clone_ptr(long arg);
        // struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
        public static native long InvoiceFeatures_clone(long orig);
+       // uintptr_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg);
+       public static native long ChannelTypeFeatures_clone_ptr(long arg);
+       // struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
+       public static native long ChannelTypeFeatures_clone(long orig);
        // void InitFeatures_free(struct LDKInitFeatures this_obj);
        public static native void InitFeatures_free(long this_obj);
        // void NodeFeatures_free(struct LDKNodeFeatures this_obj);
@@ -5371,6 +6236,8 @@ public class bindings {
        public static native void ChannelFeatures_free(long this_obj);
        // void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
        public static native void InvoiceFeatures_free(long this_obj);
+       // void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
+       public static native void ChannelTypeFeatures_free(long this_obj);
        // MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
        public static native long InitFeatures_empty();
        // MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
@@ -5395,31 +6262,35 @@ public class bindings {
        public static native long InvoiceFeatures_known();
        // MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
        public static native boolean InvoiceFeatures_requires_unknown_bits(long this_arg);
-       // MUST_USE_RES bool InitFeatures_supports_payment_secret(const struct LDKInitFeatures *NONNULL_PTR this_arg);
-       public static native boolean InitFeatures_supports_payment_secret(long this_arg);
-       // MUST_USE_RES bool NodeFeatures_supports_payment_secret(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
-       public static native boolean NodeFeatures_supports_payment_secret(long this_arg);
-       // MUST_USE_RES bool InvoiceFeatures_supports_payment_secret(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
-       public static native boolean InvoiceFeatures_supports_payment_secret(long this_arg);
+       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
+       public static native long ChannelTypeFeatures_empty();
+       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
+       public static native long ChannelTypeFeatures_known();
+       // MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
+       public static native boolean ChannelTypeFeatures_requires_unknown_bits(long this_arg);
        // struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
        public static native byte[] InitFeatures_write(long obj);
-       // struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
-       public static native byte[] NodeFeatures_write(long obj);
-       // struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
-       public static native byte[] ChannelFeatures_write(long obj);
-       // struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
-       public static native byte[] InvoiceFeatures_write(long obj);
        // struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
        public static native long InitFeatures_read(byte[] ser);
-       // struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
-       public static native long NodeFeatures_read(byte[] ser);
+       // struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
+       public static native byte[] ChannelFeatures_write(long obj);
        // struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
        public static native long ChannelFeatures_read(byte[] ser);
+       // struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
+       public static native byte[] NodeFeatures_write(long obj);
+       // struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
+       public static native long NodeFeatures_read(byte[] ser);
+       // struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
+       public static native byte[] InvoiceFeatures_write(long obj);
        // struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
        public static native long InvoiceFeatures_read(byte[] ser);
+       // struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
+       public static native byte[] ChannelTypeFeatures_write(long obj);
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
+       public static native long ChannelTypeFeatures_read(byte[] ser);
        // void ShutdownScript_free(struct LDKShutdownScript this_obj);
        public static native void ShutdownScript_free(long this_obj);
-       // uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg);
+       // uintptr_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg);
        public static native long ShutdownScript_clone_ptr(long arg);
        // struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
        public static native long ShutdownScript_clone(long orig);
@@ -5431,7 +6302,7 @@ public class bindings {
        public static native void InvalidShutdownScript_set_script(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
        public static native long InvalidShutdownScript_new(byte[] script_arg);
-       // uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg);
+       // uintptr_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg);
        public static native long InvalidShutdownScript_clone_ptr(long arg);
        // struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
        public static native long InvalidShutdownScript_clone(long orig);
@@ -5453,23 +6324,15 @@ public class bindings {
        public static native boolean ShutdownScript_is_compatible(long this_arg, long features);
        // void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
        public static native void CustomMessageReader_free(long this_ptr);
-       // uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg);
+       // uintptr_t Type_clone_ptr(LDKType *NONNULL_PTR arg);
        public static native long Type_clone_ptr(long arg);
        // struct LDKType Type_clone(const struct LDKType *NONNULL_PTR orig);
        public static native long Type_clone(long orig);
        // void Type_free(struct LDKType this_ptr);
        public static native void Type_free(long this_ptr);
-       // void Score_free(struct LDKScore this_ptr);
-       public static native void Score_free(long this_ptr);
-       // void LockableScore_free(struct LDKLockableScore this_obj);
-       public static native void LockableScore_free(long this_obj);
-       // MUST_USE_RES struct LDKLockableScore LockableScore_new(struct LDKScore score);
-       public static native long LockableScore_new(long score);
-       // struct LDKCVec_u8Z LockableScore_write(const struct LDKLockableScore *NONNULL_PTR obj);
-       public static native byte[] LockableScore_write(long obj);
        // void NodeId_free(struct LDKNodeId this_obj);
        public static native void NodeId_free(long this_obj);
-       // uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg);
+       // uintptr_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg);
        public static native long NodeId_clone_ptr(long arg);
        // struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
        public static native long NodeId_clone(long orig);
@@ -5485,7 +6348,7 @@ public class bindings {
        public static native long NodeId_read(byte[] ser);
        // void NetworkGraph_free(struct LDKNetworkGraph this_obj);
        public static native void NetworkGraph_free(long this_obj);
-       // uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg);
+       // uintptr_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg);
        public static native long NetworkGraph_clone_ptr(long arg);
        // struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
        public static native long NetworkGraph_clone(long orig);
@@ -5493,7 +6356,7 @@ public class bindings {
        public static native void ReadOnlyNetworkGraph_free(long this_obj);
        // void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
        public static native void NetworkUpdate_free(long this_ptr);
-       // uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg);
+       // uintptr_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg);
        public static native long NetworkUpdate_clone_ptr(long arg);
        // struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
        public static native long NetworkUpdate_clone(long orig);
@@ -5519,46 +6382,46 @@ public class bindings {
        public static native long NetGraphMsgHandler_as_RoutingMessageHandler(long this_arg);
        // struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
        public static native long NetGraphMsgHandler_as_MessageSendEventsProvider(long this_arg);
-       // void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
-       public static native void DirectionalChannelInfo_free(long this_obj);
-       // uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       public static native int DirectionalChannelInfo_get_last_update(long this_ptr);
-       // void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
-       public static native void DirectionalChannelInfo_set_last_update(long this_ptr, int val);
-       // bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       public static native boolean DirectionalChannelInfo_get_enabled(long this_ptr);
-       // void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
-       public static native void DirectionalChannelInfo_set_enabled(long this_ptr, boolean val);
-       // uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       public static native short DirectionalChannelInfo_get_cltv_expiry_delta(long this_ptr);
-       // void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
-       public static native void DirectionalChannelInfo_set_cltv_expiry_delta(long this_ptr, short val);
-       // uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       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);
-       public static native void DirectionalChannelInfo_set_fees(long this_ptr, long val);
-       // struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       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);
-       // uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg);
-       public static native long DirectionalChannelInfo_clone_ptr(long 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);
-       public static native byte[] DirectionalChannelInfo_write(long obj);
-       // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser);
-       public static native long DirectionalChannelInfo_read(byte[] ser);
+       // void ChannelUpdateInfo_free(struct LDKChannelUpdateInfo this_obj);
+       public static native void ChannelUpdateInfo_free(long this_obj);
+       // uint32_t ChannelUpdateInfo_get_last_update(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native int ChannelUpdateInfo_get_last_update(long this_ptr);
+       // void ChannelUpdateInfo_set_last_update(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint32_t val);
+       public static native void ChannelUpdateInfo_set_last_update(long this_ptr, int val);
+       // bool ChannelUpdateInfo_get_enabled(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native boolean ChannelUpdateInfo_get_enabled(long this_ptr);
+       // void ChannelUpdateInfo_set_enabled(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, bool val);
+       public static native void ChannelUpdateInfo_set_enabled(long this_ptr, boolean val);
+       // uint16_t ChannelUpdateInfo_get_cltv_expiry_delta(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native short ChannelUpdateInfo_get_cltv_expiry_delta(long this_ptr);
+       // void ChannelUpdateInfo_set_cltv_expiry_delta(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint16_t val);
+       public static native void ChannelUpdateInfo_set_cltv_expiry_delta(long this_ptr, short val);
+       // uint64_t ChannelUpdateInfo_get_htlc_minimum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native long ChannelUpdateInfo_get_htlc_minimum_msat(long this_ptr);
+       // void ChannelUpdateInfo_set_htlc_minimum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ChannelUpdateInfo_set_htlc_minimum_msat(long this_ptr, long val);
+       // struct LDKCOption_u64Z ChannelUpdateInfo_get_htlc_maximum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native long ChannelUpdateInfo_get_htlc_maximum_msat(long this_ptr);
+       // void ChannelUpdateInfo_set_htlc_maximum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void ChannelUpdateInfo_set_htlc_maximum_msat(long this_ptr, long val);
+       // struct LDKRoutingFees ChannelUpdateInfo_get_fees(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native long ChannelUpdateInfo_get_fees(long this_ptr);
+       // void ChannelUpdateInfo_set_fees(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
+       public static native void ChannelUpdateInfo_set_fees(long this_ptr, long val);
+       // struct LDKChannelUpdate ChannelUpdateInfo_get_last_update_message(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
+       public static native long ChannelUpdateInfo_get_last_update_message(long this_ptr);
+       // void ChannelUpdateInfo_set_last_update_message(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
+       public static native void ChannelUpdateInfo_set_last_update_message(long this_ptr, long val);
+       // MUST_USE_RES struct LDKChannelUpdateInfo ChannelUpdateInfo_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 ChannelUpdateInfo_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);
+       // uintptr_t ChannelUpdateInfo_clone_ptr(LDKChannelUpdateInfo *NONNULL_PTR arg);
+       public static native long ChannelUpdateInfo_clone_ptr(long arg);
+       // struct LDKChannelUpdateInfo ChannelUpdateInfo_clone(const struct LDKChannelUpdateInfo *NONNULL_PTR orig);
+       public static native long ChannelUpdateInfo_clone(long orig);
+       // struct LDKCVec_u8Z ChannelUpdateInfo_write(const struct LDKChannelUpdateInfo *NONNULL_PTR obj);
+       public static native byte[] ChannelUpdateInfo_write(long obj);
+       // struct LDKCResult_ChannelUpdateInfoDecodeErrorZ ChannelUpdateInfo_read(struct LDKu8slice ser);
+       public static native long ChannelUpdateInfo_read(byte[] ser);
        // void ChannelInfo_free(struct LDKChannelInfo this_obj);
        public static native void ChannelInfo_free(long this_obj);
        // struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
@@ -5569,17 +6432,17 @@ public class bindings {
        public static native long ChannelInfo_get_node_one(long this_ptr);
        // void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
        public static native void ChannelInfo_set_node_one(long this_ptr, long val);
-       // struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       // struct LDKChannelUpdateInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
        public static native long ChannelInfo_get_one_to_two(long this_ptr);
-       // void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
+       // void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
        public static native void ChannelInfo_set_one_to_two(long this_ptr, long val);
        // struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
        public static native long ChannelInfo_get_node_two(long this_ptr);
        // void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
        public static native void ChannelInfo_set_node_two(long this_ptr, long val);
-       // struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       // struct LDKChannelUpdateInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
        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);
+       // void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo 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);
@@ -5589,9 +6452,7 @@ public class bindings {
        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 LDKNodeId node_one_arg, struct LDKDirectionalChannelInfo one_to_two_arg, struct LDKNodeId 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, long node_one_arg, long one_to_two_arg, long node_two_arg, long two_to_one_arg, long capacity_sats_arg, long announcement_message_arg);
-       // uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg);
+       // uintptr_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg);
        public static native long ChannelInfo_clone_ptr(long arg);
        // struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
        public static native long ChannelInfo_clone(long orig);
@@ -5599,6 +6460,36 @@ public class bindings {
        public static native byte[] ChannelInfo_write(long obj);
        // struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
        public static native long ChannelInfo_read(byte[] ser);
+       // void DirectedChannelInfo_free(struct LDKDirectedChannelInfo this_obj);
+       public static native void DirectedChannelInfo_free(long this_obj);
+       // uintptr_t DirectedChannelInfo_clone_ptr(LDKDirectedChannelInfo *NONNULL_PTR arg);
+       public static native long DirectedChannelInfo_clone_ptr(long arg);
+       // struct LDKDirectedChannelInfo DirectedChannelInfo_clone(const struct LDKDirectedChannelInfo *NONNULL_PTR orig);
+       public static native long DirectedChannelInfo_clone(long orig);
+       // MUST_USE_RES struct LDKChannelInfo DirectedChannelInfo_channel(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
+       public static native long DirectedChannelInfo_channel(long this_arg);
+       // MUST_USE_RES struct LDKChannelUpdateInfo DirectedChannelInfo_direction(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
+       public static native long DirectedChannelInfo_direction(long this_arg);
+       // MUST_USE_RES struct LDKEffectiveCapacity DirectedChannelInfo_effective_capacity(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
+       public static native long DirectedChannelInfo_effective_capacity(long this_arg);
+       // void EffectiveCapacity_free(struct LDKEffectiveCapacity this_ptr);
+       public static native void EffectiveCapacity_free(long this_ptr);
+       // uintptr_t EffectiveCapacity_clone_ptr(LDKEffectiveCapacity *NONNULL_PTR arg);
+       public static native long EffectiveCapacity_clone_ptr(long arg);
+       // struct LDKEffectiveCapacity EffectiveCapacity_clone(const struct LDKEffectiveCapacity *NONNULL_PTR orig);
+       public static native long EffectiveCapacity_clone(long orig);
+       // struct LDKEffectiveCapacity EffectiveCapacity_exact_liquidity(uint64_t liquidity_msat);
+       public static native long EffectiveCapacity_exact_liquidity(long liquidity_msat);
+       // struct LDKEffectiveCapacity EffectiveCapacity_maximum_htlc(uint64_t amount_msat);
+       public static native long EffectiveCapacity_maximum_htlc(long amount_msat);
+       // struct LDKEffectiveCapacity EffectiveCapacity_total(uint64_t capacity_msat);
+       public static native long EffectiveCapacity_total(long capacity_msat);
+       // struct LDKEffectiveCapacity EffectiveCapacity_infinite(void);
+       public static native long EffectiveCapacity_infinite();
+       // struct LDKEffectiveCapacity EffectiveCapacity_unknown(void);
+       public static native long EffectiveCapacity_unknown();
+       // MUST_USE_RES uint64_t EffectiveCapacity_as_msat(const struct LDKEffectiveCapacity *NONNULL_PTR this_arg);
+       public static native long EffectiveCapacity_as_msat(long this_arg);
        // void RoutingFees_free(struct LDKRoutingFees this_obj);
        public static native void RoutingFees_free(long this_obj);
        // uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
@@ -5613,7 +6504,7 @@ public class bindings {
        public static native long RoutingFees_new(int base_msat_arg, int proportional_millionths_arg);
        // bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
        public static native boolean RoutingFees_eq(long a, long b);
-       // uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg);
+       // uintptr_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg);
        public static native long RoutingFees_clone_ptr(long arg);
        // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
        public static native long RoutingFees_clone(long orig);
@@ -5649,7 +6540,7 @@ public class bindings {
        public static native void NodeAnnouncementInfo_set_announcement_message(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(struct LDKNodeFeatures features_arg, uint32_t last_update_arg, struct LDKThreeBytes rgb_arg, struct LDKThirtyTwoBytes alias_arg, struct LDKCVec_NetAddressZ addresses_arg, struct LDKNodeAnnouncement announcement_message_arg);
        public static native long NodeAnnouncementInfo_new(long features_arg, int last_update_arg, byte[] rgb_arg, byte[] alias_arg, long[] addresses_arg, long announcement_message_arg);
-       // uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg);
+       // uintptr_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg);
        public static native long NodeAnnouncementInfo_clone_ptr(long arg);
        // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
        public static native long NodeAnnouncementInfo_clone(long orig);
@@ -5671,7 +6562,7 @@ public class bindings {
        public static native void NodeInfo_set_announcement_info(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
        public static native long NodeInfo_new(long[] channels_arg, long lowest_inbound_channel_fees_arg, long announcement_info_arg);
-       // uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg);
+       // uintptr_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg);
        public static native long NodeInfo_clone_ptr(long arg);
        // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
        public static native long NodeInfo_clone(long orig);
@@ -5699,6 +6590,10 @@ public class bindings {
        public static native void NetworkGraph_close_channel_from_update(long this_arg, long short_channel_id, boolean is_permanent);
        // void NetworkGraph_fail_node(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
        public static native void NetworkGraph_fail_node(long this_arg, byte[] _node_id, boolean is_permanent);
+       // void NetworkGraph_remove_stale_channels(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
+       public static native void NetworkGraph_remove_stale_channels(long this_arg);
+       // void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
+       public static native void NetworkGraph_remove_stale_channels_with_time(long this_arg, long current_time_unix);
        // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
        public static native long NetworkGraph_update_channel(long this_arg, long msg);
        // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
@@ -5733,7 +6628,7 @@ public class bindings {
        public static native void RouteHop_set_cltv_expiry_delta(long this_ptr, int val);
        // MUST_USE_RES struct LDKRouteHop RouteHop_new(struct LDKPublicKey pubkey_arg, struct LDKNodeFeatures node_features_arg, uint64_t short_channel_id_arg, struct LDKChannelFeatures channel_features_arg, uint64_t fee_msat_arg, uint32_t cltv_expiry_delta_arg);
        public static native long RouteHop_new(byte[] pubkey_arg, long node_features_arg, long short_channel_id_arg, long channel_features_arg, long fee_msat_arg, int cltv_expiry_delta_arg);
-       // uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg);
+       // uintptr_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg);
        public static native long RouteHop_clone_ptr(long arg);
        // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
        public static native long RouteHop_clone(long orig);
@@ -5751,13 +6646,13 @@ public class bindings {
        public static native long[][] Route_get_paths(long this_ptr);
        // void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
        public static native void Route_set_paths(long this_ptr, long[][] val);
-       // struct LDKPayee Route_get_payee(const struct LDKRoute *NONNULL_PTR this_ptr);
-       public static native long Route_get_payee(long this_ptr);
-       // void Route_set_payee(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPayee val);
-       public static native void Route_set_payee(long this_ptr, long val);
-       // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPayee payee_arg);
-       public static native long Route_new(long[][] paths_arg, long payee_arg);
-       // uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg);
+       // struct LDKPaymentParameters Route_get_payment_params(const struct LDKRoute *NONNULL_PTR this_ptr);
+       public static native long Route_get_payment_params(long this_ptr);
+       // void Route_set_payment_params(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
+       public static native void Route_set_payment_params(long this_ptr, long val);
+       // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPaymentParameters payment_params_arg);
+       public static native long Route_new(long[][] paths_arg, long payment_params_arg);
+       // uintptr_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg);
        public static native long Route_clone_ptr(long arg);
        // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
        public static native long Route_clone(long orig);
@@ -5775,10 +6670,10 @@ public class bindings {
        public static native long Route_read(byte[] ser);
        // void RouteParameters_free(struct LDKRouteParameters this_obj);
        public static native void RouteParameters_free(long this_obj);
-       // struct LDKPayee RouteParameters_get_payee(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
-       public static native long RouteParameters_get_payee(long this_ptr);
-       // void RouteParameters_set_payee(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPayee val);
-       public static native void RouteParameters_set_payee(long this_ptr, long val);
+       // struct LDKPaymentParameters RouteParameters_get_payment_params(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
+       public static native long RouteParameters_get_payment_params(long this_ptr);
+       // void RouteParameters_set_payment_params(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
+       public static native void RouteParameters_set_payment_params(long this_ptr, long val);
        // uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
        public static native long RouteParameters_get_final_value_msat(long this_ptr);
        // void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
@@ -5787,9 +6682,9 @@ public class bindings {
        public static native int RouteParameters_get_final_cltv_expiry_delta(long this_ptr);
        // void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
        public static native void RouteParameters_set_final_cltv_expiry_delta(long this_ptr, int val);
-       // MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPayee payee_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
-       public static native long RouteParameters_new(long payee_arg, long final_value_msat_arg, int final_cltv_expiry_delta_arg);
-       // uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg);
+       // MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPaymentParameters payment_params_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
+       public static native long RouteParameters_new(long payment_params_arg, long final_value_msat_arg, int final_cltv_expiry_delta_arg);
+       // uintptr_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg);
        public static native long RouteParameters_clone_ptr(long arg);
        // struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
        public static native long RouteParameters_clone(long orig);
@@ -5797,42 +6692,46 @@ public class bindings {
        public static native byte[] RouteParameters_write(long obj);
        // struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
        public static native long RouteParameters_read(byte[] ser);
-       // void Payee_free(struct LDKPayee this_obj);
-       public static native void Payee_free(long this_obj);
-       // struct LDKPublicKey Payee_get_pubkey(const struct LDKPayee *NONNULL_PTR this_ptr);
-       public static native byte[] Payee_get_pubkey(long this_ptr);
-       // void Payee_set_pubkey(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       public static native void Payee_set_pubkey(long this_ptr, byte[] val);
-       // struct LDKInvoiceFeatures Payee_get_features(const struct LDKPayee *NONNULL_PTR this_ptr);
-       public static native long Payee_get_features(long this_ptr);
-       // void Payee_set_features(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
-       public static native void Payee_set_features(long this_ptr, long val);
-       // struct LDKCVec_RouteHintZ Payee_get_route_hints(const struct LDKPayee *NONNULL_PTR this_ptr);
-       public static native long[] Payee_get_route_hints(long this_ptr);
-       // void Payee_set_route_hints(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
-       public static native void Payee_set_route_hints(long this_ptr, long[] val);
-       // struct LDKCOption_u64Z Payee_get_expiry_time(const struct LDKPayee *NONNULL_PTR this_ptr);
-       public static native long Payee_get_expiry_time(long this_ptr);
-       // void Payee_set_expiry_time(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       public static native void Payee_set_expiry_time(long this_ptr, long val);
-       // MUST_USE_RES struct LDKPayee Payee_new(struct LDKPublicKey pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg);
-       public static native long Payee_new(byte[] pubkey_arg, long features_arg, long[] route_hints_arg, long expiry_time_arg);
-       // uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg);
-       public static native long Payee_clone_ptr(long arg);
-       // struct LDKPayee Payee_clone(const struct LDKPayee *NONNULL_PTR orig);
-       public static native long Payee_clone(long orig);
-       // uint64_t Payee_hash(const struct LDKPayee *NONNULL_PTR o);
-       public static native long Payee_hash(long o);
-       // bool Payee_eq(const struct LDKPayee *NONNULL_PTR a, const struct LDKPayee *NONNULL_PTR b);
-       public static native boolean Payee_eq(long a, long b);
-       // struct LDKCVec_u8Z Payee_write(const struct LDKPayee *NONNULL_PTR obj);
-       public static native byte[] Payee_write(long obj);
-       // struct LDKCResult_PayeeDecodeErrorZ Payee_read(struct LDKu8slice ser);
-       public static native long Payee_read(byte[] ser);
-       // MUST_USE_RES struct LDKPayee Payee_from_node_id(struct LDKPublicKey pubkey);
-       public static native long Payee_from_node_id(byte[] pubkey);
-       // MUST_USE_RES struct LDKPayee Payee_for_keysend(struct LDKPublicKey pubkey);
-       public static native long Payee_for_keysend(byte[] pubkey);
+       // void PaymentParameters_free(struct LDKPaymentParameters this_obj);
+       public static native void PaymentParameters_free(long this_obj);
+       // struct LDKPublicKey PaymentParameters_get_payee_pubkey(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
+       public static native byte[] PaymentParameters_get_payee_pubkey(long this_ptr);
+       // void PaymentParameters_set_payee_pubkey(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       public static native void PaymentParameters_set_payee_pubkey(long this_ptr, byte[] val);
+       // struct LDKInvoiceFeatures PaymentParameters_get_features(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
+       public static native long PaymentParameters_get_features(long this_ptr);
+       // void PaymentParameters_set_features(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
+       public static native void PaymentParameters_set_features(long this_ptr, long val);
+       // struct LDKCVec_RouteHintZ PaymentParameters_get_route_hints(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
+       public static native long[] PaymentParameters_get_route_hints(long this_ptr);
+       // void PaymentParameters_set_route_hints(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
+       public static native void PaymentParameters_set_route_hints(long this_ptr, long[] val);
+       // struct LDKCOption_u64Z PaymentParameters_get_expiry_time(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
+       public static native long PaymentParameters_get_expiry_time(long this_ptr);
+       // void PaymentParameters_set_expiry_time(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       public static native void PaymentParameters_set_expiry_time(long this_ptr, long val);
+       // uint32_t PaymentParameters_get_max_total_cltv_expiry_delta(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
+       public static native int PaymentParameters_get_max_total_cltv_expiry_delta(long this_ptr);
+       // void PaymentParameters_set_max_total_cltv_expiry_delta(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint32_t val);
+       public static native void PaymentParameters_set_max_total_cltv_expiry_delta(long this_ptr, int val);
+       // MUST_USE_RES struct LDKPaymentParameters PaymentParameters_new(struct LDKPublicKey payee_pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg, uint32_t max_total_cltv_expiry_delta_arg);
+       public static native long PaymentParameters_new(byte[] payee_pubkey_arg, long features_arg, long[] route_hints_arg, long expiry_time_arg, int max_total_cltv_expiry_delta_arg);
+       // uintptr_t PaymentParameters_clone_ptr(LDKPaymentParameters *NONNULL_PTR arg);
+       public static native long PaymentParameters_clone_ptr(long arg);
+       // struct LDKPaymentParameters PaymentParameters_clone(const struct LDKPaymentParameters *NONNULL_PTR orig);
+       public static native long PaymentParameters_clone(long orig);
+       // uint64_t PaymentParameters_hash(const struct LDKPaymentParameters *NONNULL_PTR o);
+       public static native long PaymentParameters_hash(long o);
+       // bool PaymentParameters_eq(const struct LDKPaymentParameters *NONNULL_PTR a, const struct LDKPaymentParameters *NONNULL_PTR b);
+       public static native boolean PaymentParameters_eq(long a, long b);
+       // struct LDKCVec_u8Z PaymentParameters_write(const struct LDKPaymentParameters *NONNULL_PTR obj);
+       public static native byte[] PaymentParameters_write(long obj);
+       // struct LDKCResult_PaymentParametersDecodeErrorZ PaymentParameters_read(struct LDKu8slice ser);
+       public static native long PaymentParameters_read(byte[] ser);
+       // MUST_USE_RES struct LDKPaymentParameters PaymentParameters_from_node_id(struct LDKPublicKey payee_pubkey);
+       public static native long PaymentParameters_from_node_id(byte[] payee_pubkey);
+       // MUST_USE_RES struct LDKPaymentParameters PaymentParameters_for_keysend(struct LDKPublicKey payee_pubkey);
+       public static native long PaymentParameters_for_keysend(byte[] payee_pubkey);
        // void RouteHint_free(struct LDKRouteHint this_obj);
        public static native void RouteHint_free(long this_obj);
        // struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
@@ -5841,7 +6740,7 @@ public class bindings {
        public static native void RouteHint_set_a(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
        public static native long RouteHint_new(long[] a_arg);
-       // uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg);
+       // uintptr_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg);
        public static native long RouteHint_clone_ptr(long arg);
        // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
        public static native long RouteHint_clone(long orig);
@@ -5881,7 +6780,7 @@ public class bindings {
        public static native void RouteHintHop_set_htlc_maximum_msat(long this_ptr, long val);
        // MUST_USE_RES struct LDKRouteHintHop RouteHintHop_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 RouteHintHop_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);
-       // uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg);
+       // uintptr_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg);
        public static native long RouteHintHop_clone_ptr(long arg);
        // struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
        public static native long RouteHintHop_clone(long orig);
@@ -5893,8 +6792,30 @@ public class bindings {
        public static native byte[] RouteHintHop_write(long obj);
        // struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
        public static native long RouteHintHop_read(byte[] ser);
-       // struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR params, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer);
-       public static native long find_route(byte[] our_node_pubkey, long params, long network, long[] first_hops, long logger, long scorer);
+       // struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR route_params, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer, const uint8_t (*random_seed_bytes)[32]);
+       public static native long find_route(byte[] our_node_pubkey, long route_params, long network, long[] first_hops, long logger, long scorer, byte[] random_seed_bytes);
+       // void Score_free(struct LDKScore this_ptr);
+       public static native void Score_free(long this_ptr);
+       // void LockableScore_free(struct LDKLockableScore this_ptr);
+       public static native void LockableScore_free(long this_ptr);
+       // void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
+       public static native void MultiThreadedLockableScore_free(long this_obj);
+       // MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
+       public static native long MultiThreadedLockableScore_new(long score);
+       // void FixedPenaltyScorer_free(struct LDKFixedPenaltyScorer this_obj);
+       public static native void FixedPenaltyScorer_free(long this_obj);
+       // uintptr_t FixedPenaltyScorer_clone_ptr(LDKFixedPenaltyScorer *NONNULL_PTR arg);
+       public static native long FixedPenaltyScorer_clone_ptr(long arg);
+       // struct LDKFixedPenaltyScorer FixedPenaltyScorer_clone(const struct LDKFixedPenaltyScorer *NONNULL_PTR orig);
+       public static native long FixedPenaltyScorer_clone(long orig);
+       // MUST_USE_RES struct LDKFixedPenaltyScorer FixedPenaltyScorer_with_penalty(uint64_t penalty_msat);
+       public static native long FixedPenaltyScorer_with_penalty(long penalty_msat);
+       // struct LDKScore FixedPenaltyScorer_as_Score(const struct LDKFixedPenaltyScorer *NONNULL_PTR this_arg);
+       public static native long FixedPenaltyScorer_as_Score(long this_arg);
+       // struct LDKCVec_u8Z FixedPenaltyScorer_write(const struct LDKFixedPenaltyScorer *NONNULL_PTR obj);
+       public static native byte[] FixedPenaltyScorer_write(long obj);
+       // struct LDKCResult_FixedPenaltyScorerDecodeErrorZ FixedPenaltyScorer_read(struct LDKu8slice ser, uint64_t arg);
+       public static native long FixedPenaltyScorer_read(byte[] ser, long arg);
        // void Scorer_free(struct LDKScorer this_obj);
        public static native void Scorer_free(long this_obj);
        // void ScoringParameters_free(struct LDKScoringParameters this_obj);
@@ -5907,12 +6828,24 @@ public class bindings {
        public static native long ScoringParameters_get_failure_penalty_msat(long this_ptr);
        // void ScoringParameters_set_failure_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ScoringParameters_set_failure_penalty_msat(long this_ptr, long val);
+       // uint16_t ScoringParameters_get_overuse_penalty_start_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       public static native short ScoringParameters_get_overuse_penalty_start_1024th(long this_ptr);
+       // void ScoringParameters_set_overuse_penalty_start_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint16_t val);
+       public static native void ScoringParameters_set_overuse_penalty_start_1024th(long this_ptr, short val);
+       // uint64_t ScoringParameters_get_overuse_penalty_msat_per_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       public static native long ScoringParameters_get_overuse_penalty_msat_per_1024th(long this_ptr);
+       // void ScoringParameters_set_overuse_penalty_msat_per_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ScoringParameters_set_overuse_penalty_msat_per_1024th(long this_ptr, long val);
        // uint64_t ScoringParameters_get_failure_penalty_half_life(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
        public static native long ScoringParameters_get_failure_penalty_half_life(long this_ptr);
        // void ScoringParameters_set_failure_penalty_half_life(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ScoringParameters_set_failure_penalty_half_life(long this_ptr, long val);
-       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t failure_penalty_msat_arg, uint64_t failure_penalty_half_life_arg);
-       public static native long ScoringParameters_new(long base_penalty_msat_arg, long failure_penalty_msat_arg, long failure_penalty_half_life_arg);
+       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t failure_penalty_msat_arg, uint16_t overuse_penalty_start_1024th_arg, uint64_t overuse_penalty_msat_per_1024th_arg, uint64_t failure_penalty_half_life_arg);
+       public static native long ScoringParameters_new(long base_penalty_msat_arg, long failure_penalty_msat_arg, short overuse_penalty_start_1024th_arg, long overuse_penalty_msat_per_1024th_arg, long failure_penalty_half_life_arg);
+       // uintptr_t ScoringParameters_clone_ptr(LDKScoringParameters *NONNULL_PTR arg);
+       public static native long ScoringParameters_clone_ptr(long arg);
+       // struct LDKScoringParameters ScoringParameters_clone(const struct LDKScoringParameters *NONNULL_PTR orig);
+       public static native long ScoringParameters_clone(long orig);
        // struct LDKCVec_u8Z ScoringParameters_write(const struct LDKScoringParameters *NONNULL_PTR obj);
        public static native byte[] ScoringParameters_write(long obj);
        // struct LDKCResult_ScoringParametersDecodeErrorZ ScoringParameters_read(struct LDKu8slice ser);
@@ -5929,6 +6862,42 @@ public class bindings {
        public static native byte[] Scorer_write(long obj);
        // struct LDKCResult_ScorerDecodeErrorZ Scorer_read(struct LDKu8slice ser);
        public static native long Scorer_read(byte[] ser);
+       // void ProbabilisticScorer_free(struct LDKProbabilisticScorer this_obj);
+       public static native void ProbabilisticScorer_free(long this_obj);
+       // void ProbabilisticScoringParameters_free(struct LDKProbabilisticScoringParameters this_obj);
+       public static native void ProbabilisticScoringParameters_free(long this_obj);
+       // uint64_t ProbabilisticScoringParameters_get_base_penalty_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
+       public static native long ProbabilisticScoringParameters_get_base_penalty_msat(long this_ptr);
+       // void ProbabilisticScoringParameters_set_base_penalty_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ProbabilisticScoringParameters_set_base_penalty_msat(long this_ptr, long val);
+       // uint64_t ProbabilisticScoringParameters_get_liquidity_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
+       public static native long ProbabilisticScoringParameters_get_liquidity_penalty_multiplier_msat(long this_ptr);
+       // void ProbabilisticScoringParameters_set_liquidity_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ProbabilisticScoringParameters_set_liquidity_penalty_multiplier_msat(long this_ptr, long val);
+       // uint64_t ProbabilisticScoringParameters_get_liquidity_offset_half_life(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
+       public static native long ProbabilisticScoringParameters_get_liquidity_offset_half_life(long this_ptr);
+       // void ProbabilisticScoringParameters_set_liquidity_offset_half_life(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ProbabilisticScoringParameters_set_liquidity_offset_half_life(long this_ptr, long val);
+       // uint64_t ProbabilisticScoringParameters_get_amount_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
+       public static native long ProbabilisticScoringParameters_get_amount_penalty_multiplier_msat(long this_ptr);
+       // void ProbabilisticScoringParameters_set_amount_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       public static native void ProbabilisticScoringParameters_set_amount_penalty_multiplier_msat(long this_ptr, long val);
+       // MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t liquidity_penalty_multiplier_msat_arg, uint64_t liquidity_offset_half_life_arg, uint64_t amount_penalty_multiplier_msat_arg);
+       public static native long ProbabilisticScoringParameters_new(long base_penalty_msat_arg, long liquidity_penalty_multiplier_msat_arg, long liquidity_offset_half_life_arg, long amount_penalty_multiplier_msat_arg);
+       // uintptr_t ProbabilisticScoringParameters_clone_ptr(LDKProbabilisticScoringParameters *NONNULL_PTR arg);
+       public static native long ProbabilisticScoringParameters_clone_ptr(long arg);
+       // struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_clone(const struct LDKProbabilisticScoringParameters *NONNULL_PTR orig);
+       public static native long ProbabilisticScoringParameters_clone(long orig);
+       // MUST_USE_RES struct LDKProbabilisticScorer ProbabilisticScorer_new(struct LDKProbabilisticScoringParameters params, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
+       public static native long ProbabilisticScorer_new(long params, long network_graph);
+       // MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_default(void);
+       public static native long ProbabilisticScoringParameters_default();
+       // struct LDKScore ProbabilisticScorer_as_Score(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
+       public static native long ProbabilisticScorer_as_Score(long this_arg);
+       // struct LDKCVec_u8Z ProbabilisticScorer_write(const struct LDKProbabilisticScorer *NONNULL_PTR obj);
+       public static native byte[] ProbabilisticScorer_write(long obj);
+       // struct LDKCResult_ProbabilisticScorerDecodeErrorZ ProbabilisticScorer_read(struct LDKu8slice ser, struct LDKProbabilisticScoringParameters arg_a, const struct LDKNetworkGraph *NONNULL_PTR arg_b);
+       public static native long ProbabilisticScorer_read(byte[] ser, long arg_a, long arg_b);
        // void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
        public static native void FilesystemPersister_free(long this_obj);
        // MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
@@ -5937,27 +6906,79 @@ public class bindings {
        public static native String FilesystemPersister_get_data_dir(long this_arg);
        // MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKStr data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
        public static native long FilesystemPersister_persist_manager(String data_dir, long manager);
+       // MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_network_graph(struct LDKStr data_dir, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
+       public static native long FilesystemPersister_persist_network_graph(String data_dir, long network_graph);
        // 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);
        // void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
        public static native void BackgroundProcessor_free(long this_obj);
-       // void ChannelManagerPersister_free(struct LDKChannelManagerPersister this_ptr);
-       public static native void ChannelManagerPersister_free(long this_ptr);
-       // MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKChannelManagerPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKNetGraphMsgHandler net_graph_msg_handler, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
+       // void Persister_free(struct LDKPersister this_ptr);
+       public static native void Persister_free(long this_ptr);
+       // MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKNetGraphMsgHandler net_graph_msg_handler, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
        public static native long BackgroundProcessor_start(long persister, long event_handler, long chain_monitor, long channel_manager, long net_graph_msg_handler, long peer_manager, long logger);
        // MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
        public static native long BackgroundProcessor_join(long this_arg);
        // MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
        public static native long BackgroundProcessor_stop(long this_arg);
-       // void check_platform(void);
-       public static native void check_platform();
+       // void ParseError_free(struct LDKParseError this_ptr);
+       public static native void ParseError_free(long this_ptr);
+       // uintptr_t ParseError_clone_ptr(LDKParseError *NONNULL_PTR arg);
+       public static native long ParseError_clone_ptr(long arg);
+       // struct LDKParseError ParseError_clone(const struct LDKParseError *NONNULL_PTR orig);
+       public static native long ParseError_clone(long orig);
+       // struct LDKParseError ParseError_bech32_error(struct LDKBech32Error a);
+       public static native long ParseError_bech32_error(long a);
+       // struct LDKParseError ParseError_parse_amount_error(struct LDKError a);
+       public static native long ParseError_parse_amount_error(int a);
+       // struct LDKParseError ParseError_malformed_signature(enum LDKSecp256k1Error a);
+       public static native long ParseError_malformed_signature(Secp256k1Error a);
+       // struct LDKParseError ParseError_bad_prefix(void);
+       public static native long ParseError_bad_prefix();
+       // struct LDKParseError ParseError_unknown_currency(void);
+       public static native long ParseError_unknown_currency();
+       // struct LDKParseError ParseError_unknown_si_prefix(void);
+       public static native long ParseError_unknown_si_prefix();
+       // struct LDKParseError ParseError_malformed_hrp(void);
+       public static native long ParseError_malformed_hrp();
+       // struct LDKParseError ParseError_too_short_data_part(void);
+       public static native long ParseError_too_short_data_part();
+       // struct LDKParseError ParseError_unexpected_end_of_tagged_fields(void);
+       public static native long ParseError_unexpected_end_of_tagged_fields();
+       // struct LDKParseError ParseError_description_decode_error(struct LDKError a);
+       public static native long ParseError_description_decode_error(int a);
+       // struct LDKParseError ParseError_padding_error(void);
+       public static native long ParseError_padding_error();
+       // struct LDKParseError ParseError_integer_overflow_error(void);
+       public static native long ParseError_integer_overflow_error();
+       // struct LDKParseError ParseError_invalid_seg_wit_program_length(void);
+       public static native long ParseError_invalid_seg_wit_program_length();
+       // struct LDKParseError ParseError_invalid_pub_key_hash_length(void);
+       public static native long ParseError_invalid_pub_key_hash_length();
+       // struct LDKParseError ParseError_invalid_script_hash_length(void);
+       public static native long ParseError_invalid_script_hash_length();
+       // struct LDKParseError ParseError_invalid_recovery_id(void);
+       public static native long ParseError_invalid_recovery_id();
+       // struct LDKParseError ParseError_invalid_slice_length(struct LDKStr a);
+       public static native long ParseError_invalid_slice_length(String a);
+       // struct LDKParseError ParseError_skip(void);
+       public static native long ParseError_skip();
+       // void ParseOrSemanticError_free(struct LDKParseOrSemanticError this_ptr);
+       public static native void ParseOrSemanticError_free(long this_ptr);
+       // uintptr_t ParseOrSemanticError_clone_ptr(LDKParseOrSemanticError *NONNULL_PTR arg);
+       public static native long ParseOrSemanticError_clone_ptr(long arg);
+       // struct LDKParseOrSemanticError ParseOrSemanticError_clone(const struct LDKParseOrSemanticError *NONNULL_PTR orig);
+       public static native long ParseOrSemanticError_clone(long orig);
+       // struct LDKParseOrSemanticError ParseOrSemanticError_parse_error(struct LDKParseError a);
+       public static native long ParseOrSemanticError_parse_error(long a);
+       // struct LDKParseOrSemanticError ParseOrSemanticError_semantic_error(enum LDKSemanticError a);
+       public static native long ParseOrSemanticError_semantic_error(SemanticError a);
        // void Invoice_free(struct LDKInvoice this_obj);
        public static native void Invoice_free(long this_obj);
        // bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
        public static native boolean Invoice_eq(long a, long b);
-       // uint64_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg);
+       // uintptr_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg);
        public static native long Invoice_clone_ptr(long arg);
        // struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
        public static native long Invoice_clone(long orig);
@@ -5965,7 +6986,7 @@ public class bindings {
        public static native void SignedRawInvoice_free(long this_obj);
        // bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
        public static native boolean SignedRawInvoice_eq(long a, long b);
-       // uint64_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg);
+       // uintptr_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg);
        public static native long SignedRawInvoice_clone_ptr(long arg);
        // struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
        public static native long SignedRawInvoice_clone(long orig);
@@ -5977,7 +6998,7 @@ public class bindings {
        public static native void RawInvoice_set_data(long this_ptr, long val);
        // bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
        public static native boolean RawInvoice_eq(long a, long b);
-       // uint64_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg);
+       // uintptr_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg);
        public static native long RawInvoice_clone_ptr(long arg);
        // struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
        public static native long RawInvoice_clone(long orig);
@@ -5989,7 +7010,7 @@ public class bindings {
        public static native void RawDataPart_set_timestamp(long this_ptr, long val);
        // bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
        public static native boolean RawDataPart_eq(long a, long b);
-       // uint64_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg);
+       // uintptr_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg);
        public static native long RawDataPart_clone_ptr(long arg);
        // struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
        public static native long RawDataPart_clone(long orig);
@@ -5997,7 +7018,7 @@ public class bindings {
        public static native void PositiveTimestamp_free(long this_obj);
        // bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
        public static native boolean PositiveTimestamp_eq(long a, long b);
-       // uint64_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg);
+       // uintptr_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg);
        public static native long PositiveTimestamp_clone_ptr(long arg);
        // struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
        public static native long PositiveTimestamp_clone(long orig);
@@ -6033,7 +7054,7 @@ public class bindings {
        public static native boolean Currency_eq(long a, long b);
        // void Sha256_free(struct LDKSha256 this_obj);
        public static native void Sha256_free(long this_obj);
-       // uint64_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg);
+       // uintptr_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg);
        public static native long Sha256_clone_ptr(long arg);
        // struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
        public static native long Sha256_clone(long orig);
@@ -6043,7 +7064,7 @@ public class bindings {
        public static native boolean Sha256_eq(long a, long b);
        // void Description_free(struct LDKDescription this_obj);
        public static native void Description_free(long this_obj);
-       // uint64_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg);
+       // uintptr_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg);
        public static native long Description_clone_ptr(long arg);
        // struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
        public static native long Description_clone(long orig);
@@ -6059,7 +7080,7 @@ public class bindings {
        public static native void PayeePubKey_set_a(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
        public static native long PayeePubKey_new(byte[] a_arg);
-       // uint64_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg);
+       // uintptr_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg);
        public static native long PayeePubKey_clone_ptr(long arg);
        // struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
        public static native long PayeePubKey_clone(long orig);
@@ -6069,7 +7090,7 @@ public class bindings {
        public static native boolean PayeePubKey_eq(long a, long b);
        // void ExpiryTime_free(struct LDKExpiryTime this_obj);
        public static native void ExpiryTime_free(long this_obj);
-       // uint64_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg);
+       // uintptr_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg);
        public static native long ExpiryTime_clone_ptr(long arg);
        // struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
        public static native long ExpiryTime_clone(long orig);
@@ -6085,7 +7106,7 @@ public class bindings {
        public static native void MinFinalCltvExpiry_set_a(long this_ptr, long val);
        // MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
        public static native long MinFinalCltvExpiry_new(long a_arg);
-       // uint64_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg);
+       // uintptr_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg);
        public static native long MinFinalCltvExpiry_clone_ptr(long arg);
        // struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
        public static native long MinFinalCltvExpiry_clone(long orig);
@@ -6095,7 +7116,7 @@ public class bindings {
        public static native boolean MinFinalCltvExpiry_eq(long a, long b);
        // void Fallback_free(struct LDKFallback this_ptr);
        public static native void Fallback_free(long this_ptr);
-       // uint64_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg);
+       // uintptr_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg);
        public static native long Fallback_clone_ptr(long arg);
        // struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
        public static native long Fallback_clone(long orig);
@@ -6111,7 +7132,7 @@ public class bindings {
        public static native boolean Fallback_eq(long a, long b);
        // void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
        public static native void InvoiceSignature_free(long this_obj);
-       // uint64_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg);
+       // uintptr_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg);
        public static native long InvoiceSignature_clone_ptr(long arg);
        // struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
        public static native long InvoiceSignature_clone(long orig);
@@ -6119,7 +7140,7 @@ public class bindings {
        public static native boolean InvoiceSignature_eq(long a, long b);
        // void PrivateRoute_free(struct LDKPrivateRoute this_obj);
        public static native void PrivateRoute_free(long this_obj);
-       // uint64_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg);
+       // uintptr_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg);
        public static native long PrivateRoute_clone_ptr(long arg);
        // struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
        public static native long PrivateRoute_clone(long orig);
@@ -6167,8 +7188,12 @@ public class bindings {
        public static native long PositiveTimestamp_from_unix_timestamp(long unix_seconds);
        // MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
        public static native long PositiveTimestamp_from_system_time(long time);
+       // MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_duration_since_epoch(uint64_t duration);
+       public static native long PositiveTimestamp_from_duration_since_epoch(long duration);
        // MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
        public static native long PositiveTimestamp_as_unix_timestamp(long this_arg);
+       // MUST_USE_RES uint64_t PositiveTimestamp_as_duration_since_epoch(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
+       public static native long PositiveTimestamp_as_duration_since_epoch(long this_arg);
        // MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
        public static native long PositiveTimestamp_as_time(long this_arg);
        // MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
@@ -6179,6 +7204,8 @@ public class bindings {
        public static native long Invoice_from_signed(long signed_invoice);
        // MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
        public static native long Invoice_timestamp(long this_arg);
+       // MUST_USE_RES uint64_t Invoice_duration_since_epoch(const struct LDKInvoice *NONNULL_PTR this_arg);
+       public static native long Invoice_duration_since_epoch(long this_arg);
        // MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
        public static native byte[] Invoice_payment_hash(long this_arg);
        // MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
@@ -6193,6 +7220,8 @@ public class bindings {
        public static native long Invoice_expiry_time(long this_arg);
        // MUST_USE_RES bool Invoice_is_expired(const struct LDKInvoice *NONNULL_PTR this_arg);
        public static native boolean Invoice_is_expired(long this_arg);
+       // MUST_USE_RES bool Invoice_would_expire(const struct LDKInvoice *NONNULL_PTR this_arg, uint64_t at_time);
+       public static native boolean Invoice_would_expire(long this_arg, long at_time);
        // MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
        public static native long Invoice_min_final_cltv_expiry(long this_arg);
        // MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
@@ -6207,9 +7236,9 @@ public class bindings {
        public static native long Description_new(String description);
        // MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
        public static native String Description_into_inner(long this_arg);
-       // MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_seconds(uint64_t seconds);
+       // MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_seconds(uint64_t seconds);
        public static native long ExpiryTime_from_seconds(long seconds);
-       // MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_duration(uint64_t duration);
+       // MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_duration(uint64_t duration);
        public static native long ExpiryTime_from_duration(long duration);
        // MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
        public static native long ExpiryTime_as_seconds(long this_arg);
@@ -6227,8 +7256,10 @@ public class bindings {
        public static native CreationError CreationError_route_too_long();
        // enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
        public static native CreationError CreationError_timestamp_out_of_bounds();
-       // enum LDKCreationError CreationError_expiry_time_out_of_bounds(void);
-       public static native CreationError CreationError_expiry_time_out_of_bounds();
+       // enum LDKCreationError CreationError_invalid_amount(void);
+       public static native CreationError CreationError_invalid_amount();
+       // enum LDKCreationError CreationError_missing_route_hints(void);
+       public static native CreationError CreationError_missing_route_hints();
        // bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
        public static native boolean CreationError_eq(long a, long b);
        // struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
@@ -6261,7 +7292,7 @@ public class bindings {
        public static native String SemanticError_to_str(long o);
        // void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
        public static native void SignOrCreationError_free(long this_ptr);
-       // uint64_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg);
+       // uintptr_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg);
        public static native long SignOrCreationError_clone_ptr(long arg);
        // struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
        public static native long SignOrCreationError_clone(long orig);
@@ -6287,7 +7318,7 @@ public class bindings {
        public static native void RetryAttempts_set_a(long this_ptr, long val);
        // MUST_USE_RES struct LDKRetryAttempts RetryAttempts_new(uintptr_t a_arg);
        public static native long RetryAttempts_new(long a_arg);
-       // uint64_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg);
+       // uintptr_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg);
        public static native long RetryAttempts_clone_ptr(long arg);
        // struct LDKRetryAttempts RetryAttempts_clone(const struct LDKRetryAttempts *NONNULL_PTR orig);
        public static native long RetryAttempts_clone(long orig);
@@ -6297,7 +7328,7 @@ public class bindings {
        public static native long RetryAttempts_hash(long o);
        // void PaymentError_free(struct LDKPaymentError this_ptr);
        public static native void PaymentError_free(long this_ptr);
-       // uint64_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg);
+       // uintptr_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg);
        public static native long PaymentError_clone_ptr(long arg);
        // struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
        public static native long PaymentError_clone(long orig);
@@ -6307,32 +7338,48 @@ public class bindings {
        public static native long PaymentError_routing(long a);
        // struct LDKPaymentError PaymentError_sending(struct LDKPaymentSendFailure a);
        public static native long PaymentError_sending(long a);
-       // MUST_USE_RES struct LDKInvoicePayer InvoicePayer_new(struct LDKPayer payer, struct LDKRouter router, const struct LDKLockableScore *NONNULL_PTR scorer, struct LDKLogger logger, struct LDKEventHandler event_handler, struct LDKRetryAttempts retry_attempts);
+       // MUST_USE_RES struct LDKInvoicePayer InvoicePayer_new(struct LDKPayer payer, struct LDKRouter router, const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer, struct LDKLogger logger, struct LDKEventHandler event_handler, struct LDKRetryAttempts retry_attempts);
        public static native long InvoicePayer_new(long payer, long router, long scorer, long logger, long event_handler, long retry_attempts);
        // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice);
        public static native long InvoicePayer_pay_invoice(long this_arg, long invoice);
        // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_zero_value_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice, uint64_t amount_msats);
        public static native long InvoicePayer_pay_zero_value_invoice(long this_arg, long invoice, long amount_msats);
+       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_pubkey(const struct LDKInvoicePayer *NONNULL_PTR this_arg, struct LDKPublicKey pubkey, struct LDKThirtyTwoBytes payment_preimage, uint64_t amount_msats, uint32_t final_cltv_expiry_delta);
+       public static native long InvoicePayer_pay_pubkey(long this_arg, byte[] pubkey, byte[] payment_preimage, long amount_msats, int final_cltv_expiry_delta);
        // void InvoicePayer_remove_cached_payment(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
        public static native void InvoicePayer_remove_cached_payment(long this_arg, byte[] payment_hash);
        // struct LDKEventHandler InvoicePayer_as_EventHandler(const struct LDKInvoicePayer *NONNULL_PTR this_arg);
        public static native long InvoicePayer_as_EventHandler(long this_arg);
+       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice(struct LDKCOption_u64Z amt_msat, struct LDKStr description, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
+       public static native long create_phantom_invoice(long amt_msat, String description, byte[] payment_hash, byte[] payment_secret, long[] phantom_route_hints, long keys_manager, Currency network);
+       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
+       public static native long create_phantom_invoice_with_description_hash(long amt_msat, long description_hash, byte[] payment_hash, byte[] payment_secret, long[] phantom_route_hints, long keys_manager, Currency network);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKStr description);
        public static native long create_invoice_from_channelmanager(long channelmanager, long keys_manager, Currency network, long amt_msat, String description);
+       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash);
+       public static native long create_invoice_from_channelmanager_with_description_hash(long channelmanager, long keys_manager, Currency network, long amt_msat, long description_hash);
+       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, uint64_t duration_since_epoch);
+       public static native long create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(long channelmanager, long keys_manager, Currency network, long amt_msat, long description_hash, long duration_since_epoch);
+       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKStr description, uint64_t duration_since_epoch);
+       public static native long create_invoice_from_channelmanager_and_duration_since_epoch(long channelmanager, long keys_manager, Currency network, long amt_msat, String description, long duration_since_epoch);
        // void DefaultRouter_free(struct LDKDefaultRouter this_obj);
        public static native void DefaultRouter_free(long this_obj);
-       // MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger);
-       public static native long DefaultRouter_new(long network_graph, long logger);
+       // MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger, struct LDKThirtyTwoBytes random_seed_bytes);
+       public static native long DefaultRouter_new(long network_graph, long logger, byte[] random_seed_bytes);
        // struct LDKRouter DefaultRouter_as_Router(const struct LDKDefaultRouter *NONNULL_PTR this_arg);
        public static native long DefaultRouter_as_Router(long this_arg);
        // struct LDKPayer ChannelManager_as_Payer(const struct LDKChannelManager *NONNULL_PTR this_arg);
        public static native long ChannelManager_as_Payer(long this_arg);
-       // struct LDKCResult_SiPrefixNoneZ SiPrefix_from_str(struct LDKStr s);
+       // struct LDKCResult_SiPrefixParseErrorZ SiPrefix_from_str(struct LDKStr s);
        public static native long SiPrefix_from_str(String s);
-       // struct LDKCResult_InvoiceNoneZ Invoice_from_str(struct LDKStr s);
+       // struct LDKCResult_InvoiceParseOrSemanticErrorZ Invoice_from_str(struct LDKStr s);
        public static native long Invoice_from_str(String s);
-       // struct LDKCResult_SignedRawInvoiceNoneZ SignedRawInvoice_from_str(struct LDKStr s);
+       // struct LDKCResult_SignedRawInvoiceParseErrorZ SignedRawInvoice_from_str(struct LDKStr s);
        public static native long SignedRawInvoice_from_str(String s);
+       // struct LDKStr ParseError_to_str(const struct LDKParseError *NONNULL_PTR o);
+       public static native String ParseError_to_str(long o);
+       // struct LDKStr ParseOrSemanticError_to_str(const struct LDKParseOrSemanticError *NONNULL_PTR o);
+       public static native String ParseOrSemanticError_to_str(long o);
        // struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
        public static native String Invoice_to_str(long o);
        // struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);