X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FEvent.java;fp=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FEvent.java;h=5142bf90b724832ae81abf72fec5253536cc00e7;hb=8fa2bcb208a51fa352d04981f1387d8bceced107;hp=582a151c6e9e0d26bb80f284a55c01049f56fbf8;hpb=7da1092518e5ea1518255a4473c178f52549fd81;p=ldk-java diff --git a/src/main/java/org/ldk/structs/Event.java b/src/main/java/org/ldk/structs/Event.java index 582a151c..5142bf90 100644 --- a/src/main/java/org/ldk/structs/Event.java +++ b/src/main/java/org/ldk/structs/Event.java @@ -82,6 +82,9 @@ public class Event extends CommonBase { if (raw_val.getClass() == bindings.LDKEvent.HTLCHandlingFailed.class) { return new HTLCHandlingFailed(ptr, (bindings.LDKEvent.HTLCHandlingFailed)raw_val); } + if (raw_val.getClass() == bindings.LDKEvent.BumpTransaction.class) { + return new BumpTransaction(ptr, (bindings.LDKEvent.BumpTransaction)raw_val); + } assert false; return null; // Unreachable without extending the (internal) bindings interface } @@ -168,7 +171,7 @@ public class Event extends CommonBase { * This field will always be filled in when the event was generated by LDK versions * 0.0.113 and above. * - * [phantom nodes]: crate::chain::keysinterface::PhantomKeysManager + * [phantom nodes]: crate::sign::PhantomKeysManager * * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None */ @@ -188,9 +191,28 @@ public class Event extends CommonBase { */ @Nullable public final org.ldk.structs.RecipientOnionFields onion_fields; /** - * The value, in thousandths of a satoshi, that this payment is for. + * The value, in thousandths of a satoshi, that this payment is claimable for. May be greater + * than the invoice amount. + * + * May be less than the invoice amount if [`ChannelConfig::accept_underpaying_htlcs`] is set + * and the previous hop took an extra fee. + * + * # Note + * If [`ChannelConfig::accept_underpaying_htlcs`] is set and you claim without verifying this + * field, you may lose money! + * + * [`ChannelConfig::accept_underpaying_htlcs`]: crate::util::config::ChannelConfig::accept_underpaying_htlcs */ public final long amount_msat; + /** + * The value, in thousands of a satoshi, that was skimmed off of this payment as an extra fee + * taken by our channel counterparty. + * + * Will always be 0 unless [`ChannelConfig::accept_underpaying_htlcs`] is set. + * + * [`ChannelConfig::accept_underpaying_htlcs`]: crate::util::config::ChannelConfig::accept_underpaying_htlcs + */ + public final long counterparty_skimmed_fee_msat; /** * Information for claiming this received payment, based on whether the purpose of the * payment is to pay an invoice or to send a spontaneous payment. @@ -225,6 +247,7 @@ public class Event extends CommonBase { if (onion_fields_hu_conv != null) { onion_fields_hu_conv.ptrs_to.add(this); }; this.onion_fields = onion_fields_hu_conv; this.amount_msat = obj.amount_msat; + this.counterparty_skimmed_fee_msat = obj.counterparty_skimmed_fee_msat; long purpose = obj.purpose; org.ldk.structs.PaymentPurpose purpose_hu_conv = org.ldk.structs.PaymentPurpose.constr_from_ptr(purpose); if (purpose_hu_conv != null) { purpose_hu_conv.ptrs_to.add(this); }; @@ -263,7 +286,7 @@ public class Event extends CommonBase { * This field will always be filled in when the event was generated by LDK versions * 0.0.113 and above. * - * [phantom nodes]: crate::chain::keysinterface::PhantomKeysManager + * [phantom nodes]: crate::sign::PhantomKeysManager * * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None */ @@ -274,7 +297,8 @@ public class Event extends CommonBase { */ public final byte[] payment_hash; /** - * The value, in thousandths of a satoshi, that this payment is for. + * The value, in thousandths of a satoshi, that this payment is for. May be greater than the + * invoice amount. */ public final long amount_msat; /** @@ -305,10 +329,8 @@ public class Event extends CommonBase { * The `payment_id` passed to [`ChannelManager::send_payment`]. * * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment - * - * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None */ - @Nullable public final byte[] payment_id; + public final org.ldk.structs.Option_PaymentIdZ payment_id; /** * The preimage to the hash given to ChannelManager::send_payment. * Note that this serves as a payment receipt, if you wish to have such a thing, you must @@ -335,7 +357,10 @@ public class Event extends CommonBase { public final org.ldk.structs.Option_u64Z fee_paid_msat; private PaymentSent(long ptr, bindings.LDKEvent.PaymentSent obj) { super(null, ptr); - this.payment_id = obj.payment_id; + long payment_id = obj.payment_id; + org.ldk.structs.Option_PaymentIdZ payment_id_hu_conv = org.ldk.structs.Option_PaymentIdZ.constr_from_ptr(payment_id); + if (payment_id_hu_conv != null) { payment_id_hu_conv.ptrs_to.add(this); }; + this.payment_id = payment_id_hu_conv; this.payment_preimage = obj.payment_preimage; this.payment_hash = obj.payment_hash; long fee_paid_msat = obj.fee_paid_msat; @@ -399,11 +424,11 @@ public class Event extends CommonBase { /** * The hash that was given to [`ChannelManager::send_payment`]. * - * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment + * This will be `Some` for all payments which completed on LDK 0.0.104 or later. * - * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None + * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment */ - @Nullable public final byte[] payment_hash; + public final org.ldk.structs.Option_PaymentHashZ payment_hash; /** * The payment path that was successful. * @@ -413,7 +438,10 @@ public class Event extends CommonBase { private PaymentPathSuccessful(long ptr, bindings.LDKEvent.PaymentPathSuccessful obj) { super(null, ptr); this.payment_id = obj.payment_id; - this.payment_hash = obj.payment_hash; + long payment_hash = obj.payment_hash; + org.ldk.structs.Option_PaymentHashZ payment_hash_hu_conv = org.ldk.structs.Option_PaymentHashZ.constr_from_ptr(payment_hash); + if (payment_hash_hu_conv != null) { payment_hash_hu_conv.ptrs_to.add(this); }; + this.payment_hash = payment_hash_hu_conv; long path = obj.path; org.ldk.structs.Path path_hu_conv = null; if (path < 0 || path > 4096) { path_hu_conv = new org.ldk.structs.Path(null, path); } if (path_hu_conv != null) { path_hu_conv.ptrs_to.add(this); }; @@ -436,12 +464,12 @@ public class Event extends CommonBase { /** * The `payment_id` passed to [`ChannelManager::send_payment`]. * + * This will be `Some` for all payment paths which failed on LDK 0.0.103 or later. + * * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment - * - * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None */ - @Nullable public final byte[] payment_id; + public final org.ldk.structs.Option_PaymentIdZ payment_id; /** * The hash that was given to [`ChannelManager::send_payment`]. * @@ -478,7 +506,10 @@ public class Event extends CommonBase { public final org.ldk.structs.Option_u64Z short_channel_id; private PaymentPathFailed(long ptr, bindings.LDKEvent.PaymentPathFailed obj) { super(null, ptr); - this.payment_id = obj.payment_id; + long payment_id = obj.payment_id; + org.ldk.structs.Option_PaymentIdZ payment_id_hu_conv = org.ldk.structs.Option_PaymentIdZ.constr_from_ptr(payment_id); + if (payment_id_hu_conv != null) { payment_id_hu_conv.ptrs_to.add(this); }; + this.payment_id = payment_id_hu_conv; this.payment_hash = obj.payment_hash; this.payment_failed_permanently = obj.payment_failed_permanently; long failure = obj.failure; @@ -623,6 +654,7 @@ public class Event extends CommonBase { /** * How many msats the payer intended to route to the next node. Depending on the reason you are * intercepting this payment, you might take a fee by forwarding less than this amount. + * Forwarding less than this amount may break compatibility with LDK versions prior to 0.0.116. * * Note that LDK will NOT check that expected fees were factored into this value. You MUST * check that whatever fee you want has been included here or subtract it as required. Further, @@ -987,6 +1019,26 @@ public class Event extends CommonBase { this.failed_next_destination = failed_next_destination_hu_conv; } } + /** + * Indicates that a transaction originating from LDK needs to have its fee bumped. This event + * requires confirmed external funds to be readily available to spend. + * + * LDK does not currently generate this event unless the + * [`ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx`] config flag is set to true. + * It is limited to the scope of channels with anchor outputs. + * + * [`ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx`]: crate::util::config::ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx + */ + public final static class BumpTransaction extends Event { + public final org.ldk.structs.BumpTransactionEvent bump_transaction; + private BumpTransaction(long ptr, bindings.LDKEvent.BumpTransaction obj) { + super(null, ptr); + long bump_transaction = obj.bump_transaction; + org.ldk.structs.BumpTransactionEvent bump_transaction_hu_conv = org.ldk.structs.BumpTransactionEvent.constr_from_ptr(bump_transaction); + if (bump_transaction_hu_conv != null) { bump_transaction_hu_conv.ptrs_to.add(this); }; + this.bump_transaction = bump_transaction_hu_conv; + } + } long clone_ptr() { long ret = bindings.Event_clone_ptr(this.ptr); Reference.reachabilityFence(this); @@ -1024,12 +1076,13 @@ public class Event extends CommonBase { /** * Utility method to constructs a new PaymentClaimable-variant Event */ - public static Event payment_claimable(byte[] receiver_node_id, byte[] payment_hash, org.ldk.structs.RecipientOnionFields onion_fields, long amount_msat, org.ldk.structs.PaymentPurpose purpose, byte[] via_channel_id, org.ldk.structs.Option_u128Z via_user_channel_id, org.ldk.structs.Option_u32Z claim_deadline) { - long ret = bindings.Event_payment_claimable(InternalUtils.check_arr_len(receiver_node_id, 33), InternalUtils.check_arr_len(payment_hash, 32), onion_fields == null ? 0 : onion_fields.ptr, amount_msat, purpose.ptr, InternalUtils.check_arr_len(via_channel_id, 32), via_user_channel_id.ptr, claim_deadline.ptr); + public static Event payment_claimable(byte[] receiver_node_id, byte[] payment_hash, org.ldk.structs.RecipientOnionFields onion_fields, long amount_msat, long counterparty_skimmed_fee_msat, org.ldk.structs.PaymentPurpose purpose, byte[] via_channel_id, org.ldk.structs.Option_u128Z via_user_channel_id, org.ldk.structs.Option_u32Z claim_deadline) { + long ret = bindings.Event_payment_claimable(InternalUtils.check_arr_len(receiver_node_id, 33), InternalUtils.check_arr_len(payment_hash, 32), onion_fields == null ? 0 : onion_fields.ptr, amount_msat, counterparty_skimmed_fee_msat, purpose.ptr, InternalUtils.check_arr_len(via_channel_id, 32), via_user_channel_id.ptr, claim_deadline.ptr); Reference.reachabilityFence(receiver_node_id); Reference.reachabilityFence(payment_hash); Reference.reachabilityFence(onion_fields); Reference.reachabilityFence(amount_msat); + Reference.reachabilityFence(counterparty_skimmed_fee_msat); Reference.reachabilityFence(purpose); Reference.reachabilityFence(via_channel_id); Reference.reachabilityFence(via_user_channel_id); @@ -1063,8 +1116,8 @@ public class Event extends CommonBase { /** * Utility method to constructs a new PaymentSent-variant Event */ - public static Event payment_sent(byte[] payment_id, byte[] payment_preimage, byte[] payment_hash, org.ldk.structs.Option_u64Z fee_paid_msat) { - long ret = bindings.Event_payment_sent(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_preimage, 32), InternalUtils.check_arr_len(payment_hash, 32), fee_paid_msat.ptr); + public static Event payment_sent(org.ldk.structs.Option_PaymentIdZ payment_id, byte[] payment_preimage, byte[] payment_hash, org.ldk.structs.Option_u64Z fee_paid_msat) { + long ret = bindings.Event_payment_sent(payment_id.ptr, InternalUtils.check_arr_len(payment_preimage, 32), InternalUtils.check_arr_len(payment_hash, 32), fee_paid_msat.ptr); Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_preimage); Reference.reachabilityFence(payment_hash); @@ -1072,6 +1125,7 @@ public class Event extends CommonBase { if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.Event ret_hu_conv = org.ldk.structs.Event.constr_from_ptr(ret); if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(payment_id); }; if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(fee_paid_msat); }; return ret_hu_conv; } @@ -1094,14 +1148,15 @@ public class Event extends CommonBase { /** * Utility method to constructs a new PaymentPathSuccessful-variant Event */ - public static Event payment_path_successful(byte[] payment_id, byte[] payment_hash, org.ldk.structs.Path path) { - long ret = bindings.Event_payment_path_successful(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32), path == null ? 0 : path.ptr); + public static Event payment_path_successful(byte[] payment_id, org.ldk.structs.Option_PaymentHashZ payment_hash, org.ldk.structs.Path path) { + long ret = bindings.Event_payment_path_successful(InternalUtils.check_arr_len(payment_id, 32), payment_hash.ptr, path == null ? 0 : path.ptr); Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_hash); Reference.reachabilityFence(path); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.Event ret_hu_conv = org.ldk.structs.Event.constr_from_ptr(ret); if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(payment_hash); }; if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(path); }; return ret_hu_conv; } @@ -1109,8 +1164,8 @@ public class Event extends CommonBase { /** * Utility method to constructs a new PaymentPathFailed-variant Event */ - public static Event payment_path_failed(byte[] payment_id, byte[] payment_hash, boolean payment_failed_permanently, org.ldk.structs.PathFailure failure, org.ldk.structs.Path path, org.ldk.structs.Option_u64Z short_channel_id) { - long ret = bindings.Event_payment_path_failed(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32), payment_failed_permanently, failure.ptr, path == null ? 0 : path.ptr, short_channel_id.ptr); + public static Event payment_path_failed(org.ldk.structs.Option_PaymentIdZ payment_id, byte[] payment_hash, boolean payment_failed_permanently, org.ldk.structs.PathFailure failure, org.ldk.structs.Path path, org.ldk.structs.Option_u64Z short_channel_id) { + long ret = bindings.Event_payment_path_failed(payment_id.ptr, InternalUtils.check_arr_len(payment_hash, 32), payment_failed_permanently, failure.ptr, path == null ? 0 : path.ptr, short_channel_id.ptr); Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_hash); Reference.reachabilityFence(payment_failed_permanently); @@ -1120,6 +1175,7 @@ public class Event extends CommonBase { if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.Event ret_hu_conv = org.ldk.structs.Event.constr_from_ptr(ret); if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(payment_id); }; if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(failure); }; if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(path); }; if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(short_channel_id); }; @@ -1309,6 +1365,19 @@ public class Event extends CommonBase { return ret_hu_conv; } + /** + * Utility method to constructs a new BumpTransaction-variant Event + */ + public static Event bump_transaction(org.ldk.structs.BumpTransactionEvent a) { + long ret = bindings.Event_bump_transaction(a.ptr); + Reference.reachabilityFence(a); + if (ret >= 0 && ret <= 4096) { return null; } + org.ldk.structs.Event ret_hu_conv = org.ldk.structs.Event.constr_from_ptr(ret); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); }; + return ret_hu_conv; + } + /** * Checks if two Events contain equal inner contents. * This ignores pointers and is_owned flags and looks at the values in fields.