Update auto-generated bindings
[ldk-java] / src / main / java / org / ldk / impl / bindings.java
index e96e4c2eba30cb254873cb9170d95ac17d78eb78..3812dff6e915709bd8533a2a44daac7d10b0b62a 100644 (file)
 package org.ldk.impl;
 
 public class bindings {
+       static native void init(java.lang.Class c);
        static {
                System.loadLibrary("lightningjni");
+               init(java.lang.Enum.class);
        }
 
+       public static native long LDKSecretKey_new();
+
+       public enum LDKAccessError {
+          LDKAccessError_UnknownChain,
+          LDKAccessError_UnknownTx,
+       }
+       public enum LDKChannelMonitorUpdateErr {
+          LDKChannelMonitorUpdateErr_TemporaryFailure,
+          LDKChannelMonitorUpdateErr_PermanentFailure,
+       }
+       public enum LDKConfirmationTarget {
+          LDKConfirmationTarget_Background,
+          LDKConfirmationTarget_Normal,
+          LDKConfirmationTarget_HighPriority,
+       }
+       public enum LDKLevel {
+          LDKLevel_Off,
+          LDKLevel_Error,
+          LDKLevel_Warn,
+          LDKLevel_Info,
+          LDKLevel_Debug,
+          LDKLevel_Trace,
+       }
+       public enum LDKNetwork {
+          LDKNetwork_Bitcoin,
+          LDKNetwork_Testnet,
+          LDKNetwork_Regtest,
+       }
+       public enum LDKSecp256k1Error {
+          LDKSecp256k1Error_IncorrectSignature,
+          LDKSecp256k1Error_InvalidMessage,
+          LDKSecp256k1Error_InvalidPublicKey,
+          LDKSecp256k1Error_InvalidSignature,
+          LDKSecp256k1Error_InvalidSecretKey,
+          LDKSecp256k1Error_InvalidRecoveryId,
+          LDKSecp256k1Error_InvalidTweak,
+          LDKSecp256k1Error_NotEnoughMemory,
+          LDKSecp256k1Error_CallbackPanicked,
+       }
        public interface LDKMessageSendEventsProvider {
-                long get_and_clear_pending_msg_events(/* TODO */);
+                long get_and_clear_pending_msg_events();
        }
        public static native long LDKMessageSendEventsProvider_new(LDKMessageSendEventsProvider impl);
        public interface LDKEventsProvider {
-                long get_and_clear_pending_events(/* TODO */);
+                long get_and_clear_pending_events();
        }
        public static native long LDKEventsProvider_new(LDKEventsProvider impl);
        public interface LDKLogger {
-                void log(/* TODO */);
+                void log(String record);
        }
        public static native long LDKLogger_new(LDKLogger impl);
-       public interface LDKChainWatchInterface {
-                void install_watch_tx(/* TODO */);
-                void install_watch_outpoint(/* TODO */);
-                void watch_all_txn(/* TODO */);
-                long get_chain_utxo(/* TODO */);
-                long filter_block(/* TODO */);
-                long reentered(/* TODO */);
+       public interface LDKAccess {
+                long get_utxo(byte[] genesis_hash, long short_channel_id);
+       }
+       public static native long LDKAccess_new(LDKAccess impl);
+       public interface LDKChannelKeys {
+                long get_per_commitment_point(long idx);
+                long release_commitment_secret(long idx);
+                long key_derivation_params();
+                long sign_counterparty_commitment(int feerate_per_kw, long commitment_tx, long keys, long htlcs);
+                long sign_holder_commitment(long holder_commitment_tx);
+                long sign_holder_commitment_htlc_transactions(long holder_commitment_tx);
+                long sign_justice_transaction(long justice_tx, long input, long amount, byte[] per_commitment_key, long htlc);
+                long sign_counterparty_htlc_transaction(long htlc_tx, long input, long amount, long per_commitment_point, long htlc);
+                long sign_closing_transaction(long closing_tx);
+                long sign_channel_announcement(long msg);
+                void on_accept(long channel_points, short counterparty_selected_contest_delay, short holder_selected_contest_delay);
+       }
+       public static native long LDKChannelKeys_new(LDKChannelKeys impl);
+       public interface LDKWatch {
+                long watch_channel(long funding_txo, long monitor);
+                long update_channel(long funding_txo, long update);
+                long release_pending_monitor_events();
+       }
+       public static native long LDKWatch_new(LDKWatch impl);
+       public interface LDKFilter {
+                void register_tx(byte[] txid, long script_pubkey);
+                void register_output(long outpoint, long script_pubkey);
        }
-       public static native long LDKChainWatchInterface_new(LDKChainWatchInterface impl);
+       public static native long LDKFilter_new(LDKFilter impl);
        public interface LDKBroadcasterInterface {
-                void broadcast_transaction(/* TODO */);
+                void broadcast_transaction(long tx);
        }
        public static native long LDKBroadcasterInterface_new(LDKBroadcasterInterface impl);
-       public interface LDKChainListener {
-                void block_connected(/* TODO */);
-                void block_disconnected(/* TODO */);
-       }
-       public static native long LDKChainListener_new(LDKChainListener impl);
        public interface LDKFeeEstimator {
-                int get_est_sat_per_1000_weight(/* TODO */);
+                int get_est_sat_per_1000_weight(LDKConfirmationTarget confirmation_target);
        }
        public static native long LDKFeeEstimator_new(LDKFeeEstimator impl);
-       public interface LDKChannelKeys {
-                long get_per_commitment_point(/* TODO */);
-                long release_commitment_secret(/* TODO */);
-                long key_derivation_params(/* TODO */);
-                long sign_remote_commitment(/* TODO */);
-                long sign_local_commitment(/* TODO */);
-                long sign_local_commitment_htlc_transactions(/* TODO */);
-                long sign_justice_transaction(/* TODO */);
-                long sign_remote_htlc_transaction(/* TODO */);
-                long sign_closing_transaction(/* TODO */);
-                long sign_channel_announcement(/* TODO */);
-                void on_accept(/* TODO */);
-       }
-       public static native long LDKChannelKeys_new(LDKChannelKeys impl);
        public interface LDKKeysInterface {
-                long get_node_secret(/* TODO */);
-                long get_destination_script(/* TODO */);
-                long get_shutdown_pubkey(/* TODO */);
-                long get_channel_keys(/* TODO */);
-                long get_secure_random_bytes(/* TODO */);
+                long get_node_secret();
+                long get_destination_script();
+                long get_shutdown_pubkey();
+                long get_channel_keys(boolean inbound, long channel_value_satoshis);
+                long get_secure_random_bytes();
        }
        public static native long LDKKeysInterface_new(LDKKeysInterface impl);
-       public interface LDKManyChannelMonitor {
-                long add_monitor(/* TODO */);
-                long update_monitor(/* TODO */);
-                long get_and_clear_pending_monitor_events(/* TODO */);
-       }
-       public static native long LDKManyChannelMonitor_new(LDKManyChannelMonitor impl);
        public interface LDKChannelMessageHandler {
-                void handle_open_channel(/* TODO */);
-                void handle_accept_channel(/* TODO */);
-                void handle_funding_created(/* TODO */);
-                void handle_funding_signed(/* TODO */);
-                void handle_funding_locked(/* TODO */);
-                void handle_shutdown(/* TODO */);
-                void handle_closing_signed(/* TODO */);
-                void handle_update_add_htlc(/* TODO */);
-                void handle_update_fulfill_htlc(/* TODO */);
-                void handle_update_fail_htlc(/* TODO */);
-                void handle_update_fail_malformed_htlc(/* TODO */);
-                void handle_commitment_signed(/* TODO */);
-                void handle_revoke_and_ack(/* TODO */);
-                void handle_update_fee(/* TODO */);
-                void handle_announcement_signatures(/* TODO */);
-                void peer_disconnected(/* TODO */);
-                void peer_connected(/* TODO */);
-                void handle_channel_reestablish(/* TODO */);
-                void handle_error(/* TODO */);
+                void handle_open_channel(long their_node_id, long their_features, long msg);
+                void handle_accept_channel(long their_node_id, long their_features, long msg);
+                void handle_funding_created(long their_node_id, long msg);
+                void handle_funding_signed(long their_node_id, long msg);
+                void handle_funding_locked(long their_node_id, long msg);
+                void handle_shutdown(long their_node_id, long msg);
+                void handle_closing_signed(long their_node_id, long msg);
+                void handle_update_add_htlc(long their_node_id, long msg);
+                void handle_update_fulfill_htlc(long their_node_id, long msg);
+                void handle_update_fail_htlc(long their_node_id, long msg);
+                void handle_update_fail_malformed_htlc(long their_node_id, long msg);
+                void handle_commitment_signed(long their_node_id, long msg);
+                void handle_revoke_and_ack(long their_node_id, long msg);
+                void handle_update_fee(long their_node_id, long msg);
+                void handle_announcement_signatures(long their_node_id, long msg);
+                void peer_disconnected(long their_node_id, boolean no_connection_possible);
+                void peer_connected(long their_node_id, long msg);
+                void handle_channel_reestablish(long their_node_id, long msg);
+                void handle_error(long their_node_id, long msg);
        }
-       public static native long LDKChannelMessageHandler_new(LDKChannelMessageHandler impl);
+       public static native long LDKChannelMessageHandler_new(LDKChannelMessageHandler impl, LDKMessageSendEventsProvider MessageSendEventsProvider);
        public interface LDKRoutingMessageHandler {
-                long handle_node_announcement(/* TODO */);
-                long handle_channel_announcement(/* TODO */);
-                long handle_channel_update(/* TODO */);
-                void handle_htlc_fail_channel_update(/* TODO */);
-                long get_next_channel_announcements(/* TODO */);
-                long get_next_node_announcements(/* TODO */);
-                boolean should_request_full_sync(/* TODO */);
+                long handle_node_announcement(long msg);
+                long handle_channel_announcement(long msg);
+                long handle_channel_update(long msg);
+                void handle_htlc_fail_channel_update(long update);
+                long get_next_channel_announcements(long starting_point, byte batch_amount);
+                long get_next_node_announcements(long starting_point, byte batch_amount);
+                boolean should_request_full_sync(long node_id);
        }
        public static native long LDKRoutingMessageHandler_new(LDKRoutingMessageHandler impl);
        public interface LDKSocketDescriptor {
-                long send_data(/* TODO */);
-                void disconnect_socket(/* TODO */);
-                boolean eq(/* TODO */);
-                long hash(/* TODO */);
+                long send_data(long data, boolean resume_read);
+                void disconnect_socket();
+                boolean eq(long other_arg);
+                long hash();
        }
        public static native long LDKSocketDescriptor_new(LDKSocketDescriptor impl);
        /// extern const void (*C2Tuple_HTLCOutputInCommitmentSignatureZ_free)(LDKC2Tuple_HTLCOutputInCommitmentSignatureZ);
        public static native void C2Tuple_HTLCOutputInCommitmentSignatureZ_free(long arg);
        /// extern const void (*C2Tuple_OutPointScriptZ_free)(LDKC2Tuple_OutPointScriptZ);
        public static native void C2Tuple_OutPointScriptZ_free(long arg);
-       /// extern const void (*C2Tuple_Scriptu64Z_free)(LDKC2Tuple_Scriptu64Z);
-       public static native void C2Tuple_Scriptu64Z_free(long arg);
        /// extern const void (*C2Tuple_SignatureCVec_SignatureZZ_free)(LDKC2Tuple_SignatureCVec_SignatureZZ);
        public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long arg);
-       /// extern const void (*C2Tuple_Txidu32Z_free)(LDKC2Tuple_Txidu32Z);
-       public static native void C2Tuple_Txidu32Z_free(long arg);
+       /// extern const void (*C2Tuple_TxidCVec_TxOutZZ_free)(LDKC2Tuple_TxidCVec_TxOutZZ);
+       public static native void C2Tuple_TxidCVec_TxOutZZ_free(long arg);
        /// extern const void (*C2Tuple_u64u64Z_free)(LDKC2Tuple_u64u64Z);
        public static native void C2Tuple_u64u64Z_free(long arg);
+       /// extern const void (*C2Tuple_usizeTransactionZ_free)(LDKC2Tuple_usizeTransactionZ);
+       public static native void C2Tuple_usizeTransactionZ_free(long arg);
        /// extern const void (*C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free)(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ);
        public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long arg);
