949cb55678f9c1ea2ea4d625287f4c858e52b6aa
[ldk-java] / c_sharp / src / org / ldk / structs / ChannelTypeFeatures.cs
1 using org.ldk.impl;
2 using org.ldk.enums;
3 using org.ldk.util;
4 using System;
5
6 namespace org { namespace ldk { namespace structs {
7
8
9 /**
10  * Features used within the channel_type field in an OpenChannel message.
11  * 
12  * A channel is always of some known \"type\", describing the transaction formats used and the exact
13  * semantics of our interaction with our peer.
14  * 
15  * Note that because a channel is a specific type which is proposed by the opener and accepted by
16  * the counterparty, only required features are allowed here.
17  * 
18  * This is serialized differently from other feature types - it is not prefixed by a length, and
19  * thus must only appear inside a TLV where its length is known in advance.
20  */
21 public class ChannelTypeFeatures : CommonBase {
22         internal ChannelTypeFeatures(object _dummy, long ptr) : base(ptr) { }
23         ~ChannelTypeFeatures() {
24                 if (ptr != 0) { bindings.ChannelTypeFeatures_free(ptr); }
25         }
26
27         /**
28          * Checks if two ChannelTypeFeaturess contain equal inner contents.
29          * This ignores pointers and is_owned flags and looks at the values in fields.
30          * Two objects with NULL inner values will be considered "equal" here.
31          */
32         public bool eq(org.ldk.structs.ChannelTypeFeatures b) {
33                 bool ret = bindings.ChannelTypeFeatures_eq(this.ptr, b == null ? 0 : b.ptr);
34                 GC.KeepAlive(this);
35                 GC.KeepAlive(b);
36                 if (this != null) { this.ptrs_to.AddLast(b); };
37                 return ret;
38         }
39
40         public override bool Equals(object o) {
41                 if (!(o is ChannelTypeFeatures)) return false;
42                 return this.eq((ChannelTypeFeatures)o);
43         }
44         internal long clone_ptr() {
45                 long ret = bindings.ChannelTypeFeatures_clone_ptr(this.ptr);
46                 GC.KeepAlive(this);
47                 return ret;
48         }
49
50         /**
51          * Creates a copy of the ChannelTypeFeatures
52          */
53         public ChannelTypeFeatures clone() {
54                 long ret = bindings.ChannelTypeFeatures_clone(this.ptr);
55                 GC.KeepAlive(this);
56                 if (ret >= 0 && ret <= 4096) { return null; }
57                 org.ldk.structs.ChannelTypeFeatures ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.ChannelTypeFeatures(null, ret); }
58                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
59                 return ret_hu_conv;
60         }
61
62         /**
63          * Create a blank Features with no features set
64          */
65         public static ChannelTypeFeatures empty() {
66                 long ret = bindings.ChannelTypeFeatures_empty();
67                 if (ret >= 0 && ret <= 4096) { return null; }
68                 org.ldk.structs.ChannelTypeFeatures ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.ChannelTypeFeatures(null, ret); }
69                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
70                 return ret_hu_conv;
71         }
72
73         /**
74          * Returns true if this `Features` object contains required features unknown by `other`.
75          */
76         public bool requires_unknown_bits_from(org.ldk.structs.ChannelTypeFeatures other) {
77                 bool ret = bindings.ChannelTypeFeatures_requires_unknown_bits_from(this.ptr, other == null ? 0 : other.ptr);
78                 GC.KeepAlive(this);
79                 GC.KeepAlive(other);
80                 if (this != null) { this.ptrs_to.AddLast(other); };
81                 return ret;
82         }
83
84         /**
85          * Returns true if this `Features` object contains unknown feature flags which are set as
86          * \"required\".
87          */
88         public bool requires_unknown_bits() {
89                 bool ret = bindings.ChannelTypeFeatures_requires_unknown_bits(this.ptr);
90                 GC.KeepAlive(this);
91                 return ret;
92         }
93
94         /**
95          * Sets a required custom feature bit. Errors if `bit` is outside the custom range as defined
96          * by [bLIP 2] or if it is a known `T` feature.
97          * 
98          * Note: Required bits are even. If an odd bit is given, then the corresponding even bit will
99          * be set instead (i.e., `bit - 1`).
100          * 
101          * [bLIP 2]: https://github.com/lightning/blips/blob/master/blip-0002.md#feature-bits
102          */
103         public Result_NoneNoneZ set_required_custom_bit(long bit) {
104                 long ret = bindings.ChannelTypeFeatures_set_required_custom_bit(this.ptr, bit);
105                 GC.KeepAlive(this);
106                 GC.KeepAlive(bit);
107                 if (ret >= 0 && ret <= 4096) { return null; }
108                 Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
109                 return ret_hu_conv;
110         }
111
112         /**
113          * Sets an optional custom feature bit. Errors if `bit` is outside the custom range as defined
114          * by [bLIP 2] or if it is a known `T` feature.
115          * 
116          * Note: Optional bits are odd. If an even bit is given, then the corresponding odd bit will be
117          * set instead (i.e., `bit + 1`).
118          * 
119          * [bLIP 2]: https://github.com/lightning/blips/blob/master/blip-0002.md#feature-bits
120          */
121         public Result_NoneNoneZ set_optional_custom_bit(long bit) {
122                 long ret = bindings.ChannelTypeFeatures_set_optional_custom_bit(this.ptr, bit);
123                 GC.KeepAlive(this);
124                 GC.KeepAlive(bit);
125                 if (ret >= 0 && ret <= 4096) { return null; }
126                 Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
127                 return ret_hu_conv;
128         }
129
130         /**
131          * Serialize the ChannelTypeFeatures object into a byte array which can be read by ChannelTypeFeatures_read
132          */
133         public byte[] write() {
134                 byte[] ret = bindings.ChannelTypeFeatures_write(this.ptr);
135                 GC.KeepAlive(this);
136                 return ret;
137         }
138
139         /**
140          * Read a ChannelTypeFeatures from a byte array, created by ChannelTypeFeatures_write
141          */
142         public static Result_ChannelTypeFeaturesDecodeErrorZ read(byte[] ser) {
143                 long ret = bindings.ChannelTypeFeatures_read(ser);
144                 GC.KeepAlive(ser);
145                 if (ret >= 0 && ret <= 4096) { return null; }
146                 Result_ChannelTypeFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelTypeFeaturesDecodeErrorZ.constr_from_ptr(ret);
147                 return ret_hu_conv;
148         }
149
150         /**
151          * Set this feature as optional.
152          */
153         public void set_static_remote_key_optional() {
154                 bindings.ChannelTypeFeatures_set_static_remote_key_optional(this.ptr);
155                 GC.KeepAlive(this);
156         }
157
158         /**
159          * Set this feature as required.
160          */
161         public void set_static_remote_key_required() {
162                 bindings.ChannelTypeFeatures_set_static_remote_key_required(this.ptr);
163                 GC.KeepAlive(this);
164         }
165
166         /**
167          * Checks if this feature is supported.
168          */
169         public bool supports_static_remote_key() {
170                 bool ret = bindings.ChannelTypeFeatures_supports_static_remote_key(this.ptr);
171                 GC.KeepAlive(this);
172                 return ret;
173         }
174
175         /**
176          * Checks if this feature is required.
177          */
178         public bool requires_static_remote_key() {
179                 bool ret = bindings.ChannelTypeFeatures_requires_static_remote_key(this.ptr);
180                 GC.KeepAlive(this);
181                 return ret;
182         }
183
184         /**
185          * Set this feature as optional.
186          */
187         public void set_anchors_nonzero_fee_htlc_tx_optional() {
188                 bindings.ChannelTypeFeatures_set_anchors_nonzero_fee_htlc_tx_optional(this.ptr);
189                 GC.KeepAlive(this);
190         }
191
192         /**
193          * Set this feature as required.
194          */
195         public void set_anchors_nonzero_fee_htlc_tx_required() {
196                 bindings.ChannelTypeFeatures_set_anchors_nonzero_fee_htlc_tx_required(this.ptr);
197                 GC.KeepAlive(this);
198         }
199
200         /**
201          * Checks if this feature is supported.
202          */
203         public bool supports_anchors_nonzero_fee_htlc_tx() {
204                 bool ret = bindings.ChannelTypeFeatures_supports_anchors_nonzero_fee_htlc_tx(this.ptr);
205                 GC.KeepAlive(this);
206                 return ret;
207         }
208
209         /**
210          * Checks if this feature is required.
211          */
212         public bool requires_anchors_nonzero_fee_htlc_tx() {
213                 bool ret = bindings.ChannelTypeFeatures_requires_anchors_nonzero_fee_htlc_tx(this.ptr);
214                 GC.KeepAlive(this);
215                 return ret;
216         }
217
218         /**
219          * Set this feature as optional.
220          */
221         public void set_anchors_zero_fee_htlc_tx_optional() {
222                 bindings.ChannelTypeFeatures_set_anchors_zero_fee_htlc_tx_optional(this.ptr);
223                 GC.KeepAlive(this);
224         }
225
226         /**
227          * Set this feature as required.
228          */
229         public void set_anchors_zero_fee_htlc_tx_required() {
230                 bindings.ChannelTypeFeatures_set_anchors_zero_fee_htlc_tx_required(this.ptr);
231                 GC.KeepAlive(this);
232         }
233
234         /**
235          * Checks if this feature is supported.
236          */
237         public bool supports_anchors_zero_fee_htlc_tx() {
238                 bool ret = bindings.ChannelTypeFeatures_supports_anchors_zero_fee_htlc_tx(this.ptr);
239                 GC.KeepAlive(this);
240                 return ret;
241         }
242
243         /**
244          * Checks if this feature is required.
245          */
246         public bool requires_anchors_zero_fee_htlc_tx() {
247                 bool ret = bindings.ChannelTypeFeatures_requires_anchors_zero_fee_htlc_tx(this.ptr);
248                 GC.KeepAlive(this);
249                 return ret;
250         }
251
252         /**
253          * Set this feature as optional.
254          */
255         public void set_scid_privacy_optional() {
256                 bindings.ChannelTypeFeatures_set_scid_privacy_optional(this.ptr);
257                 GC.KeepAlive(this);
258         }
259
260         /**
261          * Set this feature as required.
262          */
263         public void set_scid_privacy_required() {
264                 bindings.ChannelTypeFeatures_set_scid_privacy_required(this.ptr);
265                 GC.KeepAlive(this);
266         }
267
268         /**
269          * Checks if this feature is supported.
270          */
271         public bool supports_scid_privacy() {
272                 bool ret = bindings.ChannelTypeFeatures_supports_scid_privacy(this.ptr);
273                 GC.KeepAlive(this);
274                 return ret;
275         }
276
277         /**
278          * Checks if this feature is required.
279          */
280         public bool requires_scid_privacy() {
281                 bool ret = bindings.ChannelTypeFeatures_requires_scid_privacy(this.ptr);
282                 GC.KeepAlive(this);
283                 return ret;
284         }
285
286         /**
287          * Set this feature as optional.
288          */
289         public void set_zero_conf_optional() {
290                 bindings.ChannelTypeFeatures_set_zero_conf_optional(this.ptr);
291                 GC.KeepAlive(this);
292         }
293
294         /**
295          * Set this feature as required.
296          */
297         public void set_zero_conf_required() {
298                 bindings.ChannelTypeFeatures_set_zero_conf_required(this.ptr);
299                 GC.KeepAlive(this);
300         }
301
302         /**
303          * Checks if this feature is supported.
304          */
305         public bool supports_zero_conf() {
306                 bool ret = bindings.ChannelTypeFeatures_supports_zero_conf(this.ptr);
307                 GC.KeepAlive(this);
308                 return ret;
309         }
310
311         /**
312          * Checks if this feature is required.
313          */
314         public bool requires_zero_conf() {
315                 bool ret = bindings.ChannelTypeFeatures_requires_zero_conf(this.ptr);
316                 GC.KeepAlive(this);
317                 return ret;
318         }
319
320 }
321 } } }