1 package org.ldk.structs;
3 import org.ldk.impl.bindings;
4 import org.ldk.enums.*;
6 import java.util.Arrays;
7 import java.lang.ref.Reference;
8 import javax.annotation.Nullable;
12 * Possible BOLT 12 Offers messages sent and received via an [`OnionMessage`].
14 * [`OnionMessage`]: crate::ln::msgs::OnionMessage
16 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
17 public class OffersMessage extends CommonBase {
18 private OffersMessage(Object _dummy, long ptr) { super(ptr); }
19 @Override @SuppressWarnings("deprecation")
20 protected void finalize() throws Throwable {
22 if (ptr != 0) { bindings.OffersMessage_free(ptr); }
24 static OffersMessage constr_from_ptr(long ptr) {
25 bindings.LDKOffersMessage raw_val = bindings.LDKOffersMessage_ref_from_ptr(ptr);
26 if (raw_val.getClass() == bindings.LDKOffersMessage.InvoiceRequest.class) {
27 return new InvoiceRequest(ptr, (bindings.LDKOffersMessage.InvoiceRequest)raw_val);
29 if (raw_val.getClass() == bindings.LDKOffersMessage.Invoice.class) {
30 return new Invoice(ptr, (bindings.LDKOffersMessage.Invoice)raw_val);
32 if (raw_val.getClass() == bindings.LDKOffersMessage.InvoiceError.class) {
33 return new InvoiceError(ptr, (bindings.LDKOffersMessage.InvoiceError)raw_val);
35 assert false; return null; // Unreachable without extending the (internal) bindings interface
39 * A request for a [`Bolt12Invoice`] for a particular [`Offer`].
41 * [`Offer`]: crate::offers::offer::Offer
43 public final static class InvoiceRequest extends OffersMessage {
44 public final org.ldk.structs.InvoiceRequest invoice_request;
45 private InvoiceRequest(long ptr, bindings.LDKOffersMessage.InvoiceRequest obj) {
47 long invoice_request = obj.invoice_request;
48 org.ldk.structs.InvoiceRequest invoice_request_hu_conv = null; if (invoice_request < 0 || invoice_request > 4096) { invoice_request_hu_conv = new org.ldk.structs.InvoiceRequest(null, invoice_request); }
49 if (invoice_request_hu_conv != null) { invoice_request_hu_conv.ptrs_to.add(this); };
50 this.invoice_request = invoice_request_hu_conv;
54 * A [`Bolt12Invoice`] sent in response to an [`InvoiceRequest`] or a [`Refund`].
56 * [`Refund`]: crate::offers::refund::Refund
58 public final static class Invoice extends OffersMessage {
59 public final org.ldk.structs.Bolt12Invoice invoice;
60 private Invoice(long ptr, bindings.LDKOffersMessage.Invoice obj) {
62 long invoice = obj.invoice;
63 org.ldk.structs.Bolt12Invoice invoice_hu_conv = null; if (invoice < 0 || invoice > 4096) { invoice_hu_conv = new org.ldk.structs.Bolt12Invoice(null, invoice); }
64 if (invoice_hu_conv != null) { invoice_hu_conv.ptrs_to.add(this); };
65 this.invoice = invoice_hu_conv;
69 * An error from handling an [`OffersMessage`].
71 public final static class InvoiceError extends OffersMessage {
72 public final org.ldk.structs.InvoiceError invoice_error;
73 private InvoiceError(long ptr, bindings.LDKOffersMessage.InvoiceError obj) {
75 long invoice_error = obj.invoice_error;
76 org.ldk.structs.InvoiceError invoice_error_hu_conv = null; if (invoice_error < 0 || invoice_error > 4096) { invoice_error_hu_conv = new org.ldk.structs.InvoiceError(null, invoice_error); }
77 if (invoice_error_hu_conv != null) { invoice_error_hu_conv.ptrs_to.add(this); };
78 this.invoice_error = invoice_error_hu_conv;
82 long ret = bindings.OffersMessage_clone_ptr(this.ptr);
83 Reference.reachabilityFence(this);
88 * Creates a copy of the OffersMessage
90 public OffersMessage clone() {
91 long ret = bindings.OffersMessage_clone(this.ptr);
92 Reference.reachabilityFence(this);
93 if (ret >= 0 && ret <= 4096) { return null; }
94 org.ldk.structs.OffersMessage ret_hu_conv = org.ldk.structs.OffersMessage.constr_from_ptr(ret);
95 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
100 * Utility method to constructs a new InvoiceRequest-variant OffersMessage
102 public static OffersMessage invoice_request(org.ldk.structs.InvoiceRequest a) {
103 long ret = bindings.OffersMessage_invoice_request(a == null ? 0 : a.ptr);
104 Reference.reachabilityFence(a);
105 if (ret >= 0 && ret <= 4096) { return null; }
106 org.ldk.structs.OffersMessage ret_hu_conv = org.ldk.structs.OffersMessage.constr_from_ptr(ret);
107 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
108 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); };
113 * Utility method to constructs a new Invoice-variant OffersMessage
115 public static OffersMessage invoice(org.ldk.structs.Bolt12Invoice a) {
116 long ret = bindings.OffersMessage_invoice(a == null ? 0 : a.ptr);
117 Reference.reachabilityFence(a);
118 if (ret >= 0 && ret <= 4096) { return null; }
119 org.ldk.structs.OffersMessage ret_hu_conv = org.ldk.structs.OffersMessage.constr_from_ptr(ret);
120 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
121 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); };
126 * Utility method to constructs a new InvoiceError-variant OffersMessage
128 public static OffersMessage invoice_error(org.ldk.structs.InvoiceError a) {
129 long ret = bindings.OffersMessage_invoice_error(a == null ? 0 : a.ptr);
130 Reference.reachabilityFence(a);
131 if (ret >= 0 && ret <= 4096) { return null; }
132 org.ldk.structs.OffersMessage ret_hu_conv = org.ldk.structs.OffersMessage.constr_from_ptr(ret);
133 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
134 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); };
139 * Serialize the OffersMessage object into a byte array which can be read by OffersMessage_read
141 public byte[] write() {
142 byte[] ret = bindings.OffersMessage_write(this.ptr);
143 Reference.reachabilityFence(this);
148 * Read a OffersMessage from a byte array, created by OffersMessage_write
150 public static Result_OffersMessageDecodeErrorZ read(byte[] ser, long arg_a, org.ldk.structs.Logger arg_b) {
151 long ret = bindings.OffersMessage_read(ser, arg_a, arg_b.ptr);
152 Reference.reachabilityFence(ser);
153 Reference.reachabilityFence(arg_a);
154 Reference.reachabilityFence(arg_b);
155 if (ret >= 0 && ret <= 4096) { return null; }
156 Result_OffersMessageDecodeErrorZ ret_hu_conv = Result_OffersMessageDecodeErrorZ.constr_from_ptr(ret);
157 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(arg_b); };