-       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_err)(LDKChainError);
-       public static native long CResult_C2Tuple_Scriptu64ZChainErrorZ_err(long arg);
-       /// extern const void (*CResult_C2Tuple_Scriptu64ZChainErrorZ_free)(LDKCResult_C2Tuple_Scriptu64ZChainErrorZ);
-       public static native void CResult_C2Tuple_Scriptu64ZChainErrorZ_free(long arg);
-       /// extern const LDKCResult_C2Tuple_Scriptu64ZChainErrorZ (*CResult_C2Tuple_Scriptu64ZChainErrorZ_ok)(LDKC2Tuple_Scriptu64Z);
-       public static native long CResult_C2Tuple_Scriptu64ZChainErrorZ_ok(long arg);
        /// extern const void (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free)(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ);
        public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long arg);
        /// extern const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok)(LDKC2Tuple_SignatureCVec_SignatureZZ);
@@ -145,7 +175,7 @@ public class bindings {
        /// extern const void (*CResult_NoneAPIErrorZ_free)(LDKCResult_NoneAPIErrorZ);
        public static native void CResult_NoneAPIErrorZ_free(long arg);
        /// extern const LDKCResult_NoneChannelMonitorUpdateErrZ (*CResult_NoneChannelMonitorUpdateErrZ_err)(LDKChannelMonitorUpdateErr);
-       public static native long CResult_NoneChannelMonitorUpdateErrZ_err(long arg);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_err(LDKChannelMonitorUpdateErr arg);
        /// extern const void (*CResult_NoneChannelMonitorUpdateErrZ_free)(LDKCResult_NoneChannelMonitorUpdateErrZ);
        public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long arg);
        /// extern const LDKCResult_NoneMonitorUpdateErrorZ (*CResult_NoneMonitorUpdateErrorZ_err)(LDKMonitorUpdateError);
@@ -160,22 +190,40 @@ public class bindings {
        public static native long CResult_NonePeerHandleErrorZ_err(long arg);
        /// extern const void (*CResult_NonePeerHandleErrorZ_free)(LDKCResult_NonePeerHandleErrorZ);
        public static native void CResult_NonePeerHandleErrorZ_free(long arg);
+       /// extern const LDKCResult_PublicKeySecpErrorZ (*CResult_PublicKeySecpErrorZ_err)(LDKSecp256k1Error);
+       public static native long CResult_PublicKeySecpErrorZ_err(LDKSecp256k1Error arg);
+       /// extern const void (*CResult_PublicKeySecpErrorZ_free)(LDKCResult_PublicKeySecpErrorZ);
+       public static native void CResult_PublicKeySecpErrorZ_free(long arg);
+       /// extern const LDKCResult_PublicKeySecpErrorZ (*CResult_PublicKeySecpErrorZ_ok)(LDKPublicKey);
+       public static native long CResult_PublicKeySecpErrorZ_ok(long arg);
        /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_err)(LDKLightningError);
        public static native long CResult_RouteLightningErrorZ_err(long arg);
        /// extern const void (*CResult_RouteLightningErrorZ_free)(LDKCResult_RouteLightningErrorZ);
        public static native void CResult_RouteLightningErrorZ_free(long arg);
        /// extern const LDKCResult_RouteLightningErrorZ (*CResult_RouteLightningErrorZ_ok)(LDKRoute);
        public static native long CResult_RouteLightningErrorZ_ok(long arg);
+       /// extern const LDKCResult_SecretKeySecpErrorZ (*CResult_SecretKeySecpErrorZ_err)(LDKSecp256k1Error);
+       public static native long CResult_SecretKeySecpErrorZ_err(LDKSecp256k1Error arg);
+       /// extern const void (*CResult_SecretKeySecpErrorZ_free)(LDKCResult_SecretKeySecpErrorZ);
+       public static native void CResult_SecretKeySecpErrorZ_free(long arg);
+       /// extern const LDKCResult_SecretKeySecpErrorZ (*CResult_SecretKeySecpErrorZ_ok)(LDKSecretKey);
+       public static native long CResult_SecretKeySecpErrorZ_ok(long arg);
        /// extern const void (*CResult_SignatureNoneZ_free)(LDKCResult_SignatureNoneZ);
        public static native void CResult_SignatureNoneZ_free(long arg);
        /// extern const LDKCResult_SignatureNoneZ (*CResult_SignatureNoneZ_ok)(LDKSignature);
        public static native long CResult_SignatureNoneZ_ok(long arg);
        /// extern const LDKCResult_TxCreationKeysSecpErrorZ (*CResult_TxCreationKeysSecpErrorZ_err)(LDKSecp256k1Error);
-       public static native long CResult_TxCreationKeysSecpErrorZ_err(long arg);
+       public static native long CResult_TxCreationKeysSecpErrorZ_err(LDKSecp256k1Error arg);
        /// extern const void (*CResult_TxCreationKeysSecpErrorZ_free)(LDKCResult_TxCreationKeysSecpErrorZ);
        public static native void CResult_TxCreationKeysSecpErrorZ_free(long arg);
        /// extern const LDKCResult_TxCreationKeysSecpErrorZ (*CResult_TxCreationKeysSecpErrorZ_ok)(LDKTxCreationKeys);
        public static native long CResult_TxCreationKeysSecpErrorZ_ok(long arg);
+       /// extern const LDKCResult_TxOutAccessErrorZ (*CResult_TxOutAccessErrorZ_err)(LDKAccessError);
+       public static native long CResult_TxOutAccessErrorZ_err(LDKAccessError arg);
+       /// extern const void (*CResult_TxOutAccessErrorZ_free)(LDKCResult_TxOutAccessErrorZ);
+       public static native void CResult_TxOutAccessErrorZ_free(long arg);
+       /// extern const LDKCResult_TxOutAccessErrorZ (*CResult_TxOutAccessErrorZ_ok)(LDKTxOut);
+       public static native long CResult_TxOutAccessErrorZ_ok(long arg);
        /// extern const LDKCResult_boolLightningErrorZ (*CResult_boolLightningErrorZ_err)(LDKLightningError);
        public static native long CResult_boolLightningErrorZ_err(long arg);
        /// extern const void (*CResult_boolLightningErrorZ_free)(LDKCResult_boolLightningErrorZ);
@@ -190,6 +238,10 @@ public class bindings {
        public static native long CResult_boolPeerHandleErrorZ_ok(boolean arg);
        /// extern const void (*CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free)(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ);
        public static native void CVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ_free(long arg);
+       /// extern const void (*CVec_C2Tuple_TxidCVec_TxOutZZZ_free)(LDKCVec_C2Tuple_TxidCVec_TxOutZZZ);
+       public static native void CVec_C2Tuple_TxidCVec_TxOutZZZ_free(long arg);
+       /// extern const void (*CVec_C2Tuple_usizeTransactionZZ_free)(LDKCVec_C2Tuple_usizeTransactionZZ);
+       public static native void CVec_C2Tuple_usizeTransactionZZ_free(long arg);
        /// extern const void (*CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free)(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ);
        public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long arg);
        /// extern const void (*CVec_CVec_RouteHopZZ_free)(LDKCVec_CVec_RouteHopZZ);
