X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-java;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FRecentPaymentDetails.java;h=895d56a7fc2e3ed7f279f531bbb8864677a626a4;hp=c543dd73eb802bcca6faed5c7dac4b01f12119b1;hb=07d5d868dfe064aadb28a7f7ca6002c16be9723d;hpb=32973ea2749f8efd05b543dd774763513013b38b diff --git a/src/main/java/org/ldk/structs/RecentPaymentDetails.java b/src/main/java/org/ldk/structs/RecentPaymentDetails.java index c543dd73..895d56a7 100644 --- a/src/main/java/org/ldk/structs/RecentPaymentDetails.java +++ b/src/main/java/org/ldk/structs/RecentPaymentDetails.java @@ -22,6 +22,9 @@ public class RecentPaymentDetails extends CommonBase { } static RecentPaymentDetails constr_from_ptr(long ptr) { bindings.LDKRecentPaymentDetails raw_val = bindings.LDKRecentPaymentDetails_ref_from_ptr(ptr); + if (raw_val.getClass() == bindings.LDKRecentPaymentDetails.AwaitingInvoice.class) { + return new AwaitingInvoice(ptr, (bindings.LDKRecentPaymentDetails.AwaitingInvoice)raw_val); + } if (raw_val.getClass() == bindings.LDKRecentPaymentDetails.Pending.class) { return new Pending(ptr, (bindings.LDKRecentPaymentDetails.Pending)raw_val); } @@ -34,10 +37,29 @@ public class RecentPaymentDetails extends CommonBase { assert false; return null; // Unreachable without extending the (internal) bindings interface } + /** + * When an invoice was requested and thus a payment has not yet been sent. + */ + public final static class AwaitingInvoice extends RecentPaymentDetails { + /** + * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify + * a payment and ensure idempotency in LDK. + */ + public final byte[] payment_id; + private AwaitingInvoice(long ptr, bindings.LDKRecentPaymentDetails.AwaitingInvoice obj) { + super(null, ptr); + this.payment_id = obj.payment_id; + } + } /** * When a payment is still being sent and awaiting successful delivery. */ public final static class Pending extends RecentPaymentDetails { + /** + * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify + * a payment and ensure idempotency in LDK. + */ + public final byte[] payment_id; /** * Hash of the payment that is currently being sent but has yet to be fulfilled or * abandoned. @@ -50,6 +72,7 @@ public class RecentPaymentDetails extends CommonBase { public final long total_msat; private Pending(long ptr, bindings.LDKRecentPaymentDetails.Pending obj) { super(null, ptr); + this.payment_id = obj.payment_id; this.payment_hash = obj.payment_hash; this.total_msat = obj.total_msat; } @@ -60,15 +83,21 @@ public class RecentPaymentDetails extends CommonBase { * payment is removed from tracking. */ public final static class Fulfilled extends RecentPaymentDetails { + /** + * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify + * a payment and ensure idempotency in LDK. + */ + public final byte[] payment_id; /** * Hash of the payment that was claimed. `None` for serializations of [`ChannelManager`] * made before LDK version 0.0.104. */ - public final org.ldk.structs.Option_PaymentHashZ payment_hash; + public final org.ldk.structs.Option_ThirtyTwoBytesZ payment_hash; private Fulfilled(long ptr, bindings.LDKRecentPaymentDetails.Fulfilled obj) { super(null, ptr); + this.payment_id = obj.payment_id; 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); + org.ldk.structs.Option_ThirtyTwoBytesZ payment_hash_hu_conv = org.ldk.structs.Option_ThirtyTwoBytesZ.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; } @@ -79,12 +108,18 @@ public class RecentPaymentDetails extends CommonBase { * pending HTLCs for this payment resolve and an [`Event::PaymentFailed`] is generated. */ public final static class Abandoned extends RecentPaymentDetails { + /** + * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify + * a payment and ensure idempotency in LDK. + */ + public final byte[] payment_id; /** * Hash of the payment that we have given up trying to send. */ public final byte[] payment_hash; private Abandoned(long ptr, bindings.LDKRecentPaymentDetails.Abandoned obj) { super(null, ptr); + this.payment_id = obj.payment_id; this.payment_hash = obj.payment_hash; } } @@ -106,11 +141,24 @@ public class RecentPaymentDetails extends CommonBase { return ret_hu_conv; } + /** + * Utility method to constructs a new AwaitingInvoice-variant RecentPaymentDetails + */ + public static RecentPaymentDetails awaiting_invoice(byte[] payment_id) { + long ret = bindings.RecentPaymentDetails_awaiting_invoice(InternalUtils.check_arr_len(payment_id, 32)); + Reference.reachabilityFence(payment_id); + if (ret >= 0 && ret <= 4096) { return null; } + org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + return ret_hu_conv; + } + /** * Utility method to constructs a new Pending-variant RecentPaymentDetails */ - public static RecentPaymentDetails pending(byte[] payment_hash, long total_msat) { - long ret = bindings.RecentPaymentDetails_pending(InternalUtils.check_arr_len(payment_hash, 32), total_msat); + public static RecentPaymentDetails pending(byte[] payment_id, byte[] payment_hash, long total_msat) { + long ret = bindings.RecentPaymentDetails_pending(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32), total_msat); + Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_hash); Reference.reachabilityFence(total_msat); if (ret >= 0 && ret <= 4096) { return null; } @@ -122,8 +170,9 @@ public class RecentPaymentDetails extends CommonBase { /** * Utility method to constructs a new Fulfilled-variant RecentPaymentDetails */ - public static RecentPaymentDetails fulfilled(org.ldk.structs.Option_PaymentHashZ payment_hash) { - long ret = bindings.RecentPaymentDetails_fulfilled(payment_hash.ptr); + public static RecentPaymentDetails fulfilled(byte[] payment_id, org.ldk.structs.Option_ThirtyTwoBytesZ payment_hash) { + long ret = bindings.RecentPaymentDetails_fulfilled(InternalUtils.check_arr_len(payment_id, 32), payment_hash.ptr); + Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_hash); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret); @@ -135,8 +184,9 @@ public class RecentPaymentDetails extends CommonBase { /** * Utility method to constructs a new Abandoned-variant RecentPaymentDetails */ - public static RecentPaymentDetails abandoned(byte[] payment_hash) { - long ret = bindings.RecentPaymentDetails_abandoned(InternalUtils.check_arr_len(payment_hash, 32)); + public static RecentPaymentDetails abandoned(byte[] payment_id, byte[] payment_hash) { + long ret = bindings.RecentPaymentDetails_abandoned(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32)); + Reference.reachabilityFence(payment_id); Reference.reachabilityFence(payment_hash); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);