[Java] Update auto-generated Java bindings for 0.0.108
[ldk-java] / src / main / java / org / ldk / structs / UtilMethods.java
index 7c53034ab6b3f49978075c0c580af1c7be17b7cf..bbb6689de698ca3e244e62b5a25f0231eb4c285d 100644 (file)
@@ -142,6 +142,55 @@ public class UtilMethods {
                return ret_hu_conv;
        }
 
+       /**
+        * Equivalent to [`crate::ln::channelmanager::ChannelManager::create_inbound_payment`], but no
+        * `ChannelManager` is required. Useful for generating invoices for [phantom node payments] without
+        * a `ChannelManager`.
+        * 
+        * `keys` is generated by calling [`KeysInterface::get_inbound_payment_key_material`] and then
+        * calling [`ExpandedKey::new`] with its result. It is recommended to cache this value and not
+        * regenerate it for each new inbound payment.
+        * 
+        * `current_time` is a Unix timestamp representing the current time.
+        * 
+        * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
+        */
+       public static Result_C2Tuple_PaymentHashPaymentSecretZNoneZ create(ExpandedKey keys, Option_u64Z min_value_msat, int invoice_expiry_delta_secs, KeysInterface keys_manager, long current_time) {
+               long ret = bindings.create(keys == null ? 0 : keys.ptr & ~1, min_value_msat.ptr, invoice_expiry_delta_secs, keys_manager == null ? 0 : keys_manager.ptr, current_time);
+               Reference.reachabilityFence(keys);
+               Reference.reachabilityFence(min_value_msat);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
+               Reference.reachabilityFence(keys_manager);
+               Reference.reachabilityFence(current_time);
+               if (ret >= 0 && ret <= 4096) { return null; }
+               Result_C2Tuple_PaymentHashPaymentSecretZNoneZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
+               ret_hu_conv.ptrs_to.add(keys);
+               ret_hu_conv.ptrs_to.add(keys_manager);
+               return ret_hu_conv;
+       }
+
+       /**
+        * Equivalent to [`crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash`],
+        * but no `ChannelManager` is required. Useful for generating invoices for [phantom node payments]
+        * without a `ChannelManager`.
+        * 
+        * See [`create`] for information on the `keys` and `current_time` parameters.
+        * 
+        * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
+        */
+       public static Result_PaymentSecretNoneZ create_from_hash(ExpandedKey keys, Option_u64Z min_value_msat, byte[] payment_hash, int invoice_expiry_delta_secs, long current_time) {
+               long ret = bindings.create_from_hash(keys == null ? 0 : keys.ptr & ~1, min_value_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), invoice_expiry_delta_secs, current_time);
+               Reference.reachabilityFence(keys);
+               Reference.reachabilityFence(min_value_msat);
+               Reference.reachabilityFence(payment_hash);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
+               Reference.reachabilityFence(current_time);
+               if (ret >= 0 && ret <= 4096) { return null; }
+               Result_PaymentSecretNoneZ ret_hu_conv = Result_PaymentSecretNoneZ.constr_from_ptr(ret);
+               ret_hu_conv.ptrs_to.add(keys);
+               return ret_hu_conv;
+       }
+
        /**
         * Gets the weight for an HTLC-Success transaction.
         */
@@ -365,8 +414,8 @@ public class UtilMethods {
         * Private routing paths between a public node and the target may be included in `params.payee`.
         * 
         * If some channels aren't announced, it may be useful to fill in `first_hops` with the results
-        * from [`ChannelManager::list_usable_channels`]. If it is filled in, the view of our local
-        * channels from [`NetworkGraph`] will be ignored, and only those in `first_hops` will be used.
+        * from [`ChannelManager::list_usable_channels`]. If it is filled in, the view of these channels
+        * from `network_graph` will be ignored, and only those in `first_hops` will be used.
         * 
         * The fees on channels from us to the next hop are ignored as they are assumed to all be equal.
         * However, the enabled/disabled bit on such channels as well as the `htlc_minimum_msat` /
@@ -385,14 +434,15 @@ public class UtilMethods {
         * 
         * [`ChannelManager::list_usable_channels`]: crate::ln::channelmanager::ChannelManager::list_usable_channels
         * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
+        * [`NetworkGraph`]: crate::routing::gossip::NetworkGraph
         * 
         * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
-       public static Result_RouteLightningErrorZ find_route(byte[] our_node_pubkey, RouteParameters route_params, NetworkGraph network, @Nullable ChannelDetails[] first_hops, Logger logger, Score scorer, byte[] random_seed_bytes) {
-               long ret = bindings.find_route(InternalUtils.check_arr_len(our_node_pubkey, 33), route_params == null ? 0 : route_params.ptr & ~1, network == null ? 0 : network.ptr & ~1, first_hops != null ? Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray() : null, logger == null ? 0 : logger.ptr, scorer == null ? 0 : scorer.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
+       public static Result_RouteLightningErrorZ find_route(byte[] our_node_pubkey, RouteParameters route_params, NetworkGraph network_graph, @Nullable ChannelDetails[] first_hops, Logger logger, Score scorer, byte[] random_seed_bytes) {
+               long ret = bindings.find_route(InternalUtils.check_arr_len(our_node_pubkey, 33), route_params == null ? 0 : route_params.ptr & ~1, network_graph == null ? 0 : network_graph.ptr & ~1, first_hops != null ? Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray() : null, logger == null ? 0 : logger.ptr, scorer == null ? 0 : scorer.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
                Reference.reachabilityFence(our_node_pubkey);
                Reference.reachabilityFence(route_params);
-               Reference.reachabilityFence(network);
+               Reference.reachabilityFence(network_graph);
                Reference.reachabilityFence(first_hops);
                Reference.reachabilityFence(logger);
                Reference.reachabilityFence(scorer);
@@ -400,7 +450,7 @@ public class UtilMethods {
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
                ret_hu_conv.ptrs_to.add(route_params);
-               ret_hu_conv.ptrs_to.add(network);
+               ret_hu_conv.ptrs_to.add(network_graph);
                for (ChannelDetails first_hops_conv_16: first_hops) { ret_hu_conv.ptrs_to.add(first_hops_conv_16); };
                ret_hu_conv.ptrs_to.add(logger);
                ret_hu_conv.ptrs_to.add(scorer);
@@ -408,30 +458,24 @@ public class UtilMethods {
        }
 
        /**
-        * Writes the provided `ChannelManager` to the path provided at `FilesystemPersister`
-        * initialization, within a file called \"manager\".
-        */
-       public static Result_NoneErrorZ FilesystemPersister_persist_manager(java.lang.String data_dir, ChannelManager manager) {
-               long ret = bindings.FilesystemPersister_persist_manager(data_dir, manager == null ? 0 : manager.ptr & ~1);
-               Reference.reachabilityFence(data_dir);
-               Reference.reachabilityFence(manager);
-               if (ret >= 0 && ret <= 4096) { return null; }
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(manager);
-               return ret_hu_conv;
-       }
-
-       /**
-        * Write the provided `NetworkGraph` to the path provided at `FilesystemPersister`
-        * initialization, within a file called \"network_graph\"
+        * Construct a route from us (payer) to the target node (payee) via the given hops (which should
+        * exclude the payer, but include the payee). This may be useful, e.g., for probing the chosen path.
+        * 
+        * Re-uses logic from `find_route`, so the restrictions described there also apply here.
         */
-       public static Result_NoneErrorZ FilesystemPersister_persist_network_graph(java.lang.String data_dir, NetworkGraph network_graph) {
-               long ret = bindings.FilesystemPersister_persist_network_graph(data_dir, network_graph == null ? 0 : network_graph.ptr & ~1);
-               Reference.reachabilityFence(data_dir);
+       public static Result_RouteLightningErrorZ build_route_from_hops(byte[] our_node_pubkey, byte[][] hops, RouteParameters route_params, NetworkGraph network_graph, Logger logger, byte[] random_seed_bytes) {
+               long ret = bindings.build_route_from_hops(InternalUtils.check_arr_len(our_node_pubkey, 33), hops != null ? Arrays.stream(hops).map(hops_conv_8 -> InternalUtils.check_arr_len(hops_conv_8, 33)).toArray(byte[][]::new) : null, route_params == null ? 0 : route_params.ptr & ~1, network_graph == null ? 0 : network_graph.ptr & ~1, logger == null ? 0 : logger.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
+               Reference.reachabilityFence(our_node_pubkey);
+               Reference.reachabilityFence(hops);
+               Reference.reachabilityFence(route_params);
                Reference.reachabilityFence(network_graph);
+               Reference.reachabilityFence(logger);
+               Reference.reachabilityFence(random_seed_bytes);
                if (ret >= 0 && ret <= 4096) { return null; }
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
+               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
+               ret_hu_conv.ptrs_to.add(route_params);
                ret_hu_conv.ptrs_to.add(network_graph);
+               ret_hu_conv.ptrs_to.add(logger);
                return ret_hu_conv;
        }
 
@@ -449,9 +493,12 @@ public class UtilMethods {
         * may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
         * down
         * 
-        * `payment_hash` and `payment_secret` come from [`ChannelManager::create_inbound_payment`] or
-        * [`ChannelManager::create_inbound_payment_for_hash`]. These values can be retrieved from any
-        * participating node.
+        * `payment_hash` can be specified if you have a specific need for a custom payment hash (see the difference
+        * between [`ChannelManager::create_inbound_payment`] and [`ChannelManager::create_inbound_payment_for_hash`]).
+        * If `None` is provided for `payment_hash`, then one will be created.
+        * 
+        * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
+        * in excess of the current time.
         * 
         * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
         * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
@@ -459,14 +506,18 @@ public class UtilMethods {
         * 
         * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
         * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
+        * [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
+        * [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
         * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
+        * 
+        * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice(Option_u64Z amt_msat, java.lang.String description, byte[] payment_hash, byte[] payment_secret, PhantomRouteHints[] phantom_route_hints, KeysInterface keys_manager, org.ldk.enums.Currency network) {
-               long ret = bindings.create_phantom_invoice(amt_msat.ptr, description, InternalUtils.check_arr_len(payment_hash, 32), InternalUtils.check_arr_len(payment_secret, 32), phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr & ~1).toArray() : null, keys_manager == null ? 0 : keys_manager.ptr, network);
+       public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice(Option_u64Z amt_msat, @Nullable byte[] payment_hash, java.lang.String description, int invoice_expiry_delta_secs, PhantomRouteHints[] phantom_route_hints, KeysInterface keys_manager, org.ldk.enums.Currency network) {
+               long ret = bindings.create_phantom_invoice(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), description, invoice_expiry_delta_secs, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr & ~1).toArray() : null, keys_manager == null ? 0 : keys_manager.ptr, network);
                Reference.reachabilityFence(amt_msat);
-               Reference.reachabilityFence(description);
                Reference.reachabilityFence(payment_hash);
-               Reference.reachabilityFence(payment_secret);
+               Reference.reachabilityFence(description);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
                Reference.reachabilityFence(phantom_route_hints);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
@@ -492,9 +543,12 @@ public class UtilMethods {
         * 
         * `description_hash` is a SHA-256 hash of the description text
         * 
-        * `payment_hash` and `payment_secret` come from [`ChannelManager::create_inbound_payment`] or
-        * [`ChannelManager::create_inbound_payment_for_hash`]. These values can be retrieved from any
-        * participating node.
+        * `payment_hash` can be specified if you have a specific need for a custom payment hash (see the difference
+        * between [`ChannelManager::create_inbound_payment`] and [`ChannelManager::create_inbound_payment_for_hash`]).
+        * If `None` is provided for `payment_hash`, then one will be created.
+        * 
+        * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
+        * in excess of the current time.
         * 
         * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
         * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
@@ -502,14 +556,18 @@ public class UtilMethods {
         * 
         * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
         * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
+        * [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
+        * [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
         * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
+        * 
+        * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(Option_u64Z amt_msat, Sha256 description_hash, byte[] payment_hash, byte[] payment_secret, PhantomRouteHints[] phantom_route_hints, KeysInterface keys_manager, org.ldk.enums.Currency network) {
-               long ret = bindings.create_phantom_invoice_with_description_hash(amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr & ~1, InternalUtils.check_arr_len(payment_hash, 32), InternalUtils.check_arr_len(payment_secret, 32), phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr & ~1).toArray() : null, keys_manager == null ? 0 : keys_manager.ptr, network);
+       public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(Option_u64Z amt_msat, @Nullable byte[] payment_hash, int invoice_expiry_delta_secs, Sha256 description_hash, PhantomRouteHints[] phantom_route_hints, KeysInterface keys_manager, org.ldk.enums.Currency network) {
+               long ret = bindings.create_phantom_invoice_with_description_hash(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), invoice_expiry_delta_secs, description_hash == null ? 0 : description_hash.ptr & ~1, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr & ~1).toArray() : null, keys_manager == null ? 0 : keys_manager.ptr, network);
                Reference.reachabilityFence(amt_msat);
-               Reference.reachabilityFence(description_hash);
                Reference.reachabilityFence(payment_hash);
-               Reference.reachabilityFence(payment_secret);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
+               Reference.reachabilityFence(description_hash);
                Reference.reachabilityFence(phantom_route_hints);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
@@ -525,14 +583,18 @@ public class UtilMethods {
         * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
         * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
         * that the payment secret is valid when the invoice is paid.
+        * 
+        * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
+        * in excess of the current time.
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, java.lang.String description) {
-               long ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description);
+       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, java.lang.String description, int invoice_expiry_delta_secs) {
+               long ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description, invoice_expiry_delta_secs);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(description);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                ret_hu_conv.ptrs_to.add(channelmanager);
@@ -547,14 +609,18 @@ public class UtilMethods {
         * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
         * that the payment secret is valid when the invoice is paid.
         * Use this variant if you want to pass the `description_hash` to the invoice.
+        * 
+        * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
+        * in excess of the current time.
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, Sha256 description_hash) {
-               long ret = bindings.create_invoice_from_channelmanager_with_description_hash(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr & ~1);
+       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, Sha256 description_hash, int invoice_expiry_delta_secs) {
+               long ret = bindings.create_invoice_from_channelmanager_with_description_hash(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr & ~1, invoice_expiry_delta_secs);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(description_hash);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                ret_hu_conv.ptrs_to.add(channelmanager);
@@ -567,14 +633,15 @@ public class UtilMethods {
         * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
         * available and the current time is supplied by the caller.
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, Sha256 description_hash, long duration_since_epoch) {
-               long ret = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr & ~1, duration_since_epoch);
+       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, Sha256 description_hash, long duration_since_epoch, int invoice_expiry_delta_secs) {
+               long ret = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr & ~1, duration_since_epoch, invoice_expiry_delta_secs);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(description_hash);
                Reference.reachabilityFence(duration_since_epoch);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                ret_hu_conv.ptrs_to.add(channelmanager);
@@ -587,14 +654,15 @@ public class UtilMethods {
         * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
         * available and the current time is supplied by the caller.
         */
-       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, java.lang.String description, long duration_since_epoch) {
-               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description, duration_since_epoch);
+       public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch(ChannelManager channelmanager, KeysInterface keys_manager, org.ldk.enums.Currency network, Option_u64Z amt_msat, java.lang.String description, long duration_since_epoch, int invoice_expiry_delta_secs) {
+               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description, duration_since_epoch, invoice_expiry_delta_secs);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(keys_manager);
                Reference.reachabilityFence(network);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(description);
                Reference.reachabilityFence(duration_since_epoch);
+               Reference.reachabilityFence(invoice_expiry_delta_secs);
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                ret_hu_conv.ptrs_to.add(channelmanager);