@@ -222,6 +274,8 @@ public class bindings {
        public static native void CVec_SpendableOutputDescriptorZ_free(long arg);
        /// extern const void (*CVec_TransactionZ_free)(LDKCVec_TransactionZ);
        public static native void CVec_TransactionZ_free(long arg);
+       /// extern const void (*CVec_TxOutZ_free)(LDKCVec_TxOutZ);
+       public static native void CVec_TxOutZ_free(long arg);
        /// extern const void (*CVec_UpdateAddHTLCZ_free)(LDKCVec_UpdateAddHTLCZ);
        public static native void CVec_UpdateAddHTLCZ_free(long arg);
        /// extern const void (*CVec_UpdateFailHTLCZ_free)(LDKCVec_UpdateFailHTLCZ);
@@ -234,14 +288,20 @@ public class bindings {
        public static native void CVec_u64Z_free(long arg);
        /// extern const void (*CVec_u8Z_free)(LDKCVec_u8Z);
        public static native void CVec_u8Z_free(long arg);
-       /// extern const void (*CVec_usizeZ_free)(LDKCVec_usizeZ);
-       public static native void CVec_usizeZ_free(long arg);
+       /// void Transaction_free(LDKTransaction _res);
+       public static native void Transaction_free(long _res);
        /// void TxOut_free(LDKTxOut _res);
        public static native void TxOut_free(long _res);
-       /// LDKC2Tuple_Txidu32Z C2Tuple_Txidu32Z_new(LDKThirtyTwoBytes a, uint32_t b);
-       public static native long C2Tuple_Txidu32Z_new(long a, int b);
-       /// LDKC2Tuple_Scriptu64Z C2Tuple_Scriptu64Z_new(LDKCVec_u8Z a, uint64_t b);
-       public static native long C2Tuple_Scriptu64Z_new(long a, long b);
+       /// LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, LDKTransaction b);
+       public static native long C2Tuple_usizeTransactionZ_new(long a, long b);
+       /// LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
+       /// LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
+       public static native long CResult_NoneMonitorUpdateErrorZ_ok();
+       /// LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(LDKOutPoint a, LDKCVec_u8Z b);
+       public static native long C2Tuple_OutPointScriptZ_new(long a, long b);
+       /// LDKC2Tuple_TxidCVec_TxOutZZ C2Tuple_TxidCVec_TxOutZZ_new(LDKThirtyTwoBytes a, LDKCVec_TxOutZ b);
+       public static native long C2Tuple_TxidCVec_TxOutZZ_new(long a, long b);
        /// LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b);
        public static native long C2Tuple_u64u64Z_new(long a, long b);
        /// LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(LDKSignature a, LDKCVec_SignatureZ b);
@@ -256,12 +316,6 @@ public class bindings {
        public static native long CResult_NoneAPIErrorZ_ok();
        /// LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
        public static native long CResult_NonePaymentSendFailureZ_ok();
-       /// LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
-       public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
-       /// LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
-       public static native long CResult_NoneMonitorUpdateErrorZ_ok();
-       /// LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(LDKOutPoint a, LDKCVec_u8Z b);
-       public static native long C2Tuple_OutPointScriptZ_new(long a, long b);
        /// LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(LDKChannelAnnouncement a, LDKChannelUpdate b, LDKChannelUpdate c);
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c);
        /// LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
@@ -279,7 +333,7 @@ public class bindings {
        /// void APIError_free(LDKAPIError this_ptr);
        public static native void APIError_free(long this_ptr);
        /// MUST_USE_RES LDKLevel Level_max(void);
-       public static native long Level_max();
+       public static native LDKLevel Level_max();
        /// void Logger_free(LDKLogger this_ptr);
        public static native void Logger_free(long this_ptr);
        /// void ChannelHandshakeConfig_free(LDKChannelHandshakeConfig this_ptr);
@@ -289,15 +343,15 @@ public class bindings {
        /// void ChannelHandshakeConfig_set_minimum_depth(LDKChannelHandshakeConfig *this_ptr, uint32_t val);
        public static native void ChannelHandshakeConfig_set_minimum_depth(long this_ptr, int val);
        /// uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const LDKChannelHandshakeConfig *this_ptr);
-       public static native long ChannelHandshakeConfig_get_our_to_self_delay(long this_ptr);
+       public static native short ChannelHandshakeConfig_get_our_to_self_delay(long this_ptr);
        /// void ChannelHandshakeConfig_set_our_to_self_delay(LDKChannelHandshakeConfig *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeConfig_set_our_to_self_delay(long this_ptr, long val);
+       public static native void ChannelHandshakeConfig_set_our_to_self_delay(long this_ptr, short val);
        /// uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const LDKChannelHandshakeConfig *this_ptr);
        public static native long ChannelHandshakeConfig_get_our_htlc_minimum_msat(long this_ptr);
        /// void ChannelHandshakeConfig_set_our_htlc_minimum_msat(LDKChannelHandshakeConfig *this_ptr, uint64_t val);
        public static native void ChannelHandshakeConfig_set_our_htlc_minimum_msat(long this_ptr, long val);
        /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
-       public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, long our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
+       public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
        /// MUST_USE_RES LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
        public static native long ChannelHandshakeConfig_default();
        /// void ChannelHandshakeLimits_free(LDKChannelHandshakeLimits this_ptr);
@@ -319,9 +373,9 @@ public class bindings {
        /// void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
        public static native void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(long this_ptr, long val);
        /// uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimits_get_min_max_accepted_htlcs(long this_ptr);
+       public static native short ChannelHandshakeLimits_get_min_max_accepted_htlcs(long this_ptr);
        /// void ChannelHandshakeLimits_set_min_max_accepted_htlcs(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeLimits_set_min_max_accepted_htlcs(long this_ptr, long val);
+       public static native void ChannelHandshakeLimits_set_min_max_accepted_htlcs(long this_ptr, short val);
        /// uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const LDKChannelHandshakeLimits *this_ptr);
        public static native long ChannelHandshakeLimits_get_min_dust_limit_satoshis(long this_ptr);
        /// void ChannelHandshakeLimits_set_min_dust_limit_satoshis(LDKChannelHandshakeLimits *this_ptr, uint64_t val);
@@ -339,11 +393,11 @@ public class bindings {
        /// void ChannelHandshakeLimits_set_force_announced_channel_preference(LDKChannelHandshakeLimits *this_ptr, bool val);
        public static native void ChannelHandshakeLimits_set_force_announced_channel_preference(long this_ptr, boolean val);
        /// uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const LDKChannelHandshakeLimits *this_ptr);
-       public static native long ChannelHandshakeLimits_get_their_to_self_delay(long this_ptr);
+       public static native short ChannelHandshakeLimits_get_their_to_self_delay(long this_ptr);
        /// void ChannelHandshakeLimits_set_their_to_self_delay(LDKChannelHandshakeLimits *this_ptr, uint16_t val);
-       public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, long val);
+       public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, short val);
        /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint64_t min_dust_limit_satoshis_arg, uint64_t max_dust_limit_satoshis_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
-       public static native long ChannelHandshakeLimits_new(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, long min_max_accepted_htlcs_arg, long min_dust_limit_satoshis_arg, long max_dust_limit_satoshis_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, long their_to_self_delay_arg);
+       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, long min_dust_limit_satoshis_arg, long max_dust_limit_satoshis_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, short their_to_self_delay_arg);
        /// MUST_USE_RES LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
        public static native long ChannelHandshakeLimits_default();
        /// void ChannelConfig_free(LDKChannelConfig this_ptr);
@@ -386,46 +440,66 @@ public class bindings {
        public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg);
        /// MUST_USE_RES LDKUserConfig UserConfig_default(void);
        public static native long UserConfig_default();
-       /// void ChainWatchInterface_free(LDKChainWatchInterface this_ptr);
-       public static native void ChainWatchInterface_free(long this_ptr);
+       /// void Access_free(LDKAccess this_ptr);
+       public static native void Access_free(long this_ptr);
+       /// void Watch_free(LDKWatch this_ptr);
+       public static native void Watch_free(long this_ptr);
+       /// void Filter_free(LDKFilter this_ptr);
+       public static native void Filter_free(long this_ptr);
        /// void BroadcasterInterface_free(LDKBroadcasterInterface this_ptr);
        public static native void BroadcasterInterface_free(long this_ptr);
-       /// void ChainListener_free(LDKChainListener this_ptr);
-       public static native void ChainListener_free(long this_ptr);
        /// void FeeEstimator_free(LDKFeeEstimator this_ptr);
        public static native void FeeEstimator_free(long this_ptr);
-       /// void ChainWatchedUtil_free(LDKChainWatchedUtil this_ptr);
-       public static native void ChainWatchedUtil_free(long this_ptr);
-       /// MUST_USE_RES LDKChainWatchedUtil ChainWatchedUtil_new(void);
-       public static native long ChainWatchedUtil_new();
-       /// MUST_USE_RES bool ChainWatchedUtil_register_tx(LDKChainWatchedUtil *this_arg, const uint8_t (*txid)[32], LDKu8slice script_pub_key);
-       public static native boolean ChainWatchedUtil_register_tx(long this_arg, byte[] txid, long script_pub_key);
-       /// MUST_USE_RES bool ChainWatchedUtil_register_outpoint(LDKChainWatchedUtil *this_arg, LDKC2Tuple_Txidu32Z outpoint, LDKu8slice _script_pub_key);
-       public static native boolean ChainWatchedUtil_register_outpoint(long this_arg, long outpoint, long _script_pub_key);
-       /// MUST_USE_RES bool ChainWatchedUtil_watch_all(LDKChainWatchedUtil *this_arg);
-       public static native boolean ChainWatchedUtil_watch_all(long this_arg);
-       /// MUST_USE_RES bool ChainWatchedUtil_does_match_tx(const LDKChainWatchedUtil *this_arg, LDKTransaction tx);
-       public static native boolean ChainWatchedUtil_does_match_tx(long this_arg, long tx);
-       /// void BlockNotifier_free(LDKBlockNotifier this_ptr);
-       public static native void BlockNotifier_free(long this_ptr);
-       /// MUST_USE_RES LDKBlockNotifier BlockNotifier_new(LDKChainWatchInterface chain_monitor);
-       public static native long BlockNotifier_new(long chain_monitor);
-       /// void BlockNotifier_register_listener(const LDKBlockNotifier *this_arg, LDKChainListener listener);
-       public static native void BlockNotifier_register_listener(long this_arg, long listener);
-       /// void BlockNotifier_block_connected(const LDKBlockNotifier *this_arg, LDKu8slice block, uint32_t height);
-       public static native void BlockNotifier_block_connected(long this_arg, long block, int height);
-       /// MUST_USE_RES bool BlockNotifier_block_connected_checked(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t height, LDKCVec_TransactionZ txn_matched, LDKusizeslice indexes_of_txn_matched);
-       public static native boolean BlockNotifier_block_connected_checked(long this_arg, byte[] header, int height, long txn_matched, long indexes_of_txn_matched);
-       /// void BlockNotifier_block_disconnected(const LDKBlockNotifier *this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
-       public static native void BlockNotifier_block_disconnected(long this_arg, byte[] header, int disconnected_height);
-       /// void ChainWatchInterfaceUtil_free(LDKChainWatchInterfaceUtil this_ptr);
-       public static native void ChainWatchInterfaceUtil_free(long this_ptr);
-       /// LDKChainWatchInterface ChainWatchInterfaceUtil_as_ChainWatchInterface(const LDKChainWatchInterfaceUtil *this_arg);
-       public static native long ChainWatchInterfaceUtil_as_ChainWatchInterface(long this_arg);
-       /// MUST_USE_RES LDKChainWatchInterfaceUtil ChainWatchInterfaceUtil_new(LDKNetwork network);
-       public static native long ChainWatchInterfaceUtil_new(long network);
-       /// MUST_USE_RES bool ChainWatchInterfaceUtil_does_match_tx(const LDKChainWatchInterfaceUtil *this_arg, LDKTransaction tx);
-       public static native boolean ChainWatchInterfaceUtil_does_match_tx(long this_arg, long tx);
+       /// void ChainMonitor_free(LDKChainMonitor this_ptr);
+       public static native void ChainMonitor_free(long this_ptr);
+       /// void ChainMonitor_block_connected(const LDKChainMonitor *this_arg, const uint8_t (*header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
+       public static native void ChainMonitor_block_connected(long this_arg, byte[] header, long txdata, int height);
+       /// void ChainMonitor_block_disconnected(const LDKChainMonitor *this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
+       public static native void ChainMonitor_block_disconnected(long this_arg, byte[] header, int disconnected_height);
+       /// MUST_USE_RES LDKChainMonitor ChainMonitor_new(LDKFilter *chain_source, LDKBroadcasterInterface broadcaster, LDKLogger logger, LDKFeeEstimator feeest);
+       public static native long ChainMonitor_new(long chain_source, long broadcaster, long logger, long feeest);
+       /// LDKWatch ChainMonitor_as_Watch(const LDKChainMonitor *this_arg);
+       public static native long ChainMonitor_as_Watch(long this_arg);
+       /// LDKEventsProvider ChainMonitor_as_EventsProvider(const LDKChainMonitor *this_arg);
+       public static native long ChainMonitor_as_EventsProvider(long this_arg);
+       /// void ChannelMonitorUpdate_free(LDKChannelMonitorUpdate this_ptr);
+       public static native void ChannelMonitorUpdate_free(long this_ptr);
+       /// uint64_t ChannelMonitorUpdate_get_update_id(const LDKChannelMonitorUpdate *this_ptr);
+       public static native long ChannelMonitorUpdate_get_update_id(long this_ptr);
+       /// void ChannelMonitorUpdate_set_update_id(LDKChannelMonitorUpdate *this_ptr, uint64_t val);
+       public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val);
+       /// LDKCVec_u8Z ChannelMonitorUpdate_write(const LDKChannelMonitorUpdate *obj);
+       public static native long ChannelMonitorUpdate_write(long obj);
+       /// LDKChannelMonitorUpdate ChannelMonitorUpdate_read(LDKu8slice ser);
+       public static native long ChannelMonitorUpdate_read(long ser);
+       /// void MonitorUpdateError_free(LDKMonitorUpdateError this_ptr);
+       public static native void MonitorUpdateError_free(long this_ptr);
+       /// void MonitorEvent_free(LDKMonitorEvent this_ptr);
+       public static native void MonitorEvent_free(long this_ptr);
+       /// void HTLCUpdate_free(LDKHTLCUpdate this_ptr);
+       public static native void HTLCUpdate_free(long this_ptr);
+       /// LDKCVec_u8Z HTLCUpdate_write(const LDKHTLCUpdate *obj);
+       public static native long HTLCUpdate_write(long obj);
+       /// LDKHTLCUpdate HTLCUpdate_read(LDKu8slice ser);
+       public static native long HTLCUpdate_read(long ser);
+       /// void ChannelMonitor_free(LDKChannelMonitor this_ptr);
+       public static native void ChannelMonitor_free(long this_ptr);
+       /// MUST_USE_RES LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(LDKChannelMonitor *this_arg, LDKChannelMonitorUpdate updates, const LDKBroadcasterInterface *broadcaster, const LDKLogger *logger);
+       public static native long ChannelMonitor_update_monitor(long this_arg, long updates, long broadcaster, long logger);
+       /// MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_latest_update_id(long this_arg);
+       /// MUST_USE_RES LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_funding_txo(long this_arg);
+       /// MUST_USE_RES LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_and_clear_pending_monitor_events(long this_arg);
+       /// MUST_USE_RES LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(LDKChannelMonitor *this_arg);
+       public static native long ChannelMonitor_get_and_clear_pending_events(long this_arg);
+       /// MUST_USE_RES LDKCVec_TransactionZ ChannelMonitor_get_latest_holder_commitment_txn(LDKChannelMonitor *this_arg, const LDKLogger *logger);
+       public static native long ChannelMonitor_get_latest_holder_commitment_txn(long this_arg, long logger);
+       /// MUST_USE_RES LDKCVec_C2Tuple_TxidCVec_TxOutZZZ ChannelMonitor_block_connected(LDKChannelMonitor *this_arg, const uint8_t (*header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, LDKBroadcasterInterface broadcaster, LDKFeeEstimator fee_estimator, LDKLogger logger);
+       public static native long ChannelMonitor_block_connected(long this_arg, byte[] header, long txdata, int height, long broadcaster, long fee_estimator, long logger);
+       /// void ChannelMonitor_block_disconnected(LDKChannelMonitor *this_arg, const uint8_t (*header)[80], uint32_t height, LDKBroadcasterInterface broadcaster, LDKFeeEstimator fee_estimator, LDKLogger logger);
+       public static native void ChannelMonitor_block_disconnected(long this_arg, byte[] header, int height, long broadcaster, long fee_estimator, long logger);
        /// void OutPoint_free(LDKOutPoint this_ptr);
        public static native void OutPoint_free(long this_ptr);
        /// const uint8_t (*OutPoint_get_txid(const LDKOutPoint *this_ptr))[32];
@@ -433,11 +507,11 @@ public class bindings {
        /// void OutPoint_set_txid(LDKOutPoint *this_ptr, LDKThirtyTwoBytes val);
        public static native void OutPoint_set_txid(long this_ptr, long val);
        /// uint16_t OutPoint_get_index(const LDKOutPoint *this_ptr);
-       public static native long OutPoint_get_index(long this_ptr);
+       public static native short OutPoint_get_index(long this_ptr);
        /// void OutPoint_set_index(LDKOutPoint *this_ptr, uint16_t val);
-       public static native void OutPoint_set_index(long this_ptr, long val);
+       public static native void OutPoint_set_index(long this_ptr, short val);
        /// MUST_USE_RES LDKOutPoint OutPoint_new(LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
-       public static native long OutPoint_new(long txid_arg, long index_arg);
+       public static native long OutPoint_new(long txid_arg, short index_arg);
        /// MUST_USE_RES LDKThirtyTwoBytes OutPoint_to_channel_id(const LDKOutPoint *this_arg);
        public static native long OutPoint_to_channel_id(long this_arg);
        /// LDKCVec_u8Z OutPoint_write(const LDKOutPoint *obj);
@@ -478,12 +552,12 @@ public class bindings {
        public static native void InMemoryChannelKeys_set_commitment_seed(long this_ptr, long val);
        /// MUST_USE_RES LDKInMemoryChannelKeys InMemoryChannelKeys_new(LDKSecretKey funding_key, LDKSecretKey revocation_base_key, LDKSecretKey payment_key, LDKSecretKey delayed_payment_base_key, LDKSecretKey htlc_base_key, LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, LDKC2Tuple_u64u64Z key_derivation_params);
        public static native long InMemoryChannelKeys_new(long funding_key, long revocation_base_key, long payment_key, long delayed_payment_base_key, long htlc_base_key, long commitment_seed, long channel_value_satoshis, long key_derivation_params);
-       /// MUST_USE_RES LDKChannelPublicKeys InMemoryChannelKeys_remote_pubkeys(const LDKInMemoryChannelKeys *this_arg);
-       public static native long InMemoryChannelKeys_remote_pubkeys(long this_arg);
-       /// MUST_USE_RES uint16_t InMemoryChannelKeys_remote_to_self_delay(const LDKInMemoryChannelKeys *this_arg);
-       public static native long InMemoryChannelKeys_remote_to_self_delay(long this_arg);
-       /// MUST_USE_RES uint16_t InMemoryChannelKeys_local_to_self_delay(const LDKInMemoryChannelKeys *this_arg);
-       public static native long InMemoryChannelKeys_local_to_self_delay(long this_arg);
+       /// MUST_USE_RES LDKChannelPublicKeys InMemoryChannelKeys_counterparty_pubkeys(const LDKInMemoryChannelKeys *this_arg);
+       public static native long InMemoryChannelKeys_counterparty_pubkeys(long this_arg);
+       /// MUST_USE_RES uint16_t InMemoryChannelKeys_counterparty_selected_contest_delay(const LDKInMemoryChannelKeys *this_arg);
+       public static native short InMemoryChannelKeys_counterparty_selected_contest_delay(long this_arg);
+       /// MUST_USE_RES uint16_t InMemoryChannelKeys_holder_selected_contest_delay(const LDKInMemoryChannelKeys *this_arg);
+       public static native short InMemoryChannelKeys_holder_selected_contest_delay(long this_arg);
        /// LDKChannelKeys InMemoryChannelKeys_as_ChannelKeys(const LDKInMemoryChannelKeys *this_arg);
        public static native long InMemoryChannelKeys_as_ChannelKeys(long this_arg);
        /// LDKCVec_u8Z InMemoryChannelKeys_write(const LDKInMemoryChannelKeys *obj);
@@ -493,7 +567,7 @@ public class bindings {
        /// void KeysManager_free(LDKKeysManager this_ptr);
        public static native void KeysManager_free(long this_ptr);
        /// MUST_USE_RES LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], LDKNetwork network, uint64_t starting_time_secs, uint32_t starting_time_nanos);
-       public static native long KeysManager_new(byte[] seed, long network, long starting_time_secs, int starting_time_nanos);
+       public static native long KeysManager_new(byte[] seed, LDKNetwork network, long starting_time_secs, int starting_time_nanos);
        /// MUST_USE_RES LDKInMemoryChannelKeys KeysManager_derive_channel_keys(const LDKKeysManager *this_arg, uint64_t channel_value_satoshis, uint64_t params_1, uint64_t params_2);
        public static native long KeysManager_derive_channel_keys(long this_arg, long channel_value_satoshis, long params_1, long params_2);
        /// LDKKeysInterface KeysManager_as_KeysInterface(const LDKKeysManager *this_arg);
@@ -536,8 +610,8 @@ public class bindings {
        public static native void ChannelDetails_set_is_live(long this_ptr, boolean val);
        /// void PaymentSendFailure_free(LDKPaymentSendFailure this_ptr);
        public static native void PaymentSendFailure_free(long this_ptr);
-       /// MUST_USE_RES LDKChannelManager ChannelManager_new(LDKNetwork network, LDKFeeEstimator fee_est, LDKManyChannelMonitor monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKKeysInterface keys_manager, LDKUserConfig config, uintptr_t current_blockchain_height);
-       public static native long ChannelManager_new(long network, long fee_est, long monitor, long tx_broadcaster, long logger, long keys_manager, long config, long current_blockchain_height);
+       /// MUST_USE_RES LDKChannelManager ChannelManager_new(LDKNetwork network, LDKFeeEstimator fee_est, LDKWatch chain_monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKKeysInterface keys_manager, LDKUserConfig config, uintptr_t current_blockchain_height);
+       public static native long ChannelManager_new(LDKNetwork network, long fee_est, long chain_monitor, long tx_broadcaster, long logger, long keys_manager, long config, long current_blockchain_height);
        /// MUST_USE_RES LDKCResult_NoneAPIErrorZ ChannelManager_create_channel(const LDKChannelManager *this_arg, LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_id, LDKUserConfig override_config);
        public static native long ChannelManager_create_channel(long this_arg, long their_network_key, long channel_value_satoshis, long push_msat, long user_id, long override_config);
        /// MUST_USE_RES LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const LDKChannelManager *this_arg);
@@ -572,8 +646,10 @@ public class bindings {
        public static native long ChannelManager_as_MessageSendEventsProvider(long this_arg);
        /// LDKEventsProvider ChannelManager_as_EventsProvider(const LDKChannelManager *this_arg);
        public static native long ChannelManager_as_EventsProvider(long this_arg);
-       /// LDKChainListener ChannelManager_as_ChainListener(const LDKChannelManager *this_arg);
-       public static native long ChannelManager_as_ChainListener(long this_arg);
+       /// void ChannelManager_block_connected(const LDKChannelManager *this_arg, const uint8_t (*header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
+       public static native void ChannelManager_block_connected(long this_arg, byte[] header, long txdata, int height);
+       /// void ChannelManager_block_disconnected(const LDKChannelManager *this_arg, const uint8_t (*header)[80]);
+       public static native void ChannelManager_block_disconnected(long this_arg, byte[] header);
        /// LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const LDKChannelManager *this_arg);
        public static native long ChannelManager_as_ChannelMessageHandler(long this_arg);
        /// void ChannelManagerReadArgs_free(LDKChannelManagerReadArgs this_ptr);
@@ -586,10 +662,10 @@ public class bindings {
        public static native long ChannelManagerReadArgs_get_fee_estimator(long this_ptr);
        /// void ChannelManagerReadArgs_set_fee_estimator(LDKChannelManagerReadArgs *this_ptr, LDKFeeEstimator val);
        public static native void ChannelManagerReadArgs_set_fee_estimator(long this_ptr, long val);
-       /// const LDKManyChannelMonitor *ChannelManagerReadArgs_get_monitor(const LDKChannelManagerReadArgs *this_ptr);
-       public static native long ChannelManagerReadArgs_get_monitor(long this_ptr);
-       /// void ChannelManagerReadArgs_set_monitor(LDKChannelManagerReadArgs *this_ptr, LDKManyChannelMonitor val);
-       public static native void ChannelManagerReadArgs_set_monitor(long this_ptr, long val);
+       /// const LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const LDKChannelManagerReadArgs *this_ptr);
+       public static native long ChannelManagerReadArgs_get_chain_monitor(long this_ptr);
+       /// void ChannelManagerReadArgs_set_chain_monitor(LDKChannelManagerReadArgs *this_ptr, LDKWatch val);
+       public static native void ChannelManagerReadArgs_set_chain_monitor(long this_ptr, long val);
        /// const LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const LDKChannelManagerReadArgs *this_ptr);
        public static native long ChannelManagerReadArgs_get_tx_broadcaster(long this_ptr);
        /// void ChannelManagerReadArgs_set_tx_broadcaster(LDKChannelManagerReadArgs *this_ptr, LDKBroadcasterInterface val);
@@ -602,44 +678,8 @@ public class bindings {
        public static native long ChannelManagerReadArgs_get_default_config(long this_ptr);
        /// void ChannelManagerReadArgs_set_default_config(LDKChannelManagerReadArgs *this_ptr, LDKUserConfig val);
        public static native void ChannelManagerReadArgs_set_default_config(long this_ptr, long val);
-       /// MUST_USE_RES LDKChannelManagerReadArgs ChannelManagerReadArgs_new(LDKKeysInterface keys_manager, LDKFeeEstimator fee_estimator, LDKManyChannelMonitor monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKUserConfig default_config, LDKCVec_ChannelMonitorZ channel_monitors);
-       public static native long ChannelManagerReadArgs_new(long keys_manager, long fee_estimator, long monitor, long tx_broadcaster, long logger, long default_config, long channel_monitors);
-       /// void ChannelMonitorUpdate_free(LDKChannelMonitorUpdate this_ptr);
-       public static native void ChannelMonitorUpdate_free(long this_ptr);
-       /// uint64_t ChannelMonitorUpdate_get_update_id(const LDKChannelMonitorUpdate *this_ptr);
-       public static native long ChannelMonitorUpdate_get_update_id(long this_ptr);
-       /// void ChannelMonitorUpdate_set_update_id(LDKChannelMonitorUpdate *this_ptr, uint64_t val);
-       public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val);
-       /// LDKCVec_u8Z ChannelMonitorUpdate_write(const LDKChannelMonitorUpdate *obj);
-       public static native long ChannelMonitorUpdate_write(long obj);
-       /// LDKChannelMonitorUpdate ChannelMonitorUpdate_read(LDKu8slice ser);
-       public static native long ChannelMonitorUpdate_read(long ser);
-       /// void MonitorUpdateError_free(LDKMonitorUpdateError this_ptr);
-       public static native void MonitorUpdateError_free(long this_ptr);
-       /// void MonitorEvent_free(LDKMonitorEvent this_ptr);
-       public static native void MonitorEvent_free(long this_ptr);
-       /// void HTLCUpdate_free(LDKHTLCUpdate this_ptr);
-       public static native void HTLCUpdate_free(long this_ptr);
-       /// LDKCVec_u8Z HTLCUpdate_write(const LDKHTLCUpdate *obj);
-       public static native long HTLCUpdate_write(long obj);
-       /// LDKHTLCUpdate HTLCUpdate_read(LDKu8slice ser);
-       public static native long HTLCUpdate_read(long ser);
-       /// void ChannelMonitor_free(LDKChannelMonitor this_ptr);
-       public static native void ChannelMonitor_free(long this_ptr);
-       /// void ManyChannelMonitor_free(LDKManyChannelMonitor this_ptr);
-       public static native void ManyChannelMonitor_free(long this_ptr);
-       /// MUST_USE_RES LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(LDKChannelMonitor *this_arg, LDKChannelMonitorUpdate updates, const LDKBroadcasterInterface *broadcaster, const LDKLogger *logger);
-       public static native long ChannelMonitor_update_monitor(long this_arg, long updates, long broadcaster, long logger);
-       /// MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitor_get_latest_update_id(long this_arg);
-       /// MUST_USE_RES LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitor_get_funding_txo(long this_arg);
-       /// MUST_USE_RES LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitor_get_and_clear_pending_monitor_events(long this_arg);
-       /// MUST_USE_RES LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(LDKChannelMonitor *this_arg);
-       public static native long ChannelMonitor_get_and_clear_pending_events(long this_arg);
-       /// MUST_USE_RES LDKCVec_TransactionZ ChannelMonitor_get_latest_local_commitment_txn(LDKChannelMonitor *this_arg, const LDKLogger *logger);
-       public static native long ChannelMonitor_get_latest_local_commitment_txn(long this_arg, long logger);
+       /// MUST_USE_RES LDKChannelManagerReadArgs ChannelManagerReadArgs_new(LDKKeysInterface keys_manager, LDKFeeEstimator fee_estimator, LDKWatch chain_monitor, LDKBroadcasterInterface tx_broadcaster, LDKLogger logger, LDKUserConfig default_config, LDKCVec_ChannelMonitorZ channel_monitors);
+       public static native long ChannelManagerReadArgs_new(long keys_manager, long fee_estimator, long chain_monitor, long tx_broadcaster, long logger, long default_config, long channel_monitors);
        /// void DecodeError_free(LDKDecodeError this_ptr);
        public static native void DecodeError_free(long this_ptr);
        /// void Init_free(LDKInit this_ptr);
@@ -659,23 +699,23 @@ public class bindings {
        /// void Ping_free(LDKPing this_ptr);
        public static native void Ping_free(long this_ptr);
        /// uint16_t Ping_get_ponglen(const LDKPing *this_ptr);
-       public static native long Ping_get_ponglen(long this_ptr);
+       public static native short Ping_get_ponglen(long this_ptr);
        /// void Ping_set_ponglen(LDKPing *this_ptr, uint16_t val);
-       public static native void Ping_set_ponglen(long this_ptr, long val);
+       public static native void Ping_set_ponglen(long this_ptr, short val);
        /// uint16_t Ping_get_byteslen(const LDKPing *this_ptr);
-       public static native long Ping_get_byteslen(long this_ptr);
+       public static native short Ping_get_byteslen(long this_ptr);
        /// void Ping_set_byteslen(LDKPing *this_ptr, uint16_t val);
-       public static native void Ping_set_byteslen(long this_ptr, long val);
+       public static native void Ping_set_byteslen(long this_ptr, short val);
        /// MUST_USE_RES LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
-       public static native long Ping_new(long ponglen_arg, long byteslen_arg);
+       public static native long Ping_new(short ponglen_arg, short byteslen_arg);
        /// void Pong_free(LDKPong this_ptr);
        public static native void Pong_free(long this_ptr);
        /// uint16_t Pong_get_byteslen(const LDKPong *this_ptr);
-       public static native long Pong_get_byteslen(long this_ptr);
+       public static native short Pong_get_byteslen(long this_ptr);
        /// void Pong_set_byteslen(LDKPong *this_ptr, uint16_t val);
-       public static native void Pong_set_byteslen(long this_ptr, long val);
+       public static native void Pong_set_byteslen(long this_ptr, short val);
        /// MUST_USE_RES LDKPong Pong_new(uint16_t byteslen_arg);
-       public static native long Pong_new(long byteslen_arg);
+       public static native long Pong_new(short byteslen_arg);
        /// void OpenChannel_free(LDKOpenChannel this_ptr);
        public static native void OpenChannel_free(long this_ptr);
        /// const uint8_t (*OpenChannel_get_chain_hash(const LDKOpenChannel *this_ptr))[32];
@@ -715,13 +755,13 @@ public class bindings {
        /// void OpenChannel_set_feerate_per_kw(LDKOpenChannel *this_ptr, uint32_t val);
        public static native void OpenChannel_set_feerate_per_kw(long this_ptr, int val);
        /// uint16_t OpenChannel_get_to_self_delay(const LDKOpenChannel *this_ptr);
-       public static native long OpenChannel_get_to_self_delay(long this_ptr);
+       public static native short OpenChannel_get_to_self_delay(long this_ptr);
        /// void OpenChannel_set_to_self_delay(LDKOpenChannel *this_ptr, uint16_t val);
-       public static native void OpenChannel_set_to_self_delay(long this_ptr, long val);
+       public static native void OpenChannel_set_to_self_delay(long this_ptr, short val);
        /// uint16_t OpenChannel_get_max_accepted_htlcs(const LDKOpenChannel *this_ptr);
-       public static native long OpenChannel_get_max_accepted_htlcs(long this_ptr);
+       public static native short OpenChannel_get_max_accepted_htlcs(long this_ptr);
        /// void OpenChannel_set_max_accepted_htlcs(LDKOpenChannel *this_ptr, uint16_t val);
-       public static native void OpenChannel_set_max_accepted_htlcs(long this_ptr, long val);
+       public static native void OpenChannel_set_max_accepted_htlcs(long this_ptr, short val);
        /// LDKPublicKey OpenChannel_get_funding_pubkey(const LDKOpenChannel *this_ptr);
        public static native long OpenChannel_get_funding_pubkey(long this_ptr);
        /// void OpenChannel_set_funding_pubkey(LDKOpenChannel *this_ptr, LDKPublicKey val);
@@ -777,13 +817,13 @@ public class bindings {
        /// void AcceptChannel_set_minimum_depth(LDKAcceptChannel *this_ptr, uint32_t val);
        public static native void AcceptChannel_set_minimum_depth(long this_ptr, int val);
        /// uint16_t AcceptChannel_get_to_self_delay(const LDKAcceptChannel *this_ptr);
-       public static native long AcceptChannel_get_to_self_delay(long this_ptr);
+       public static native short AcceptChannel_get_to_self_delay(long this_ptr);
        /// void AcceptChannel_set_to_self_delay(LDKAcceptChannel *this_ptr, uint16_t val);
-       public static native void AcceptChannel_set_to_self_delay(long this_ptr, long val);
+       public static native void AcceptChannel_set_to_self_delay(long this_ptr, short val);
        /// uint16_t AcceptChannel_get_max_accepted_htlcs(const LDKAcceptChannel *this_ptr);
-       public static native long AcceptChannel_get_max_accepted_htlcs(long this_ptr);
+       public static native short AcceptChannel_get_max_accepted_htlcs(long this_ptr);
        /// void AcceptChannel_set_max_accepted_htlcs(LDKAcceptChannel *this_ptr, uint16_t val);
-       public static native void AcceptChannel_set_max_accepted_htlcs(long this_ptr, long val);
+       public static native void AcceptChannel_set_max_accepted_htlcs(long this_ptr, short val);
        /// LDKPublicKey AcceptChannel_get_funding_pubkey(const LDKAcceptChannel *this_ptr);
        public static native long AcceptChannel_get_funding_pubkey(long this_ptr);
        /// void AcceptChannel_set_funding_pubkey(LDKAcceptChannel *this_ptr, LDKPublicKey val);
@@ -819,15 +859,15 @@ public class bindings {
        /// void FundingCreated_set_funding_txid(LDKFundingCreated *this_ptr, LDKThirtyTwoBytes val);
        public static native void FundingCreated_set_funding_txid(long this_ptr, long val);
        /// uint16_t FundingCreated_get_funding_output_index(const LDKFundingCreated *this_ptr);
-       public static native long FundingCreated_get_funding_output_index(long this_ptr);
+       public static native short FundingCreated_get_funding_output_index(long this_ptr);
        /// void FundingCreated_set_funding_output_index(LDKFundingCreated *this_ptr, uint16_t val);
-       public static native void FundingCreated_set_funding_output_index(long this_ptr, long val);
+       public static native void FundingCreated_set_funding_output_index(long this_ptr, short val);
        /// LDKSignature FundingCreated_get_signature(const LDKFundingCreated *this_ptr);
        public static native long FundingCreated_get_signature(long this_ptr);
        /// void FundingCreated_set_signature(LDKFundingCreated *this_ptr, LDKSignature val);
        public static native void FundingCreated_set_signature(long this_ptr, long val);
        /// MUST_USE_RES LDKFundingCreated FundingCreated_new(LDKThirtyTwoBytes temporary_channel_id_arg, LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, LDKSignature signature_arg);
-       public static native long FundingCreated_new(long temporary_channel_id_arg, long funding_txid_arg, long funding_output_index_arg, long signature_arg);
+       public static native long FundingCreated_new(long temporary_channel_id_arg, long funding_txid_arg, short funding_output_index_arg, long signature_arg);
        /// void FundingSigned_free(LDKFundingSigned this_ptr);
        public static native void FundingSigned_free(long this_ptr);
        /// const uint8_t (*FundingSigned_get_channel_id(const LDKFundingSigned *this_ptr))[32];
@@ -939,9 +979,9 @@ public class bindings {
        /// void UpdateFailMalformedHTLC_set_htlc_id(LDKUpdateFailMalformedHTLC *this_ptr, uint64_t val);
        public static native void UpdateFailMalformedHTLC_set_htlc_id(long this_ptr, long val);
        /// uint16_t UpdateFailMalformedHTLC_get_failure_code(const LDKUpdateFailMalformedHTLC *this_ptr);
-       public static native long UpdateFailMalformedHTLC_get_failure_code(long this_ptr);
+       public static native short UpdateFailMalformedHTLC_get_failure_code(long this_ptr);
        /// void UpdateFailMalformedHTLC_set_failure_code(LDKUpdateFailMalformedHTLC *this_ptr, uint16_t val);
-       public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, long val);
+       public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, short val);
        /// void CommitmentSigned_free(LDKCommitmentSigned this_ptr);
        public static native void CommitmentSigned_free(long this_ptr);
        /// const uint8_t (*CommitmentSigned_get_channel_id(const LDKCommitmentSigned *this_ptr))[32];
@@ -1034,6 +1074,10 @@ public class bindings {
        public static native void NetAddress_free(long this_ptr);
        /// void UnsignedNodeAnnouncement_free(LDKUnsignedNodeAnnouncement this_ptr);
        public static native void UnsignedNodeAnnouncement_free(long this_ptr);
+       /// LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const LDKUnsignedNodeAnnouncement *this_ptr);
+       public static native long UnsignedNodeAnnouncement_get_features(long this_ptr);
+       /// void UnsignedNodeAnnouncement_set_features(LDKUnsignedNodeAnnouncement *this_ptr, LDKNodeFeatures val);
+       public static native void UnsignedNodeAnnouncement_set_features(long this_ptr, long val);
        /// uint32_t UnsignedNodeAnnouncement_get_timestamp(const LDKUnsignedNodeAnnouncement *this_ptr);
        public static native int UnsignedNodeAnnouncement_get_timestamp(long this_ptr);
        /// void UnsignedNodeAnnouncement_set_timestamp(LDKUnsignedNodeAnnouncement *this_ptr, uint32_t val);
@@ -1066,6 +1110,10 @@ public class bindings {
        public static native long NodeAnnouncement_new(long signature_arg, long contents_arg);
        /// void UnsignedChannelAnnouncement_free(LDKUnsignedChannelAnnouncement this_ptr);
        public static native void UnsignedChannelAnnouncement_free(long this_ptr);
+       /// LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const LDKUnsignedChannelAnnouncement *this_ptr);
+       public static native long UnsignedChannelAnnouncement_get_features(long this_ptr);
+       /// void UnsignedChannelAnnouncement_set_features(LDKUnsignedChannelAnnouncement *this_ptr, LDKChannelFeatures val);
+       public static native void UnsignedChannelAnnouncement_set_features(long this_ptr, long val);
        /// const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const LDKUnsignedChannelAnnouncement *this_ptr))[32];
        public static native byte[] UnsignedChannelAnnouncement_get_chain_hash(long this_ptr);
        /// void UnsignedChannelAnnouncement_set_chain_hash(LDKUnsignedChannelAnnouncement *this_ptr, LDKThirtyTwoBytes val);
@@ -1133,9 +1181,9 @@ public class bindings {
        /// void UnsignedChannelUpdate_set_flags(LDKUnsignedChannelUpdate *this_ptr, uint8_t val);
        public static native void UnsignedChannelUpdate_set_flags(long this_ptr, byte val);
        /// uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const LDKUnsignedChannelUpdate *this_ptr);
-       public static native long UnsignedChannelUpdate_get_cltv_expiry_delta(long this_ptr);
+       public static native short UnsignedChannelUpdate_get_cltv_expiry_delta(long this_ptr);
        /// void UnsignedChannelUpdate_set_cltv_expiry_delta(LDKUnsignedChannelUpdate *this_ptr, uint16_t val);
-       public static native void UnsignedChannelUpdate_set_cltv_expiry_delta(long this_ptr, long val);
+       public static native void UnsignedChannelUpdate_set_cltv_expiry_delta(long this_ptr, short val);
        /// uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const LDKUnsignedChannelUpdate *this_ptr);
        public static native long UnsignedChannelUpdate_get_htlc_minimum_msat(long this_ptr);
        /// void UnsignedChannelUpdate_set_htlc_minimum_msat(LDKUnsignedChannelUpdate *this_ptr, uint64_t val);
@@ -1160,6 +1208,82 @@ public class bindings {
        public static native void ChannelUpdate_set_contents(long this_ptr, long val);
        /// MUST_USE_RES LDKChannelUpdate ChannelUpdate_new(LDKSignature signature_arg, LDKUnsignedChannelUpdate contents_arg);
        public static native long ChannelUpdate_new(long signature_arg, long contents_arg);
+       /// void QueryChannelRange_free(LDKQueryChannelRange this_ptr);
+       public static native void QueryChannelRange_free(long this_ptr);
+       /// const uint8_t (*QueryChannelRange_get_chain_hash(const LDKQueryChannelRange *this_ptr))[32];
+       public static native byte[] QueryChannelRange_get_chain_hash(long this_ptr);
+       /// void QueryChannelRange_set_chain_hash(LDKQueryChannelRange *this_ptr, LDKThirtyTwoBytes val);
+       public static native void QueryChannelRange_set_chain_hash(long this_ptr, long val);
+       /// uint32_t QueryChannelRange_get_first_blocknum(const LDKQueryChannelRange *this_ptr);
+       public static native int QueryChannelRange_get_first_blocknum(long this_ptr);
+       /// void QueryChannelRange_set_first_blocknum(LDKQueryChannelRange *this_ptr, uint32_t val);
+       public static native void QueryChannelRange_set_first_blocknum(long this_ptr, int val);
+       /// uint32_t QueryChannelRange_get_number_of_blocks(const LDKQueryChannelRange *this_ptr);
+       public static native int QueryChannelRange_get_number_of_blocks(long this_ptr);
+       /// void QueryChannelRange_set_number_of_blocks(LDKQueryChannelRange *this_ptr, uint32_t val);
+       public static native void QueryChannelRange_set_number_of_blocks(long this_ptr, int val);
+       /// MUST_USE_RES LDKQueryChannelRange QueryChannelRange_new(LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
+       public static native long QueryChannelRange_new(long chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg);
+       /// void ReplyChannelRange_free(LDKReplyChannelRange this_ptr);
+       public static native void ReplyChannelRange_free(long this_ptr);
+       /// const uint8_t (*ReplyChannelRange_get_chain_hash(const LDKReplyChannelRange *this_ptr))[32];
+       public static native byte[] ReplyChannelRange_get_chain_hash(long this_ptr);
+       /// void ReplyChannelRange_set_chain_hash(LDKReplyChannelRange *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ReplyChannelRange_set_chain_hash(long this_ptr, long val);
+       /// uint32_t ReplyChannelRange_get_first_blocknum(const LDKReplyChannelRange *this_ptr);
+       public static native int ReplyChannelRange_get_first_blocknum(long this_ptr);
+       /// void ReplyChannelRange_set_first_blocknum(LDKReplyChannelRange *this_ptr, uint32_t val);
+       public static native void ReplyChannelRange_set_first_blocknum(long this_ptr, int val);
+       /// uint32_t ReplyChannelRange_get_number_of_blocks(const LDKReplyChannelRange *this_ptr);
+       public static native int ReplyChannelRange_get_number_of_blocks(long this_ptr);
+       /// void ReplyChannelRange_set_number_of_blocks(LDKReplyChannelRange *this_ptr, uint32_t val);
+       public static native void ReplyChannelRange_set_number_of_blocks(long this_ptr, int val);
+       /// bool ReplyChannelRange_get_full_information(const LDKReplyChannelRange *this_ptr);
+       public static native boolean ReplyChannelRange_get_full_information(long this_ptr);
+       /// void ReplyChannelRange_set_full_information(LDKReplyChannelRange *this_ptr, bool val);
+       public static native void ReplyChannelRange_set_full_information(long this_ptr, boolean val);
+       /// void ReplyChannelRange_set_short_channel_ids(LDKReplyChannelRange *this_ptr, LDKCVec_u64Z val);
+       public static native void ReplyChannelRange_set_short_channel_ids(long this_ptr, long val);
+       /// MUST_USE_RES LDKReplyChannelRange ReplyChannelRange_new(LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool full_information_arg, LDKCVec_u64Z short_channel_ids_arg);
+       public static native long ReplyChannelRange_new(long chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean full_information_arg, long short_channel_ids_arg);
+       /// void QueryShortChannelIds_free(LDKQueryShortChannelIds this_ptr);
+       public static native void QueryShortChannelIds_free(long this_ptr);
+       /// const uint8_t (*QueryShortChannelIds_get_chain_hash(const LDKQueryShortChannelIds *this_ptr))[32];
+       public static native byte[] QueryShortChannelIds_get_chain_hash(long this_ptr);
+       /// void QueryShortChannelIds_set_chain_hash(LDKQueryShortChannelIds *this_ptr, LDKThirtyTwoBytes val);
+       public static native void QueryShortChannelIds_set_chain_hash(long this_ptr, long val);
+       /// void QueryShortChannelIds_set_short_channel_ids(LDKQueryShortChannelIds *this_ptr, LDKCVec_u64Z val);
+       public static native void QueryShortChannelIds_set_short_channel_ids(long this_ptr, long val);
+       /// MUST_USE_RES LDKQueryShortChannelIds QueryShortChannelIds_new(LDKThirtyTwoBytes chain_hash_arg, LDKCVec_u64Z short_channel_ids_arg);
+       public static native long QueryShortChannelIds_new(long chain_hash_arg, long short_channel_ids_arg);
+       /// void ReplyShortChannelIdsEnd_free(LDKReplyShortChannelIdsEnd this_ptr);
+       public static native void ReplyShortChannelIdsEnd_free(long this_ptr);
+       /// const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const LDKReplyShortChannelIdsEnd *this_ptr))[32];
+       public static native byte[] ReplyShortChannelIdsEnd_get_chain_hash(long this_ptr);
+       /// void ReplyShortChannelIdsEnd_set_chain_hash(LDKReplyShortChannelIdsEnd *this_ptr, LDKThirtyTwoBytes val);
+       public static native void ReplyShortChannelIdsEnd_set_chain_hash(long this_ptr, long val);
+       /// bool ReplyShortChannelIdsEnd_get_full_information(const LDKReplyShortChannelIdsEnd *this_ptr);
+       public static native boolean ReplyShortChannelIdsEnd_get_full_information(long this_ptr);
+       /// void ReplyShortChannelIdsEnd_set_full_information(LDKReplyShortChannelIdsEnd *this_ptr, bool val);
+       public static native void ReplyShortChannelIdsEnd_set_full_information(long this_ptr, boolean val);
+       /// MUST_USE_RES LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
+       public static native long ReplyShortChannelIdsEnd_new(long chain_hash_arg, boolean full_information_arg);
+       /// void GossipTimestampFilter_free(LDKGossipTimestampFilter this_ptr);
+       public static native void GossipTimestampFilter_free(long this_ptr);
+       /// const uint8_t (*GossipTimestampFilter_get_chain_hash(const LDKGossipTimestampFilter *this_ptr))[32];
+       public static native byte[] GossipTimestampFilter_get_chain_hash(long this_ptr);
+       /// void GossipTimestampFilter_set_chain_hash(LDKGossipTimestampFilter *this_ptr, LDKThirtyTwoBytes val);
+       public static native void GossipTimestampFilter_set_chain_hash(long this_ptr, long val);
+       /// uint32_t GossipTimestampFilter_get_first_timestamp(const LDKGossipTimestampFilter *this_ptr);
+       public static native int GossipTimestampFilter_get_first_timestamp(long this_ptr);
+       /// void GossipTimestampFilter_set_first_timestamp(LDKGossipTimestampFilter *this_ptr, uint32_t val);
+       public static native void GossipTimestampFilter_set_first_timestamp(long this_ptr, int val);
+       /// uint32_t GossipTimestampFilter_get_timestamp_range(const LDKGossipTimestampFilter *this_ptr);
+       public static native int GossipTimestampFilter_get_timestamp_range(long this_ptr);
+       /// void GossipTimestampFilter_set_timestamp_range(LDKGossipTimestampFilter *this_ptr, uint32_t val);
+       public static native void GossipTimestampFilter_set_timestamp_range(long this_ptr, int val);
+       /// MUST_USE_RES LDKGossipTimestampFilter GossipTimestampFilter_new(LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
+       public static native long GossipTimestampFilter_new(long chain_hash_arg, int first_timestamp_arg, int timestamp_range_arg);
        /// void ErrorAction_free(LDKErrorAction this_ptr);
        public static native void ErrorAction_free(long this_ptr);
        /// void LightningError_free(LDKLightningError this_ptr);
@@ -1304,6 +1428,26 @@ public class bindings {
        public static native long NodeAnnouncement_write(long obj);
        /// LDKNodeAnnouncement NodeAnnouncement_read(LDKu8slice ser);
        public static native long NodeAnnouncement_read(long ser);
+       /// LDKQueryShortChannelIds QueryShortChannelIds_read(LDKu8slice ser);
+       public static native long QueryShortChannelIds_read(long ser);
+       /// LDKCVec_u8Z QueryShortChannelIds_write(const LDKQueryShortChannelIds *obj);
+       public static native long QueryShortChannelIds_write(long obj);
+       /// LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_read(LDKu8slice ser);
+       public static native long ReplyShortChannelIdsEnd_read(long ser);
+       /// LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const LDKReplyShortChannelIdsEnd *obj);
+       public static native long ReplyShortChannelIdsEnd_write(long obj);
+       /// LDKQueryChannelRange QueryChannelRange_read(LDKu8slice ser);
+       public static native long QueryChannelRange_read(long ser);
+       /// LDKCVec_u8Z QueryChannelRange_write(const LDKQueryChannelRange *obj);
+       public static native long QueryChannelRange_write(long obj);
+       /// LDKReplyChannelRange ReplyChannelRange_read(LDKu8slice ser);
+       public static native long ReplyChannelRange_read(long ser);
+       /// LDKCVec_u8Z ReplyChannelRange_write(const LDKReplyChannelRange *obj);
+       public static native long ReplyChannelRange_write(long obj);
+       /// LDKGossipTimestampFilter GossipTimestampFilter_read(LDKu8slice ser);
+       public static native long GossipTimestampFilter_read(long ser);
+       /// LDKCVec_u8Z GossipTimestampFilter_write(const LDKGossipTimestampFilter *obj);
+       public static native long GossipTimestampFilter_write(long obj);
        /// void MessageHandler_free(LDKMessageHandler this_ptr);
        public static native void MessageHandler_free(long this_ptr);
        /// const LDKChannelMessageHandler *MessageHandler_get_chan_handler(const LDKMessageHandler *this_ptr);
@@ -1348,6 +1492,14 @@ public class bindings {
        public static native void PeerManager_timer_tick_occured(long this_arg);
        /// LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
        public static native long build_commitment_secret(byte[] commitment_seed, long idx);
+       /// LDKCResult_SecretKeySecpErrorZ derive_private_key(LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
+       public static native long derive_private_key(long per_commitment_point, byte[] base_secret);
+       /// LDKCResult_PublicKeySecpErrorZ derive_public_key(LDKPublicKey per_commitment_point, LDKPublicKey base_point);
+       public static native long derive_public_key(long per_commitment_point, long base_point);
+       /// LDKCResult_SecretKeySecpErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
+       public static native long derive_private_revocation_key(byte[] per_commitment_secret, byte[] countersignatory_revocation_base_secret);
+       /// LDKCResult_PublicKeySecpErrorZ derive_public_revocation_key(LDKPublicKey per_commitment_point, LDKPublicKey countersignatory_revocation_base_point);
+       public static native long derive_public_revocation_key(long per_commitment_point, long countersignatory_revocation_base_point);
        /// void TxCreationKeys_free(LDKTxCreationKeys this_ptr);
        public static native void TxCreationKeys_free(long this_ptr);
        /// LDKPublicKey TxCreationKeys_get_per_commitment_point(const LDKTxCreationKeys *this_ptr);
@@ -1358,20 +1510,20 @@ public class bindings {
        public static native long TxCreationKeys_get_revocation_key(long this_ptr);
        /// void TxCreationKeys_set_revocation_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
        public static native void TxCreationKeys_set_revocation_key(long this_ptr, long val);
-       /// LDKPublicKey TxCreationKeys_get_a_htlc_key(const LDKTxCreationKeys *this_ptr);
-       public static native long TxCreationKeys_get_a_htlc_key(long this_ptr);
-       /// void TxCreationKeys_set_a_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
-       public static native void TxCreationKeys_set_a_htlc_key(long this_ptr, long val);
-       /// LDKPublicKey TxCreationKeys_get_b_htlc_key(const LDKTxCreationKeys *this_ptr);
-       public static native long TxCreationKeys_get_b_htlc_key(long this_ptr);
-       /// void TxCreationKeys_set_b_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
-       public static native void TxCreationKeys_set_b_htlc_key(long this_ptr, long val);
-       /// LDKPublicKey TxCreationKeys_get_a_delayed_payment_key(const LDKTxCreationKeys *this_ptr);
-       public static native long TxCreationKeys_get_a_delayed_payment_key(long this_ptr);
-       /// void TxCreationKeys_set_a_delayed_payment_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
-       public static native void TxCreationKeys_set_a_delayed_payment_key(long this_ptr, long val);
-       /// MUST_USE_RES LDKTxCreationKeys TxCreationKeys_new(LDKPublicKey per_commitment_point_arg, LDKPublicKey revocation_key_arg, LDKPublicKey a_htlc_key_arg, LDKPublicKey b_htlc_key_arg, LDKPublicKey a_delayed_payment_key_arg);
-       public static native long TxCreationKeys_new(long per_commitment_point_arg, long revocation_key_arg, long a_htlc_key_arg, long b_htlc_key_arg, long a_delayed_payment_key_arg);
+       /// LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_broadcaster_htlc_key(long this_ptr);
+       /// void TxCreationKeys_set_broadcaster_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_broadcaster_htlc_key(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_countersignatory_htlc_key(long this_ptr);
+       /// void TxCreationKeys_set_countersignatory_htlc_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_countersignatory_htlc_key(long this_ptr, long val);
+       /// LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const LDKTxCreationKeys *this_ptr);
+       public static native long TxCreationKeys_get_broadcaster_delayed_payment_key(long this_ptr);
+       /// void TxCreationKeys_set_broadcaster_delayed_payment_key(LDKTxCreationKeys *this_ptr, LDKPublicKey val);
+       public static native void TxCreationKeys_set_broadcaster_delayed_payment_key(long this_ptr, long val);
+       /// MUST_USE_RES LDKTxCreationKeys TxCreationKeys_new(LDKPublicKey per_commitment_point_arg, LDKPublicKey revocation_key_arg, LDKPublicKey broadcaster_htlc_key_arg, LDKPublicKey countersignatory_htlc_key_arg, LDKPublicKey broadcaster_delayed_payment_key_arg);
+       public static native long TxCreationKeys_new(long per_commitment_point_arg, long revocation_key_arg, long broadcaster_htlc_key_arg, long countersignatory_htlc_key_arg, long broadcaster_delayed_payment_key_arg);
        /// LDKCVec_u8Z TxCreationKeys_write(const LDKTxCreationKeys *obj);
        public static native long TxCreationKeys_write(long obj);
        /// LDKTxCreationKeys TxCreationKeys_read(LDKu8slice ser);
@@ -1412,10 +1564,10 @@ public class bindings {
        public static native long ChannelPublicKeys_write(long obj);
        /// LDKChannelPublicKeys ChannelPublicKeys_read(LDKu8slice ser);
        public static native long ChannelPublicKeys_read(long ser);
-       /// MUST_USE_RES LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_derive_new(LDKPublicKey per_commitment_point, LDKPublicKey a_delayed_payment_base, LDKPublicKey a_htlc_base, LDKPublicKey b_revocation_base, LDKPublicKey b_htlc_base);
-       public static native long TxCreationKeys_derive_new(long per_commitment_point, long a_delayed_payment_base, long a_htlc_base, long b_revocation_base, long b_htlc_base);
-       /// LDKCVec_u8Z get_revokeable_redeemscript(LDKPublicKey revocation_key, uint16_t to_self_delay, LDKPublicKey delayed_payment_key);
-       public static native long get_revokeable_redeemscript(long revocation_key, long to_self_delay, long delayed_payment_key);
+       /// MUST_USE_RES LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_derive_new(LDKPublicKey per_commitment_point, LDKPublicKey broadcaster_delayed_payment_base, LDKPublicKey broadcaster_htlc_base, LDKPublicKey countersignatory_revocation_base, LDKPublicKey countersignatory_htlc_base);
+       public static native long TxCreationKeys_derive_new(long per_commitment_point, long broadcaster_delayed_payment_base, long broadcaster_htlc_base, long countersignatory_revocation_base, long countersignatory_htlc_base);
+       /// LDKCVec_u8Z get_revokeable_redeemscript(LDKPublicKey revocation_key, uint16_t contest_delay, LDKPublicKey broadcaster_delayed_payment_key);
+       public static native long get_revokeable_redeemscript(long revocation_key, short contest_delay, long broadcaster_delayed_payment_key);
        /// void HTLCOutputInCommitment_free(LDKHTLCOutputInCommitment this_ptr);
        public static native void HTLCOutputInCommitment_free(long this_ptr);
        /// bool HTLCOutputInCommitment_get_offered(const LDKHTLCOutputInCommitment *this_ptr);
@@ -1440,40 +1592,40 @@ public class bindings {
        public static native long HTLCOutputInCommitment_read(long ser);
        /// LDKCVec_u8Z get_htlc_redeemscript(const LDKHTLCOutputInCommitment *htlc, const LDKTxCreationKeys *keys);
        public static native long get_htlc_redeemscript(long htlc, long keys);
-       /// LDKCVec_u8Z make_funding_redeemscript(LDKPublicKey a, LDKPublicKey b);
-       public static native long make_funding_redeemscript(long a, long b);
-       /// LDKCVec_u8Z build_htlc_transaction(const uint8_t (*prev_hash)[32], uint32_t feerate_per_kw, uint16_t to_self_delay, const LDKHTLCOutputInCommitment *htlc, LDKPublicKey a_delayed_payment_key, LDKPublicKey revocation_key);
-       public static native long build_htlc_transaction(byte[] prev_hash, int feerate_per_kw, long to_self_delay, long htlc, long a_delayed_payment_key, long revocation_key);
-       /// void LocalCommitmentTransaction_free(LDKLocalCommitmentTransaction this_ptr);
-       public static native void LocalCommitmentTransaction_free(long this_ptr);
-       /// LDKCVec_u8Z LocalCommitmentTransaction_get_unsigned_tx(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native long LocalCommitmentTransaction_get_unsigned_tx(long this_ptr);
-       /// void LocalCommitmentTransaction_set_unsigned_tx(LDKLocalCommitmentTransaction *this_ptr, LDKCVec_u8Z val);
-       public static native void LocalCommitmentTransaction_set_unsigned_tx(long this_ptr, long val);
-       /// LDKSignature LocalCommitmentTransaction_get_their_sig(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native long LocalCommitmentTransaction_get_their_sig(long this_ptr);
-       /// void LocalCommitmentTransaction_set_their_sig(LDKLocalCommitmentTransaction *this_ptr, LDKSignature val);
-       public static native void LocalCommitmentTransaction_set_their_sig(long this_ptr, long val);
-       /// uint32_t LocalCommitmentTransaction_get_feerate_per_kw(const LDKLocalCommitmentTransaction *this_ptr);
-       public static native int LocalCommitmentTransaction_get_feerate_per_kw(long this_ptr);
-       /// void LocalCommitmentTransaction_set_feerate_per_kw(LDKLocalCommitmentTransaction *this_ptr, uint32_t val);
-       public static native void LocalCommitmentTransaction_set_feerate_per_kw(long this_ptr, int val);
-       /// void LocalCommitmentTransaction_set_per_htlc(LDKLocalCommitmentTransaction *this_ptr, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ val);
-       public static native void LocalCommitmentTransaction_set_per_htlc(long this_ptr, long val);
-       /// MUST_USE_RES LDKLocalCommitmentTransaction LocalCommitmentTransaction_new_missing_local_sig(LDKCVec_u8Z unsigned_tx, LDKSignature their_sig, LDKPublicKey our_funding_key, LDKPublicKey their_funding_key, LDKTxCreationKeys local_keys, uint32_t feerate_per_kw, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data);
-       public static native long LocalCommitmentTransaction_new_missing_local_sig(long unsigned_tx, long their_sig, long our_funding_key, long their_funding_key, long local_keys, int feerate_per_kw, long htlc_data);
-       /// MUST_USE_RES LDKTxCreationKeys LocalCommitmentTransaction_trust_key_derivation(const LDKLocalCommitmentTransaction *this_arg);
-       public static native long LocalCommitmentTransaction_trust_key_derivation(long this_arg);
-       /// MUST_USE_RES LDKThirtyTwoBytes LocalCommitmentTransaction_txid(const LDKLocalCommitmentTransaction *this_arg);
-       public static native long LocalCommitmentTransaction_txid(long this_arg);
-       /// MUST_USE_RES LDKSignature LocalCommitmentTransaction_get_local_sig(const LDKLocalCommitmentTransaction *this_arg, const uint8_t (*funding_key)[32], LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       public static native long LocalCommitmentTransaction_get_local_sig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
-       /// MUST_USE_RES LDKCResult_CVec_SignatureZNoneZ LocalCommitmentTransaction_get_htlc_sigs(const LDKLocalCommitmentTransaction *this_arg, const uint8_t (*htlc_base_key)[32], uint16_t local_csv);
-       public static native long LocalCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, long local_csv);
-       /// LDKCVec_u8Z LocalCommitmentTransaction_write(const LDKLocalCommitmentTransaction *obj);
-       public static native long LocalCommitmentTransaction_write(long obj);
-       /// LDKLocalCommitmentTransaction LocalCommitmentTransaction_read(LDKu8slice ser);
-       public static native long LocalCommitmentTransaction_read(long ser);
+       /// LDKCVec_u8Z make_funding_redeemscript(LDKPublicKey broadcaster, LDKPublicKey countersignatory);
+       public static native long make_funding_redeemscript(long broadcaster, long countersignatory);
+       /// LDKTransaction build_htlc_transaction(const uint8_t (*prev_hash)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const LDKHTLCOutputInCommitment *htlc, LDKPublicKey broadcaster_delayed_payment_key, LDKPublicKey revocation_key);
+       public static native long build_htlc_transaction(byte[] prev_hash, int feerate_per_kw, short contest_delay, long htlc, long broadcaster_delayed_payment_key, long revocation_key);
+       /// void HolderCommitmentTransaction_free(LDKHolderCommitmentTransaction this_ptr);
+       public static native void HolderCommitmentTransaction_free(long this_ptr);
+       /// LDKTransaction HolderCommitmentTransaction_get_unsigned_tx(const LDKHolderCommitmentTransaction *this_ptr);
+       public static native long HolderCommitmentTransaction_get_unsigned_tx(long this_ptr);
+       /// void HolderCommitmentTransaction_set_unsigned_tx(LDKHolderCommitmentTransaction *this_ptr, LDKTransaction val);
+       public static native void HolderCommitmentTransaction_set_unsigned_tx(long this_ptr, long val);
+       /// LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const LDKHolderCommitmentTransaction *this_ptr);
+       public static native long HolderCommitmentTransaction_get_counterparty_sig(long this_ptr);
+       /// void HolderCommitmentTransaction_set_counterparty_sig(LDKHolderCommitmentTransaction *this_ptr, LDKSignature val);
+       public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, long val);
+       /// uint32_t HolderCommitmentTransaction_get_feerate_per_kw(const LDKHolderCommitmentTransaction *this_ptr);
+       public static native int HolderCommitmentTransaction_get_feerate_per_kw(long this_ptr);
+       /// void HolderCommitmentTransaction_set_feerate_per_kw(LDKHolderCommitmentTransaction *this_ptr, uint32_t val);
+       public static native void HolderCommitmentTransaction_set_feerate_per_kw(long this_ptr, int val);
+       /// void HolderCommitmentTransaction_set_per_htlc(LDKHolderCommitmentTransaction *this_ptr, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ val);
+       public static native void HolderCommitmentTransaction_set_per_htlc(long this_ptr, long val);
+       /// MUST_USE_RES LDKHolderCommitmentTransaction HolderCommitmentTransaction_new_missing_holder_sig(LDKTransaction unsigned_tx, LDKSignature counterparty_sig, LDKPublicKey holder_funding_key, LDKPublicKey counterparty_funding_key, LDKTxCreationKeys keys, uint32_t feerate_per_kw, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data);
+       public static native long HolderCommitmentTransaction_new_missing_holder_sig(long unsigned_tx, long counterparty_sig, long holder_funding_key, long counterparty_funding_key, long keys, int feerate_per_kw, long htlc_data);
+       /// MUST_USE_RES LDKTxCreationKeys HolderCommitmentTransaction_trust_key_derivation(const LDKHolderCommitmentTransaction *this_arg);
+       public static native long HolderCommitmentTransaction_trust_key_derivation(long this_arg);
+       /// MUST_USE_RES LDKThirtyTwoBytes HolderCommitmentTransaction_txid(const LDKHolderCommitmentTransaction *this_arg);
+       public static native long HolderCommitmentTransaction_txid(long this_arg);
+       /// MUST_USE_RES LDKSignature HolderCommitmentTransaction_get_holder_sig(const LDKHolderCommitmentTransaction *this_arg, const uint8_t (*funding_key)[32], LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
+       public static native long HolderCommitmentTransaction_get_holder_sig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
+       /// MUST_USE_RES LDKCResult_CVec_SignatureZNoneZ HolderCommitmentTransaction_get_htlc_sigs(const LDKHolderCommitmentTransaction *this_arg, const uint8_t (*htlc_base_key)[32], uint16_t counterparty_selected_contest_delay);
+       public static native long HolderCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, short counterparty_selected_contest_delay);
+       /// LDKCVec_u8Z HolderCommitmentTransaction_write(const LDKHolderCommitmentTransaction *obj);
+       public static native long HolderCommitmentTransaction_write(long obj);
+       /// LDKHolderCommitmentTransaction HolderCommitmentTransaction_read(LDKu8slice ser);
+       public static native long HolderCommitmentTransaction_read(long ser);
        /// void InitFeatures_free(LDKInitFeatures this_ptr);
        public static native void InitFeatures_free(long this_ptr);
        /// void NodeFeatures_free(LDKNodeFeatures this_ptr);
@@ -1486,10 +1638,18 @@ public class bindings {
        public static native long RouteHop_get_pubkey(long this_ptr);
        /// void RouteHop_set_pubkey(LDKRouteHop *this_ptr, LDKPublicKey val);
        public static native void RouteHop_set_pubkey(long this_ptr, long val);
+       /// LDKNodeFeatures RouteHop_get_node_features(const LDKRouteHop *this_ptr);
+       public static native long RouteHop_get_node_features(long this_ptr);
+       /// void RouteHop_set_node_features(LDKRouteHop *this_ptr, LDKNodeFeatures val);
+       public static native void RouteHop_set_node_features(long this_ptr, long val);
        /// uint64_t RouteHop_get_short_channel_id(const LDKRouteHop *this_ptr);
        public static native long RouteHop_get_short_channel_id(long this_ptr);
        /// void RouteHop_set_short_channel_id(LDKRouteHop *this_ptr, uint64_t val);
        public static native void RouteHop_set_short_channel_id(long this_ptr, long val);
+       /// LDKChannelFeatures RouteHop_get_channel_features(const LDKRouteHop *this_ptr);
+       public static native long RouteHop_get_channel_features(long this_ptr);
+       /// void RouteHop_set_channel_features(LDKRouteHop *this_ptr, LDKChannelFeatures val);
+       public static native void RouteHop_set_channel_features(long this_ptr, long val);
        /// uint64_t RouteHop_get_fee_msat(const LDKRouteHop *this_ptr);
        public static native long RouteHop_get_fee_msat(long this_ptr);
        /// void RouteHop_set_fee_msat(LDKRouteHop *this_ptr, uint64_t val);
@@ -1498,6 +1658,8 @@ public class bindings {
        public static native int RouteHop_get_cltv_expiry_delta(long this_ptr);
        /// void RouteHop_set_cltv_expiry_delta(LDKRouteHop *this_ptr, uint32_t val);
        public static native void RouteHop_set_cltv_expiry_delta(long this_ptr, int val);
+       /// MUST_USE_RES LDKRouteHop RouteHop_new(LDKPublicKey pubkey_arg, LDKNodeFeatures node_features_arg, uint64_t short_channel_id_arg, LDKChannelFeatures channel_features_arg, uint64_t fee_msat_arg, uint32_t cltv_expiry_delta_arg);
+       public static native long RouteHop_new(long pubkey_arg, long node_features_arg, long short_channel_id_arg, long channel_features_arg, long fee_msat_arg, int cltv_expiry_delta_arg);
        /// void Route_free(LDKRoute this_ptr);
        public static native void Route_free(long this_ptr);
        /// void Route_set_paths(LDKRoute *this_ptr, LDKCVec_CVec_RouteHopZZ val);
@@ -1523,15 +1685,15 @@ public class bindings {
        /// void RouteHint_set_fees(LDKRouteHint *this_ptr, LDKRoutingFees val);
        public static native void RouteHint_set_fees(long this_ptr, long val);
        /// uint16_t RouteHint_get_cltv_expiry_delta(const LDKRouteHint *this_ptr);
-       public static native long RouteHint_get_cltv_expiry_delta(long this_ptr);
+       public static native short RouteHint_get_cltv_expiry_delta(long this_ptr);
        /// void RouteHint_set_cltv_expiry_delta(LDKRouteHint *this_ptr, uint16_t val);
-       public static native void RouteHint_set_cltv_expiry_delta(long this_ptr, long val);
+       public static native void RouteHint_set_cltv_expiry_delta(long this_ptr, short val);
        /// uint64_t RouteHint_get_htlc_minimum_msat(const LDKRouteHint *this_ptr);
        public static native long RouteHint_get_htlc_minimum_msat(long this_ptr);
        /// void RouteHint_set_htlc_minimum_msat(LDKRouteHint *this_ptr, uint64_t val);
        public static native void RouteHint_set_htlc_minimum_msat(long this_ptr, long val);
        /// MUST_USE_RES LDKRouteHint RouteHint_new(LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg);
-       public static native long RouteHint_new(long src_node_id_arg, long short_channel_id_arg, long fees_arg, long cltv_expiry_delta_arg, long htlc_minimum_msat_arg);
+       public static native long RouteHint_new(long src_node_id_arg, long short_channel_id_arg, long fees_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg);
        /// LDKCResult_RouteLightningErrorZ get_route(LDKPublicKey our_node_id, const LDKNetworkGraph *network, LDKPublicKey target, LDKCVec_ChannelDetailsZ *first_hops, LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, LDKLogger logger);
        public static native long get_route(long our_node_id, long network, long target, long first_hops, long last_hops, long final_value_msat, int final_cltv, long logger);
        /// void NetworkGraph_free(LDKNetworkGraph this_ptr);
@@ -1540,10 +1702,10 @@ public class bindings {
        public static native void LockedNetworkGraph_free(long this_ptr);
        /// void NetGraphMsgHandler_free(LDKNetGraphMsgHandler this_ptr);
        public static native void NetGraphMsgHandler_free(long this_ptr);
-       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_new(LDKChainWatchInterface chain_monitor, LDKLogger logger);
-       public static native long NetGraphMsgHandler_new(long chain_monitor, long logger);
-       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(LDKChainWatchInterface chain_monitor, LDKLogger logger, LDKNetworkGraph network_graph);
-       public static native long NetGraphMsgHandler_from_net_graph(long chain_monitor, long logger, long network_graph);
+       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_new(LDKAccess *chain_access, LDKLogger logger);
+       public static native long NetGraphMsgHandler_new(long chain_access, long logger);
+       /// MUST_USE_RES LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(LDKAccess *chain_access, LDKLogger logger, LDKNetworkGraph network_graph);
+       public static native long NetGraphMsgHandler_from_net_graph(long chain_access, long logger, long network_graph);
        /// MUST_USE_RES LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const LDKNetGraphMsgHandler *this_arg);
        public static native long NetGraphMsgHandler_read_locked_graph(long this_arg);
        /// MUST_USE_RES LDKNetworkGraph LockedNetworkGraph_graph(const LDKLockedNetworkGraph *this_arg);
@@ -1561,19 +1723,27 @@ public class bindings {
        /// void DirectionalChannelInfo_set_enabled(LDKDirectionalChannelInfo *this_ptr, bool val);
        public static native void DirectionalChannelInfo_set_enabled(long this_ptr, boolean val);
        /// uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const LDKDirectionalChannelInfo *this_ptr);
-       public static native long DirectionalChannelInfo_get_cltv_expiry_delta(long this_ptr);
+       public static native short DirectionalChannelInfo_get_cltv_expiry_delta(long this_ptr);
        /// void DirectionalChannelInfo_set_cltv_expiry_delta(LDKDirectionalChannelInfo *this_ptr, uint16_t val);
-       public static native void DirectionalChannelInfo_set_cltv_expiry_delta(long this_ptr, long val);
+       public static native void DirectionalChannelInfo_set_cltv_expiry_delta(long this_ptr, short val);
        /// uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const LDKDirectionalChannelInfo *this_ptr);
        public static native long DirectionalChannelInfo_get_htlc_minimum_msat(long this_ptr);
        /// void DirectionalChannelInfo_set_htlc_minimum_msat(LDKDirectionalChannelInfo *this_ptr, uint64_t val);
        public static native void DirectionalChannelInfo_set_htlc_minimum_msat(long this_ptr, long val);
+       /// LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const LDKDirectionalChannelInfo *this_ptr);
+       public static native long DirectionalChannelInfo_get_last_update_message(long this_ptr);
+       /// void DirectionalChannelInfo_set_last_update_message(LDKDirectionalChannelInfo *this_ptr, LDKChannelUpdate val);
+       public static native void DirectionalChannelInfo_set_last_update_message(long this_ptr, long val);
        /// LDKCVec_u8Z DirectionalChannelInfo_write(const LDKDirectionalChannelInfo *obj);
        public static native long DirectionalChannelInfo_write(long obj);
        /// LDKDirectionalChannelInfo DirectionalChannelInfo_read(LDKu8slice ser);
        public static native long DirectionalChannelInfo_read(long ser);
        /// void ChannelInfo_free(LDKChannelInfo this_ptr);
        public static native void ChannelInfo_free(long this_ptr);
+       /// LDKChannelFeatures ChannelInfo_get_features(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_features(long this_ptr);
+       /// void ChannelInfo_set_features(LDKChannelInfo *this_ptr, LDKChannelFeatures val);
+       public static native void ChannelInfo_set_features(long this_ptr, long val);
        /// LDKPublicKey ChannelInfo_get_node_one(const LDKChannelInfo *this_ptr);
        public static native long ChannelInfo_get_node_one(long this_ptr);
        /// void ChannelInfo_set_node_one(LDKChannelInfo *this_ptr, LDKPublicKey val);
@@ -1590,6 +1760,10 @@ public class bindings {
        public static native long ChannelInfo_get_two_to_one(long this_ptr);
        /// void ChannelInfo_set_two_to_one(LDKChannelInfo *this_ptr, LDKDirectionalChannelInfo val);
        public static native void ChannelInfo_set_two_to_one(long this_ptr, long val);
+       /// LDKChannelAnnouncement ChannelInfo_get_announcement_message(const LDKChannelInfo *this_ptr);
+       public static native long ChannelInfo_get_announcement_message(long this_ptr);
+       /// void ChannelInfo_set_announcement_message(LDKChannelInfo *this_ptr, LDKChannelAnnouncement val);
+       public static native void ChannelInfo_set_announcement_message(long this_ptr, long val);
        /// LDKCVec_u8Z ChannelInfo_write(const LDKChannelInfo *obj);
        public static native long ChannelInfo_write(long obj);
        /// LDKChannelInfo ChannelInfo_read(LDKu8slice ser);
@@ -1612,6 +1786,10 @@ public class bindings {
        public static native long RoutingFees_write(long obj);
        /// void NodeAnnouncementInfo_free(LDKNodeAnnouncementInfo this_ptr);
        public static native void NodeAnnouncementInfo_free(long this_ptr);
+       /// LDKNodeFeatures NodeAnnouncementInfo_get_features(const LDKNodeAnnouncementInfo *this_ptr);
+       public static native long NodeAnnouncementInfo_get_features(long this_ptr);
+       /// void NodeAnnouncementInfo_set_features(LDKNodeAnnouncementInfo *this_ptr, LDKNodeFeatures val);
+       public static native void NodeAnnouncementInfo_set_features(long this_ptr, long val);
        /// uint32_t NodeAnnouncementInfo_get_last_update(const LDKNodeAnnouncementInfo *this_ptr);
        public static native int NodeAnnouncementInfo_get_last_update(long this_ptr);
        /// void NodeAnnouncementInfo_set_last_update(LDKNodeAnnouncementInfo *this_ptr, uint32_t val);
@@ -1626,6 +1804,12 @@ public class bindings {
        public static native void NodeAnnouncementInfo_set_alias(long this_ptr, long val);
        /// void NodeAnnouncementInfo_set_addresses(LDKNodeAnnouncementInfo *this_ptr, LDKCVec_NetAddressZ val);
        public static native void NodeAnnouncementInfo_set_addresses(long this_ptr, long val);
+       /// LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const LDKNodeAnnouncementInfo *this_ptr);
+       public static native long NodeAnnouncementInfo_get_announcement_message(long this_ptr);
+       /// void NodeAnnouncementInfo_set_announcement_message(LDKNodeAnnouncementInfo *this_ptr, LDKNodeAnnouncement val);
+       public static native void NodeAnnouncementInfo_set_announcement_message(long this_ptr, long val);
+       /// MUST_USE_RES LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(LDKNodeFeatures features_arg, uint32_t last_update_arg, LDKThreeBytes rgb_arg, LDKThirtyTwoBytes alias_arg, LDKCVec_NetAddressZ addresses_arg, LDKNodeAnnouncement announcement_message_arg);
+       public static native long NodeAnnouncementInfo_new(long features_arg, int last_update_arg, long rgb_arg, long alias_arg, long addresses_arg, long announcement_message_arg);
        /// LDKCVec_u8Z NodeAnnouncementInfo_write(const LDKNodeAnnouncementInfo *obj);
        public static native long NodeAnnouncementInfo_write(long obj);
        /// LDKNodeAnnouncementInfo NodeAnnouncementInfo_read(LDKu8slice ser);