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 * Indicates an error on the client's part (usually some variant of attempting to use too-low or
14 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
15 public class APIError extends CommonBase {
16 private APIError(Object _dummy, long ptr) { super(ptr); }
17 @Override @SuppressWarnings("deprecation")
18 protected void finalize() throws Throwable {
20 if (ptr != 0) { bindings.APIError_free(ptr); }
22 static APIError constr_from_ptr(long ptr) {
23 bindings.LDKAPIError raw_val = bindings.LDKAPIError_ref_from_ptr(ptr);
24 if (raw_val.getClass() == bindings.LDKAPIError.APIMisuseError.class) {
25 return new APIMisuseError(ptr, (bindings.LDKAPIError.APIMisuseError)raw_val);
27 if (raw_val.getClass() == bindings.LDKAPIError.FeeRateTooHigh.class) {
28 return new FeeRateTooHigh(ptr, (bindings.LDKAPIError.FeeRateTooHigh)raw_val);
30 if (raw_val.getClass() == bindings.LDKAPIError.RouteError.class) {
31 return new RouteError(ptr, (bindings.LDKAPIError.RouteError)raw_val);
33 if (raw_val.getClass() == bindings.LDKAPIError.ChannelUnavailable.class) {
34 return new ChannelUnavailable(ptr, (bindings.LDKAPIError.ChannelUnavailable)raw_val);
36 if (raw_val.getClass() == bindings.LDKAPIError.MonitorUpdateFailed.class) {
37 return new MonitorUpdateFailed(ptr, (bindings.LDKAPIError.MonitorUpdateFailed)raw_val);
39 if (raw_val.getClass() == bindings.LDKAPIError.IncompatibleShutdownScript.class) {
40 return new IncompatibleShutdownScript(ptr, (bindings.LDKAPIError.IncompatibleShutdownScript)raw_val);
42 assert false; return null; // Unreachable without extending the (internal) bindings interface
45 public final static class APIMisuseError extends APIError {
47 * A human-readable error message
49 public final String err;
50 private APIMisuseError(long ptr, bindings.LDKAPIError.APIMisuseError obj) {
55 public final static class FeeRateTooHigh extends APIError {
57 * A human-readable error message
59 public final String err;
61 * The feerate which was too high.
63 public final int feerate;
64 private FeeRateTooHigh(long ptr, bindings.LDKAPIError.FeeRateTooHigh obj) {
67 this.feerate = obj.feerate;
70 public final static class RouteError extends APIError {
72 * A human-readable error message
74 public final String err;
75 private RouteError(long ptr, bindings.LDKAPIError.RouteError obj) {
80 public final static class ChannelUnavailable extends APIError {
82 * A human-readable error message
84 public final String err;
85 private ChannelUnavailable(long ptr, bindings.LDKAPIError.ChannelUnavailable obj) {
90 public final static class MonitorUpdateFailed extends APIError {
91 private MonitorUpdateFailed(long ptr, bindings.LDKAPIError.MonitorUpdateFailed obj) {
95 public final static class IncompatibleShutdownScript extends APIError {
97 * The incompatible shutdown script.
99 public final ShutdownScript script;
100 private IncompatibleShutdownScript(long ptr, bindings.LDKAPIError.IncompatibleShutdownScript obj) {
102 long script = obj.script;
103 ShutdownScript script_hu_conv = new ShutdownScript(null, script);
104 script_hu_conv.ptrs_to.add(this);
105 this.script = script_hu_conv;
109 * Creates a copy of the APIError
111 public APIError clone() {
112 long ret = bindings.APIError_clone(this.ptr);
113 if (ret < 1024) { return null; }
114 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
115 ret_hu_conv.ptrs_to.add(this);
120 * Utility method to constructs a new APIMisuseError-variant APIError
122 public static APIError apimisuse_error(java.lang.String err) {
123 long ret = bindings.APIError_apimisuse_error(err);
124 if (ret < 1024) { return null; }
125 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
126 ret_hu_conv.ptrs_to.add(ret_hu_conv);
131 * Utility method to constructs a new FeeRateTooHigh-variant APIError
133 public static APIError fee_rate_too_high(java.lang.String err, int feerate) {
134 long ret = bindings.APIError_fee_rate_too_high(err, feerate);
135 if (ret < 1024) { return null; }
136 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
137 ret_hu_conv.ptrs_to.add(ret_hu_conv);
142 * Utility method to constructs a new RouteError-variant APIError
144 public static APIError route_error(java.lang.String err) {
145 long ret = bindings.APIError_route_error(err);
146 if (ret < 1024) { return null; }
147 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
148 ret_hu_conv.ptrs_to.add(ret_hu_conv);
153 * Utility method to constructs a new ChannelUnavailable-variant APIError
155 public static APIError channel_unavailable(java.lang.String err) {
156 long ret = bindings.APIError_channel_unavailable(err);
157 if (ret < 1024) { return null; }
158 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
159 ret_hu_conv.ptrs_to.add(ret_hu_conv);
164 * Utility method to constructs a new MonitorUpdateFailed-variant APIError
166 public static APIError monitor_update_failed() {
167 long ret = bindings.APIError_monitor_update_failed();
168 if (ret < 1024) { return null; }
169 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
170 ret_hu_conv.ptrs_to.add(ret_hu_conv);
175 * Utility method to constructs a new IncompatibleShutdownScript-variant APIError
177 public static APIError incompatible_shutdown_script(ShutdownScript script) {
178 long ret = bindings.APIError_incompatible_shutdown_script(script == null ? 0 : script.ptr & ~1);
179 if (ret < 1024) { return null; }
180 APIError ret_hu_conv = APIError.constr_from_ptr(ret);
181 ret_hu_conv.ptrs_to.add(ret_hu_conv);
182 ret_hu_conv.ptrs_to.add(script);