1 package org.ldk.structs;
3 import org.ldk.impl.bindings;
4 import org.ldk.enums.*;
6 import java.util.Arrays;
7 import javax.annotation.Nullable;
11 * Represents an syntactically correct Invoice for a payment on the lightning network,
12 * but without the signature information.
13 * De- and encoding should not lead to information loss but may lead to different hashes.
15 * For methods without docs see the corresponding methods in `Invoice`.
17 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
18 public class RawInvoice extends CommonBase {
19 RawInvoice(Object _dummy, long ptr) { super(ptr); }
20 @Override @SuppressWarnings("deprecation")
21 protected void finalize() throws Throwable {
23 if (ptr != 0) { bindings.RawInvoice_free(ptr); }
29 public RawDataPart get_data() {
30 long ret = bindings.RawInvoice_get_data(this.ptr);
31 if (ret < 1024) { return null; }
32 RawDataPart ret_hu_conv = new RawDataPart(null, ret);
33 ret_hu_conv.ptrs_to.add(this);
40 public void set_data(RawDataPart val) {
41 bindings.RawInvoice_set_data(this.ptr, val == null ? 0 : val.ptr & ~1);
42 this.ptrs_to.add(val);
46 * Checks if two RawInvoices contain equal inner contents.
47 * This ignores pointers and is_owned flags and looks at the values in fields.
48 * Two objects with NULL inner values will be considered "equal" here.
50 public boolean eq(RawInvoice b) {
51 boolean ret = bindings.RawInvoice_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
57 * Creates a copy of the RawInvoice
59 public RawInvoice clone() {
60 long ret = bindings.RawInvoice_clone(this.ptr);
61 if (ret < 1024) { return null; }
62 RawInvoice ret_hu_conv = new RawInvoice(null, ret);
63 ret_hu_conv.ptrs_to.add(this);
68 * Calculate the hash of the encoded `RawInvoice`
70 public byte[] hash() {
71 byte[] ret = bindings.RawInvoice_hash(this.ptr);
76 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
79 public Sha256 payment_hash() {
80 long ret = bindings.RawInvoice_payment_hash(this.ptr);
81 if (ret < 1024) { return null; }
82 Sha256 ret_hu_conv = new Sha256(null, ret);
83 ret_hu_conv.ptrs_to.add(this);
88 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
91 public Description description() {
92 long ret = bindings.RawInvoice_description(this.ptr);
93 if (ret < 1024) { return null; }
94 Description ret_hu_conv = new Description(null, ret);
95 ret_hu_conv.ptrs_to.add(this);
100 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
103 public PayeePubKey payee_pub_key() {
104 long ret = bindings.RawInvoice_payee_pub_key(this.ptr);
105 if (ret < 1024) { return null; }
106 PayeePubKey ret_hu_conv = new PayeePubKey(null, ret);
107 ret_hu_conv.ptrs_to.add(this);
112 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
115 public Sha256 description_hash() {
116 long ret = bindings.RawInvoice_description_hash(this.ptr);
117 if (ret < 1024) { return null; }
118 Sha256 ret_hu_conv = new Sha256(null, ret);
119 ret_hu_conv.ptrs_to.add(this);
124 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
127 public ExpiryTime expiry_time() {
128 long ret = bindings.RawInvoice_expiry_time(this.ptr);
129 if (ret < 1024) { return null; }
130 ExpiryTime ret_hu_conv = new ExpiryTime(null, ret);
131 ret_hu_conv.ptrs_to.add(this);
136 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
139 public MinFinalCltvExpiry min_final_cltv_expiry() {
140 long ret = bindings.RawInvoice_min_final_cltv_expiry(this.ptr);
141 if (ret < 1024) { return null; }
142 MinFinalCltvExpiry ret_hu_conv = new MinFinalCltvExpiry(null, ret);
143 ret_hu_conv.ptrs_to.add(this);
148 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
151 public byte[] payment_secret() {
152 byte[] ret = bindings.RawInvoice_payment_secret(this.ptr);
157 * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
160 public InvoiceFeatures features() {
161 long ret = bindings.RawInvoice_features(this.ptr);
162 if (ret < 1024) { return null; }
163 InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
164 ret_hu_conv.ptrs_to.add(this);
168 public PrivateRoute[] private_routes() {
169 long[] ret = bindings.RawInvoice_private_routes(this.ptr);
170 PrivateRoute[] ret_conv_14_arr = new PrivateRoute[ret.length];
171 for (int o = 0; o < ret.length; o++) {
172 long ret_conv_14 = ret[o];
173 PrivateRoute ret_conv_14_hu_conv = new PrivateRoute(null, ret_conv_14);
174 ret_conv_14_hu_conv.ptrs_to.add(this);
175 ret_conv_14_arr[o] = ret_conv_14_hu_conv;
177 return ret_conv_14_arr;
180 public Option_u64Z amount_pico_btc() {
181 long ret = bindings.RawInvoice_amount_pico_btc(this.ptr);
182 if (ret < 1024) { return null; }
183 Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
184 ret_hu_conv.ptrs_to.add(this);
188 public Currency currency() {
189 Currency ret = bindings.RawInvoice_currency(this.ptr);