}
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);
}
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.
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;
}
* 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;
}
* 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;
}
}
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; }
/**
* 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);
/**
* 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);