6 namespace org { namespace ldk { namespace structs {
9 * Used by [`ChannelManager::list_recent_payments`] to express the status of recent payments.
10 * These include payments that have yet to find a successful path, or have unresolved HTLCs.
12 public class RecentPaymentDetails : CommonBase {
13 protected RecentPaymentDetails(object _dummy, long ptr) : base(ptr) { }
14 ~RecentPaymentDetails() {
15 if (ptr != 0) { bindings.RecentPaymentDetails_free(ptr); }
18 internal static RecentPaymentDetails constr_from_ptr(long ptr) {
19 long raw_ty = bindings.LDKRecentPaymentDetails_ty_from_ptr(ptr);
21 case 0: return new RecentPaymentDetails_AwaitingInvoice(ptr);
22 case 1: return new RecentPaymentDetails_Pending(ptr);
23 case 2: return new RecentPaymentDetails_Fulfilled(ptr);
24 case 3: return new RecentPaymentDetails_Abandoned(ptr);
26 throw new ArgumentException("Impossible enum variant");
30 /** A RecentPaymentDetails of type AwaitingInvoice */
31 public class RecentPaymentDetails_AwaitingInvoice : RecentPaymentDetails {
33 * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify
34 * a payment and ensure idempotency in LDK.
36 public byte[] payment_id;
37 internal RecentPaymentDetails_AwaitingInvoice(long ptr) : base(null, ptr) {
38 long payment_id = bindings.LDKRecentPaymentDetails_AwaitingInvoice_get_payment_id(ptr);
39 byte[] payment_id_conv = InternalUtils.decodeUint8Array(payment_id);
40 this.payment_id = payment_id_conv;
43 /** A RecentPaymentDetails of type Pending */
44 public class RecentPaymentDetails_Pending : RecentPaymentDetails {
46 * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify
47 * a payment and ensure idempotency in LDK.
49 public byte[] payment_id;
51 * Hash of the payment that is currently being sent but has yet to be fulfilled or
54 public byte[] payment_hash;
56 * Total amount (in msat, excluding fees) across all paths for this payment,
57 * not just the amount currently inflight.
59 public long total_msat;
60 internal RecentPaymentDetails_Pending(long ptr) : base(null, ptr) {
61 long payment_id = bindings.LDKRecentPaymentDetails_Pending_get_payment_id(ptr);
62 byte[] payment_id_conv = InternalUtils.decodeUint8Array(payment_id);
63 this.payment_id = payment_id_conv;
64 long payment_hash = bindings.LDKRecentPaymentDetails_Pending_get_payment_hash(ptr);
65 byte[] payment_hash_conv = InternalUtils.decodeUint8Array(payment_hash);
66 this.payment_hash = payment_hash_conv;
67 this.total_msat = bindings.LDKRecentPaymentDetails_Pending_get_total_msat(ptr);
70 /** A RecentPaymentDetails of type Fulfilled */
71 public class RecentPaymentDetails_Fulfilled : RecentPaymentDetails {
73 * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify
74 * a payment and ensure idempotency in LDK.
76 public byte[] payment_id;
78 * Hash of the payment that was claimed. `None` for serializations of [`ChannelManager`]
79 * made before LDK version 0.0.104.
81 public Option_ThirtyTwoBytesZ payment_hash;
82 internal RecentPaymentDetails_Fulfilled(long ptr) : base(null, ptr) {
83 long payment_id = bindings.LDKRecentPaymentDetails_Fulfilled_get_payment_id(ptr);
84 byte[] payment_id_conv = InternalUtils.decodeUint8Array(payment_id);
85 this.payment_id = payment_id_conv;
86 long payment_hash = bindings.LDKRecentPaymentDetails_Fulfilled_get_payment_hash(ptr);
87 org.ldk.structs.Option_ThirtyTwoBytesZ payment_hash_hu_conv = org.ldk.structs.Option_ThirtyTwoBytesZ.constr_from_ptr(payment_hash);
88 if (payment_hash_hu_conv != null) { payment_hash_hu_conv.ptrs_to.AddLast(this); };
89 this.payment_hash = payment_hash_hu_conv;
92 /** A RecentPaymentDetails of type Abandoned */
93 public class RecentPaymentDetails_Abandoned : RecentPaymentDetails {
95 * A user-provided identifier in [`ChannelManager::send_payment`] used to uniquely identify
96 * a payment and ensure idempotency in LDK.
98 public byte[] payment_id;
100 * Hash of the payment that we have given up trying to send.
102 public byte[] payment_hash;
103 internal RecentPaymentDetails_Abandoned(long ptr) : base(null, ptr) {
104 long payment_id = bindings.LDKRecentPaymentDetails_Abandoned_get_payment_id(ptr);
105 byte[] payment_id_conv = InternalUtils.decodeUint8Array(payment_id);
106 this.payment_id = payment_id_conv;
107 long payment_hash = bindings.LDKRecentPaymentDetails_Abandoned_get_payment_hash(ptr);
108 byte[] payment_hash_conv = InternalUtils.decodeUint8Array(payment_hash);
109 this.payment_hash = payment_hash_conv;
112 internal long clone_ptr() {
113 long ret = bindings.RecentPaymentDetails_clone_ptr(this.ptr);
119 * Creates a copy of the RecentPaymentDetails
121 public RecentPaymentDetails clone() {
122 long ret = bindings.RecentPaymentDetails_clone(this.ptr);
124 if (ret >= 0 && ret <= 4096) { return null; }
125 org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);
126 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
131 * Utility method to constructs a new AwaitingInvoice-variant RecentPaymentDetails
133 public static RecentPaymentDetails awaiting_invoice(byte[] payment_id) {
134 long ret = bindings.RecentPaymentDetails_awaiting_invoice(InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_id, 32)));
135 GC.KeepAlive(payment_id);
136 if (ret >= 0 && ret <= 4096) { return null; }
137 org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);
138 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
143 * Utility method to constructs a new Pending-variant RecentPaymentDetails
145 public static RecentPaymentDetails pending(byte[] payment_id, byte[] payment_hash, long total_msat) {
146 long ret = bindings.RecentPaymentDetails_pending(InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_id, 32)), InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_hash, 32)), total_msat);
147 GC.KeepAlive(payment_id);
148 GC.KeepAlive(payment_hash);
149 GC.KeepAlive(total_msat);
150 if (ret >= 0 && ret <= 4096) { return null; }
151 org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);
152 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
157 * Utility method to constructs a new Fulfilled-variant RecentPaymentDetails
159 public static RecentPaymentDetails fulfilled(byte[] payment_id, org.ldk.structs.Option_ThirtyTwoBytesZ payment_hash) {
160 long ret = bindings.RecentPaymentDetails_fulfilled(InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_id, 32)), payment_hash.ptr);
161 GC.KeepAlive(payment_id);
162 GC.KeepAlive(payment_hash);
163 if (ret >= 0 && ret <= 4096) { return null; }
164 org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);
165 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
166 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(payment_hash); };
171 * Utility method to constructs a new Abandoned-variant RecentPaymentDetails
173 public static RecentPaymentDetails abandoned(byte[] payment_id, byte[] payment_hash) {
174 long ret = bindings.RecentPaymentDetails_abandoned(InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_id, 32)), InternalUtils.encodeUint8Array(InternalUtils.check_arr_len(payment_hash, 32)));
175 GC.KeepAlive(payment_id);
176 GC.KeepAlive(payment_hash);
177 if (ret >= 0 && ret <= 4096) { return null; }
178 org.ldk.structs.RecentPaymentDetails ret_hu_conv = org.ldk.structs.RecentPaymentDetails.constr_from_ptr(ret);
179 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };