Update auto-generated bindings
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class TxCreationKeys;
6 class ChannelPublicKeys;
7 class HTLCOutputInCommitment;
8 class ChannelTransactionParameters;
9 class CounterpartyChannelTransactionParameters;
10 class DirectedChannelTransactionParameters;
11 class HolderCommitmentTransaction;
12 class BuiltCommitmentTransaction;
13 class ClosingTransaction;
14 class TrustedClosingTransaction;
15 class CommitmentTransaction;
16 class TrustedCommitmentTransaction;
17 class ShutdownScript;
18 class InvalidShutdownScript;
19 class BackgroundProcessor;
20 class ChannelManagerPersister;
21 class RouteHop;
22 class Route;
23 class RouteHint;
24 class RouteHintHop;
25 class BroadcasterInterface;
26 class ConfirmationTarget;
27 class FeeEstimator;
28 class BestBlock;
29 class AccessError;
30 class Access;
31 class Listen;
32 class Confirm;
33 class Watch;
34 class Filter;
35 class WatchedOutput;
36 class PaymentPurpose;
37 class ClosureReason;
38 class Event;
39 class MessageSendEvent;
40 class MessageSendEventsProvider;
41 class EventsProvider;
42 class EventHandler;
43 class InitFeatures;
44 class NodeFeatures;
45 class ChannelFeatures;
46 class InvoiceFeatures;
47 class DelayedPaymentOutputDescriptor;
48 class StaticPaymentOutputDescriptor;
49 class SpendableOutputDescriptor;
50 class BaseSign;
51 class Sign;
52 class KeysInterface;
53 class InMemorySigner;
54 class KeysManager;
55 class FilesystemPersister;
56 class ChannelManager;
57 class ChainParameters;
58 class CounterpartyForwardingInfo;
59 class ChannelCounterparty;
60 class ChannelDetails;
61 class PaymentSendFailure;
62 class ChannelManagerReadArgs;
63 class ChannelHandshakeConfig;
64 class ChannelHandshakeLimits;
65 class ChannelConfig;
66 class UserConfig;
67 class APIError;
68 class OutPoint;
69 class CustomMessageReader;
70 class Type;
71 class Invoice;
72 class SignedRawInvoice;
73 class RawInvoice;
74 class RawDataPart;
75 class PositiveTimestamp;
76 class SiPrefix;
77 class Currency;
78 class Sha256;
79 class Description;
80 class PayeePubKey;
81 class ExpiryTime;
82 class MinFinalCltvExpiry;
83 class Fallback;
84 class InvoiceSignature;
85 class PrivateRoute;
86 class CreationError;
87 class SemanticError;
88 class SignOrCreationError;
89 class ChannelMonitorUpdate;
90 class ChannelMonitorUpdateErr;
91 class MonitorUpdateError;
92 class MonitorEvent;
93 class HTLCUpdate;
94 class Balance;
95 class ChannelMonitor;
96 class Persist;
97 class CustomMessageHandler;
98 class IgnoringMessageHandler;
99 class ErroringMessageHandler;
100 class MessageHandler;
101 class SocketDescriptor;
102 class PeerHandleError;
103 class PeerManager;
104 class NetworkGraph;
105 class ReadOnlyNetworkGraph;
106 class NetworkUpdate;
107 class NetGraphMsgHandler;
108 class DirectionalChannelInfo;
109 class ChannelInfo;
110 class RoutingFees;
111 class NodeAnnouncementInfo;
112 class NodeInfo;
113 class DecodeError;
114 class Init;
115 class ErrorMessage;
116 class Ping;
117 class Pong;
118 class OpenChannel;
119 class AcceptChannel;
120 class FundingCreated;
121 class FundingSigned;
122 class FundingLocked;
123 class Shutdown;
124 class ClosingSignedFeeRange;
125 class ClosingSigned;
126 class UpdateAddHTLC;
127 class UpdateFulfillHTLC;
128 class UpdateFailHTLC;
129 class UpdateFailMalformedHTLC;
130 class CommitmentSigned;
131 class RevokeAndACK;
132 class UpdateFee;
133 class DataLossProtect;
134 class ChannelReestablish;
135 class AnnouncementSignatures;
136 class NetAddress;
137 class UnsignedNodeAnnouncement;
138 class NodeAnnouncement;
139 class UnsignedChannelAnnouncement;
140 class ChannelAnnouncement;
141 class UnsignedChannelUpdate;
142 class ChannelUpdate;
143 class QueryChannelRange;
144 class ReplyChannelRange;
145 class QueryShortChannelIds;
146 class ReplyShortChannelIdsEnd;
147 class GossipTimestampFilter;
148 class ErrorAction;
149 class LightningError;
150 class CommitmentUpdate;
151 class ChannelMessageHandler;
152 class RoutingMessageHandler;
153 class Level;
154 class Logger;
155 class ChainMonitor;
156 class CVec_SpendableOutputDescriptorZ;
157 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
158 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
159 class CResult_HTLCUpdateDecodeErrorZ;
160 class C2Tuple_SignatureCVec_SignatureZZ;
161 class CVec_C2Tuple_u32TxOutZZ;
162 class CResult_ChannelInfoDecodeErrorZ;
163 class CResult_FundingCreatedDecodeErrorZ;
164 class CResult_ChannelAnnouncementDecodeErrorZ;
165 class CResult_PositiveTimestampCreationErrorZ;
166 class CResult_CVec_u8ZPeerHandleErrorZ;
167 class CResult_InvoiceFeaturesDecodeErrorZ;
168 class COption_NetworkUpdateZ;
169 class COption_u64Z;
170 class CResult_TxOutAccessErrorZ;
171 class CResult_TrustedClosingTransactionNoneZ;
172 class CResult_ChannelMonitorUpdateDecodeErrorZ;
173 class C2Tuple_PublicKeyTypeZ;
174 class CResult_NetAddressDecodeErrorZ;
175 class CResult_ChannelReestablishDecodeErrorZ;
176 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
177 class CResult_ReplyChannelRangeDecodeErrorZ;
178 class CResult_CommitmentSignedDecodeErrorZ;
179 class CVec_UpdateAddHTLCZ;
180 class CResult_GossipTimestampFilterDecodeErrorZ;
181 class COption_u32Z;
182 class CResult_InitFeaturesDecodeErrorZ;
183 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
184 class CResult_InvoiceSignOrCreationErrorZ;
185 class COption_FilterZ;
186 class CResult_CommitmentTransactionDecodeErrorZ;
187 class COption_C2Tuple_usizeTransactionZZ;
188 class CResult_TransactionNoneZ;
189 class CResult_SignedRawInvoiceNoneZ;
190 class CResult_ExpiryTimeCreationErrorZ;
191 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
192 class CResult_PingDecodeErrorZ;
193 class CVec_TransactionOutputsZ;
194 class CResult_ErrorMessageDecodeErrorZ;
195 class CResult_OpenChannelDecodeErrorZ;
196 class CVec_CVec_u8ZZ;
197 class CResult_SecretKeyErrorZ;
198 class CResult_ShutdownScriptDecodeErrorZ;
199 class CResult_InvoiceNoneZ;
200 class CResult_QueryChannelRangeDecodeErrorZ;
201 class CResult_TxCreationKeysDecodeErrorZ;
202 class C2Tuple_usizeTransactionZ;
203 class CResult_ChannelFeaturesDecodeErrorZ;
204 class CVec_ChannelMonitorZ;
205 class CVec_TransactionZ;
206 class CResult_UpdateFeeDecodeErrorZ;
207 class CResult_RouteHopDecodeErrorZ;
208 class CResult_NodeAnnouncementDecodeErrorZ;
209 class CVec_BalanceZ;
210 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
211 class CResult_boolLightningErrorZ;
212 class CResult_TxCreationKeysErrorZ;
213 class C2Tuple_BlockHashChannelMonitorZ;
214 class CResult_FundingSignedDecodeErrorZ;
215 class CResult_ShutdownScriptInvalidShutdownScriptZ;
216 class CResult_RecoverableSignatureNoneZ;
217 class CResult_NodeAnnouncementInfoDecodeErrorZ;
218 class CResult_NetAddressu8Z;
219 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
220 class CVec_UpdateFailMalformedHTLCZ;
221 class CResult_NetworkGraphDecodeErrorZ;
222 class CVec_RouteHopZ;
223 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
224 class CResult_NonePaymentSendFailureZ;
225 class CResult_RouteLightningErrorZ;
226 class CResult_ChannelPublicKeysDecodeErrorZ;
227 class CVec_u8Z;
228 class CResult_NodeInfoDecodeErrorZ;
229 class CResult_ClosingSignedDecodeErrorZ;
230 class CResult_HolderCommitmentTransactionDecodeErrorZ;
231 class CVec_CResult_NoneAPIErrorZZ;
232 class CResult_SignatureNoneZ;
233 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
234 class CResult_InitDecodeErrorZ;
235 class CResult_OutPointDecodeErrorZ;
236 class CVec_ChannelDetailsZ;
237 class CResult_SignDecodeErrorZ;
238 class CVec_MessageSendEventZ;
239 class C2Tuple_OutPointScriptZ;
240 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
241 class CVec_NodeAnnouncementZ;
242 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
243 class CVec_TxidZ;
244 class CResult_NoneMonitorUpdateErrorZ;
245 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
246 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
247 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
248 class CResult_CVec_CVec_u8ZZNoneZ;
249 class C2Tuple_PaymentHashPaymentSecretZ;
250 class COption_AccessZ;
251 class C2Tuple_BlockHashChannelManagerZ;
252 class CResult_ChannelTransactionParametersDecodeErrorZ;
253 class CResult_AcceptChannelDecodeErrorZ;
254 class CVec_SignatureZ;
255 class CVec_u64Z;
256 class CResult_PongDecodeErrorZ;
257 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
258 class CResult_StringErrorZ;
259 class CResult_NoneErrorZ;
260 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
261 class CVec_RouteHintZ;
262 class COption_u16Z;
263 class CVec_CVec_RouteHopZZ;
264 class CResult_TrustedCommitmentTransactionNoneZ;
265 class CResult_NoneLightningErrorZ;
266 class CResult_NonePeerHandleErrorZ;
267 class CResult_CVec_SignatureZNoneZ;
268 class CResult_DescriptionCreationErrorZ;
269 class CVec_C2Tuple_PublicKeyTypeZZ;
270 class CResult_RoutingFeesDecodeErrorZ;
271 class CResult_PayeePubKeyErrorZ;
272 class CResult_QueryShortChannelIdsDecodeErrorZ;
273 class CResult_InvoiceSemanticErrorZ;
274 class CResult_UpdateAddHTLCDecodeErrorZ;
275 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
276 class CResult_NoneAPIErrorZ;
277 class CVec_NetAddressZ;
278 class CVec_C2Tuple_usizeTransactionZZ;
279 class CVec_PublicKeyZ;
280 class COption_TypeZ;
281 class CResult_COption_TypeZDecodeErrorZ;
282 class CResult_DirectionalChannelInfoDecodeErrorZ;
283 class C2Tuple_u32TxOutZ;
284 class CResult_UpdateFailHTLCDecodeErrorZ;
285 class CResult_ChannelConfigDecodeErrorZ;
286 class CVec_PrivateRouteZ;
287 class CResult_SpendableOutputDescriptorDecodeErrorZ;
288 class CResult_RevokeAndACKDecodeErrorZ;
289 class CResult_UnsignedChannelUpdateDecodeErrorZ;
290 class CResult_ShutdownDecodeErrorZ;
291 class CVec_EventZ;
292 class CResult_NoneSemanticErrorZ;
293 class CVec_MonitorEventZ;
294 class CVec_C2Tuple_u32ScriptZZ;
295 class CResult_NoneChannelMonitorUpdateErrZ;
296 class CResult_PaymentHashPaymentSendFailureZ;
297 class CResult_SiPrefixNoneZ;
298 class CResult_PublicKeyErrorZ;
299 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
300 class CResult_NoneNoneZ;
301 class CResult_PrivateRouteCreationErrorZ;
302 class CResult_boolPeerHandleErrorZ;
303 class CVec_APIErrorZ;
304 class CResult_ChannelUpdateDecodeErrorZ;
305 class CVec_UpdateFulfillHTLCZ;
306 class CResult_AnnouncementSignaturesDecodeErrorZ;
307 class CResult_UpdateFulfillHTLCDecodeErrorZ;
308 class CResult_NodeFeaturesDecodeErrorZ;
309 class CResult_InMemorySignerDecodeErrorZ;
310 class CResult_PaymentSecretAPIErrorZ;
311 class C2Tuple_u32ScriptZ;
312 class CResult_CResult_NetAddressu8ZDecodeErrorZ;
313 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
314 class CResult_RouteDecodeErrorZ;
315 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
316 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
317 class CVec_TxOutZ;
318 class CVec_UpdateFailHTLCZ;
319 class CResult_FundingLockedDecodeErrorZ;
320
321 class Str {
322 private:
323         LDKStr self;
324 public:
325         Str(const Str&) = delete;
326         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
327         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
328         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
329         ~Str() { Str_free(self); }
330         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
331         LDKStr* operator &() { return &self; }
332         LDKStr* operator ->() { return &self; }
333         const LDKStr* operator &() const { return &self; }
334         const LDKStr* operator ->() const { return &self; }
335 };
336 class TxCreationKeys {
337 private:
338         LDKTxCreationKeys self;
339 public:
340         TxCreationKeys(const TxCreationKeys&) = delete;
341         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
342         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
343         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
344         ~TxCreationKeys() { TxCreationKeys_free(self); }
345         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
346         LDKTxCreationKeys* operator &() { return &self; }
347         LDKTxCreationKeys* operator ->() { return &self; }
348         const LDKTxCreationKeys* operator &() const { return &self; }
349         const LDKTxCreationKeys* operator ->() const { return &self; }
350 };
351 class ChannelPublicKeys {
352 private:
353         LDKChannelPublicKeys self;
354 public:
355         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
356         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
357         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
358         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
359         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
360         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
361         LDKChannelPublicKeys* operator &() { return &self; }
362         LDKChannelPublicKeys* operator ->() { return &self; }
363         const LDKChannelPublicKeys* operator &() const { return &self; }
364         const LDKChannelPublicKeys* operator ->() const { return &self; }
365 };
366 class HTLCOutputInCommitment {
367 private:
368         LDKHTLCOutputInCommitment self;
369 public:
370         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
371         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
372         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
373         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
374         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
375         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
376         LDKHTLCOutputInCommitment* operator &() { return &self; }
377         LDKHTLCOutputInCommitment* operator ->() { return &self; }
378         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
379         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
380 };
381 class ChannelTransactionParameters {
382 private:
383         LDKChannelTransactionParameters self;
384 public:
385         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
386         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
387         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
388         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
389         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
390         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
391         LDKChannelTransactionParameters* operator &() { return &self; }
392         LDKChannelTransactionParameters* operator ->() { return &self; }
393         const LDKChannelTransactionParameters* operator &() const { return &self; }
394         const LDKChannelTransactionParameters* operator ->() const { return &self; }
395 };
396 class CounterpartyChannelTransactionParameters {
397 private:
398         LDKCounterpartyChannelTransactionParameters self;
399 public:
400         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
401         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
402         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
403         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
404         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
405         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
406         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
407         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
408         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
409         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
410 };
411 class DirectedChannelTransactionParameters {
412 private:
413         LDKDirectedChannelTransactionParameters self;
414 public:
415         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
416         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
417         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
418         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
419         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
420         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
421         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
422         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
423         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
424         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
425 };
426 class HolderCommitmentTransaction {
427 private:
428         LDKHolderCommitmentTransaction self;
429 public:
430         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
431         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
432         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
433         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
434         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
435         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
436         LDKHolderCommitmentTransaction* operator &() { return &self; }
437         LDKHolderCommitmentTransaction* operator ->() { return &self; }
438         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
439         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
440 };
441 class BuiltCommitmentTransaction {
442 private:
443         LDKBuiltCommitmentTransaction self;
444 public:
445         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
446         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
447         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
448         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
449         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
450         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
451         LDKBuiltCommitmentTransaction* operator &() { return &self; }
452         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
453         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
454         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
455 };
456 class ClosingTransaction {
457 private:
458         LDKClosingTransaction self;
459 public:
460         ClosingTransaction(const ClosingTransaction&) = delete;
461         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
462         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
463         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
464         ~ClosingTransaction() { ClosingTransaction_free(self); }
465         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
466         LDKClosingTransaction* operator &() { return &self; }
467         LDKClosingTransaction* operator ->() { return &self; }
468         const LDKClosingTransaction* operator &() const { return &self; }
469         const LDKClosingTransaction* operator ->() const { return &self; }
470 };
471 class TrustedClosingTransaction {
472 private:
473         LDKTrustedClosingTransaction self;
474 public:
475         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
476         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
477         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
478         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
479         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
480         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
481         LDKTrustedClosingTransaction* operator &() { return &self; }
482         LDKTrustedClosingTransaction* operator ->() { return &self; }
483         const LDKTrustedClosingTransaction* operator &() const { return &self; }
484         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
485 };
486 class CommitmentTransaction {
487 private:
488         LDKCommitmentTransaction self;
489 public:
490         CommitmentTransaction(const CommitmentTransaction&) = delete;
491         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
492         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
493         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
494         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
495         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
496         LDKCommitmentTransaction* operator &() { return &self; }
497         LDKCommitmentTransaction* operator ->() { return &self; }
498         const LDKCommitmentTransaction* operator &() const { return &self; }
499         const LDKCommitmentTransaction* operator ->() const { return &self; }
500 };
501 class TrustedCommitmentTransaction {
502 private:
503         LDKTrustedCommitmentTransaction self;
504 public:
505         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
506         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
507         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
508         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
509         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
510         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
511         LDKTrustedCommitmentTransaction* operator &() { return &self; }
512         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
513         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
514         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
515 };
516 class ShutdownScript {
517 private:
518         LDKShutdownScript self;
519 public:
520         ShutdownScript(const ShutdownScript&) = delete;
521         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
522         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
523         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
524         ~ShutdownScript() { ShutdownScript_free(self); }
525         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
526         LDKShutdownScript* operator &() { return &self; }
527         LDKShutdownScript* operator ->() { return &self; }
528         const LDKShutdownScript* operator &() const { return &self; }
529         const LDKShutdownScript* operator ->() const { return &self; }
530 };
531 class InvalidShutdownScript {
532 private:
533         LDKInvalidShutdownScript self;
534 public:
535         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
536         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
537         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
538         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
539         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
540         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
541         LDKInvalidShutdownScript* operator &() { return &self; }
542         LDKInvalidShutdownScript* operator ->() { return &self; }
543         const LDKInvalidShutdownScript* operator &() const { return &self; }
544         const LDKInvalidShutdownScript* operator ->() const { return &self; }
545 };
546 class BackgroundProcessor {
547 private:
548         LDKBackgroundProcessor self;
549 public:
550         BackgroundProcessor(const BackgroundProcessor&) = delete;
551         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
552         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
553         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
554         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
555         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
556         LDKBackgroundProcessor* operator &() { return &self; }
557         LDKBackgroundProcessor* operator ->() { return &self; }
558         const LDKBackgroundProcessor* operator &() const { return &self; }
559         const LDKBackgroundProcessor* operator ->() const { return &self; }
560 };
561 class ChannelManagerPersister {
562 private:
563         LDKChannelManagerPersister self;
564 public:
565         ChannelManagerPersister(const ChannelManagerPersister&) = delete;
566         ChannelManagerPersister(ChannelManagerPersister&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerPersister)); }
567         ChannelManagerPersister(LDKChannelManagerPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerPersister)); }
568         operator LDKChannelManagerPersister() && { LDKChannelManagerPersister res = self; memset(&self, 0, sizeof(LDKChannelManagerPersister)); return res; }
569         ~ChannelManagerPersister() { ChannelManagerPersister_free(self); }
570         ChannelManagerPersister& operator=(ChannelManagerPersister&& o) { ChannelManagerPersister_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerPersister)); return *this; }
571         LDKChannelManagerPersister* operator &() { return &self; }
572         LDKChannelManagerPersister* operator ->() { return &self; }
573         const LDKChannelManagerPersister* operator &() const { return &self; }
574         const LDKChannelManagerPersister* operator ->() const { return &self; }
575         /**
576          *  Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
577          *  (which will cause the [`BackgroundProcessor`] which called this method to exit.
578          * 
579          *  [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
580          */
581         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
582 };
583 class RouteHop {
584 private:
585         LDKRouteHop self;
586 public:
587         RouteHop(const RouteHop&) = delete;
588         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
589         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
590         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
591         ~RouteHop() { RouteHop_free(self); }
592         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
593         LDKRouteHop* operator &() { return &self; }
594         LDKRouteHop* operator ->() { return &self; }
595         const LDKRouteHop* operator &() const { return &self; }
596         const LDKRouteHop* operator ->() const { return &self; }
597 };
598 class Route {
599 private:
600         LDKRoute self;
601 public:
602         Route(const Route&) = delete;
603         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
604         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
605         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
606         ~Route() { Route_free(self); }
607         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
608         LDKRoute* operator &() { return &self; }
609         LDKRoute* operator ->() { return &self; }
610         const LDKRoute* operator &() const { return &self; }
611         const LDKRoute* operator ->() const { return &self; }
612 };
613 class RouteHint {
614 private:
615         LDKRouteHint self;
616 public:
617         RouteHint(const RouteHint&) = delete;
618         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
619         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
620         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
621         ~RouteHint() { RouteHint_free(self); }
622         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
623         LDKRouteHint* operator &() { return &self; }
624         LDKRouteHint* operator ->() { return &self; }
625         const LDKRouteHint* operator &() const { return &self; }
626         const LDKRouteHint* operator ->() const { return &self; }
627 };
628 class RouteHintHop {
629 private:
630         LDKRouteHintHop self;
631 public:
632         RouteHintHop(const RouteHintHop&) = delete;
633         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
634         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
635         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
636         ~RouteHintHop() { RouteHintHop_free(self); }
637         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
638         LDKRouteHintHop* operator &() { return &self; }
639         LDKRouteHintHop* operator ->() { return &self; }
640         const LDKRouteHintHop* operator &() const { return &self; }
641         const LDKRouteHintHop* operator ->() const { return &self; }
642 };
643 class BroadcasterInterface {
644 private:
645         LDKBroadcasterInterface self;
646 public:
647         BroadcasterInterface(const BroadcasterInterface&) = delete;
648         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
649         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
650         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
651         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
652         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
653         LDKBroadcasterInterface* operator &() { return &self; }
654         LDKBroadcasterInterface* operator ->() { return &self; }
655         const LDKBroadcasterInterface* operator &() const { return &self; }
656         const LDKBroadcasterInterface* operator ->() const { return &self; }
657         /**
658          *  Sends a transaction out to (hopefully) be mined.
659          */
660         inline void broadcast_transaction(struct LDKTransaction tx);
661 };
662 class ConfirmationTarget {
663 private:
664         LDKConfirmationTarget self;
665 public:
666         ConfirmationTarget(const ConfirmationTarget&) = delete;
667         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
668         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
669         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
670         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
671         LDKConfirmationTarget* operator &() { return &self; }
672         LDKConfirmationTarget* operator ->() { return &self; }
673         const LDKConfirmationTarget* operator &() const { return &self; }
674         const LDKConfirmationTarget* operator ->() const { return &self; }
675 };
676 class FeeEstimator {
677 private:
678         LDKFeeEstimator self;
679 public:
680         FeeEstimator(const FeeEstimator&) = delete;
681         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
682         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
683         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
684         ~FeeEstimator() { FeeEstimator_free(self); }
685         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
686         LDKFeeEstimator* operator &() { return &self; }
687         LDKFeeEstimator* operator ->() { return &self; }
688         const LDKFeeEstimator* operator &() const { return &self; }
689         const LDKFeeEstimator* operator ->() const { return &self; }
690         /**
691          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
692          * 
693          *  Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs
694          *  don't put us below 1 satoshi-per-byte).
695          * 
696          *  This translates to:
697          *   * satoshis-per-byte * 250
698          *   * ceil(satoshis-per-kbyte / 4)
699          */
700         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
701 };
702 class BestBlock {
703 private:
704         LDKBestBlock self;
705 public:
706         BestBlock(const BestBlock&) = delete;
707         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
708         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
709         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
710         ~BestBlock() { BestBlock_free(self); }
711         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
712         LDKBestBlock* operator &() { return &self; }
713         LDKBestBlock* operator ->() { return &self; }
714         const LDKBestBlock* operator &() const { return &self; }
715         const LDKBestBlock* operator ->() const { return &self; }
716 };
717 class AccessError {
718 private:
719         LDKAccessError self;
720 public:
721         AccessError(const AccessError&) = delete;
722         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
723         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
724         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
725         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
726         LDKAccessError* operator &() { return &self; }
727         LDKAccessError* operator ->() { return &self; }
728         const LDKAccessError* operator &() const { return &self; }
729         const LDKAccessError* operator ->() const { return &self; }
730 };
731 class Access {
732 private:
733         LDKAccess self;
734 public:
735         Access(const Access&) = delete;
736         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
737         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
738         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
739         ~Access() { Access_free(self); }
740         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
741         LDKAccess* operator &() { return &self; }
742         LDKAccess* operator ->() { return &self; }
743         const LDKAccess* operator &() const { return &self; }
744         const LDKAccess* operator ->() const { return &self; }
745         /**
746          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
747          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
748          *  is unknown.
749          * 
750          *  [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
751          */
752         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
753 };
754 class Listen {
755 private:
756         LDKListen self;
757 public:
758         Listen(const Listen&) = delete;
759         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
760         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
761         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
762         ~Listen() { Listen_free(self); }
763         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
764         LDKListen* operator &() { return &self; }
765         LDKListen* operator ->() { return &self; }
766         const LDKListen* operator &() const { return &self; }
767         const LDKListen* operator ->() const { return &self; }
768         /**
769          *  Notifies the listener that a block was added at the given height.
770          */
771         inline void block_connected(struct LDKu8slice block, uint32_t height);
772         /**
773          *  Notifies the listener that a block was removed at the given height.
774          */
775         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
776 };
777 class Confirm {
778 private:
779         LDKConfirm self;
780 public:
781         Confirm(const Confirm&) = delete;
782         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
783         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
784         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
785         ~Confirm() { Confirm_free(self); }
786         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
787         LDKConfirm* operator &() { return &self; }
788         LDKConfirm* operator ->() { return &self; }
789         const LDKConfirm* operator &() const { return &self; }
790         const LDKConfirm* operator ->() const { return &self; }
791         /**
792          *  Processes transactions confirmed in a block with a given header and height.
793          * 
794          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
795          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
796          *  appearing in the same block do not need to be included in the same call; instead, multiple
797          *  calls with additional transactions may be made so long as they are made in [chain order].
798          * 
799          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
800          *  in the event of a chain reorganization, it must not be called with a `header` that is no
801          *  longer in the chain as of the last call to [`best_block_updated`].
802          * 
803          *  [chain order]: Confirm#Order
804          *  [`best_block_updated`]: Self::best_block_updated
805          */
806         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
807         /**
808          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
809          * 
810          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
811          *  reorganized out of the best chain. Once called, the given transaction should not be returned
812          *  by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
813          * 
814          *  [`get_relevant_txids`]: Self::get_relevant_txids
815          *  [`transactions_confirmed`]: Self::transactions_confirmed
816          */
817         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
818         /**
819          *  Processes an update to the best header connected at the given height.
820          * 
821          *  Should be called when a new header is available but may be skipped for intermediary blocks
822          *  if they become available at the same time.
823          */
824         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
825         /**
826          *  Returns transactions that should be monitored for reorganization out of the chain.
827          * 
828          *  Should include any transactions passed to [`transactions_confirmed`] that have insufficient
829          *  confirmations to be safe from a chain reorganization. Should not include any transactions
830          *  passed to [`transaction_unconfirmed`] unless later reconfirmed.
831          * 
832          *  May be called to determine the subset of transactions that must still be monitored for
833          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
834          *  other interface methods. Thus, this is useful to determine which transactions may need to be
835          *  given to [`transaction_unconfirmed`].
836          * 
837          *  [`transactions_confirmed`]: Self::transactions_confirmed
838          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
839          */
840         inline LDK::CVec_TxidZ get_relevant_txids();
841 };
842 class Watch {
843 private:
844         LDKWatch self;
845 public:
846         Watch(const Watch&) = delete;
847         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
848         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
849         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
850         ~Watch() { Watch_free(self); }
851         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
852         LDKWatch* operator &() { return &self; }
853         LDKWatch* operator ->() { return &self; }
854         const LDKWatch* operator &() const { return &self; }
855         const LDKWatch* operator ->() const { return &self; }
856         /**
857          *  Watches a channel identified by `funding_txo` using `monitor`.
858          * 
859          *  Implementations are responsible for watching the chain for the funding transaction along
860          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
861          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
862          * 
863          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
864          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
865          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
866          */
867         inline LDK::CResult_NoneChannelMonitorUpdateErrZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
868         /**
869          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
870          * 
871          *  Implementations must call [`update_monitor`] with the given update. See
872          *  [`ChannelMonitorUpdateErr`] for invariants around returning an error.
873          * 
874          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
875          *  [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
876          */
877         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
878         /**
879          *  Returns any monitor events since the last call. Subsequent calls must only return new
880          *  events.
881          */
882         inline LDK::CVec_MonitorEventZ release_pending_monitor_events();
883 };
884 class Filter {
885 private:
886         LDKFilter self;
887 public:
888         Filter(const Filter&) = delete;
889         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
890         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
891         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
892         ~Filter() { Filter_free(self); }
893         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
894         LDKFilter* operator &() { return &self; }
895         LDKFilter* operator ->() { return &self; }
896         const LDKFilter* operator &() const { return &self; }
897         const LDKFilter* operator ->() const { return &self; }
898         /**
899          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
900          *  a spending condition.
901          */
902         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
903         /**
904          *  Registers interest in spends of a transaction output.
905          * 
906          *  Optionally, when `output.block_hash` is set, should return any transaction spending the
907          *  output that is found in the corresponding block along with its index.
908          * 
909          *  This return value is useful for Electrum clients in order to supply in-block descendant
910          *  transactions which otherwise were not included. This is not necessary for other clients if
911          *  such descendant transactions were already included (e.g., when a BIP 157 client provides the
912          *  full block).
913          */
914         inline LDK::COption_C2Tuple_usizeTransactionZZ register_output(struct LDKWatchedOutput output);
915 };
916 class WatchedOutput {
917 private:
918         LDKWatchedOutput self;
919 public:
920         WatchedOutput(const WatchedOutput&) = delete;
921         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
922         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
923         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
924         ~WatchedOutput() { WatchedOutput_free(self); }
925         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
926         LDKWatchedOutput* operator &() { return &self; }
927         LDKWatchedOutput* operator ->() { return &self; }
928         const LDKWatchedOutput* operator &() const { return &self; }
929         const LDKWatchedOutput* operator ->() const { return &self; }
930 };
931 class PaymentPurpose {
932 private:
933         LDKPaymentPurpose self;
934 public:
935         PaymentPurpose(const PaymentPurpose&) = delete;
936         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
937         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
938         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
939         ~PaymentPurpose() { PaymentPurpose_free(self); }
940         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
941         LDKPaymentPurpose* operator &() { return &self; }
942         LDKPaymentPurpose* operator ->() { return &self; }
943         const LDKPaymentPurpose* operator &() const { return &self; }
944         const LDKPaymentPurpose* operator ->() const { return &self; }
945 };
946 class ClosureReason {
947 private:
948         LDKClosureReason self;
949 public:
950         ClosureReason(const ClosureReason&) = delete;
951         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
952         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
953         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
954         ~ClosureReason() { ClosureReason_free(self); }
955         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
956         LDKClosureReason* operator &() { return &self; }
957         LDKClosureReason* operator ->() { return &self; }
958         const LDKClosureReason* operator &() const { return &self; }
959         const LDKClosureReason* operator ->() const { return &self; }
960 };
961 class Event {
962 private:
963         LDKEvent self;
964 public:
965         Event(const Event&) = delete;
966         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
967         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
968         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
969         ~Event() { Event_free(self); }
970         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
971         LDKEvent* operator &() { return &self; }
972         LDKEvent* operator ->() { return &self; }
973         const LDKEvent* operator &() const { return &self; }
974         const LDKEvent* operator ->() const { return &self; }
975 };
976 class MessageSendEvent {
977 private:
978         LDKMessageSendEvent self;
979 public:
980         MessageSendEvent(const MessageSendEvent&) = delete;
981         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
982         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
983         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
984         ~MessageSendEvent() { MessageSendEvent_free(self); }
985         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
986         LDKMessageSendEvent* operator &() { return &self; }
987         LDKMessageSendEvent* operator ->() { return &self; }
988         const LDKMessageSendEvent* operator &() const { return &self; }
989         const LDKMessageSendEvent* operator ->() const { return &self; }
990 };
991 class MessageSendEventsProvider {
992 private:
993         LDKMessageSendEventsProvider self;
994 public:
995         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
996         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
997         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
998         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
999         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
1000         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
1001         LDKMessageSendEventsProvider* operator &() { return &self; }
1002         LDKMessageSendEventsProvider* operator ->() { return &self; }
1003         const LDKMessageSendEventsProvider* operator &() const { return &self; }
1004         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
1005         /**
1006          *  Gets the list of pending events which were generated by previous actions, clearing the list
1007          *  in the process.
1008          */
1009         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
1010 };
1011 class EventsProvider {
1012 private:
1013         LDKEventsProvider self;
1014 public:
1015         EventsProvider(const EventsProvider&) = delete;
1016         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1017         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1018         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1019         ~EventsProvider() { EventsProvider_free(self); }
1020         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1021         LDKEventsProvider* operator &() { return &self; }
1022         LDKEventsProvider* operator ->() { return &self; }
1023         const LDKEventsProvider* operator &() const { return &self; }
1024         const LDKEventsProvider* operator ->() const { return &self; }
1025         /**
1026          *  Processes any events generated since the last call using the given event handler.
1027          * 
1028          *  Subsequent calls must only process new events. However, handlers must be capable of handling
1029          *  duplicate events across process restarts. This may occur if the provider was recovered from
1030          *  an old state (i.e., it hadn't been successfully persisted after processing pending events).
1031          */
1032         inline void process_pending_events(struct LDKEventHandler handler);
1033 };
1034 class EventHandler {
1035 private:
1036         LDKEventHandler self;
1037 public:
1038         EventHandler(const EventHandler&) = delete;
1039         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1040         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1041         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1042         ~EventHandler() { EventHandler_free(self); }
1043         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1044         LDKEventHandler* operator &() { return &self; }
1045         LDKEventHandler* operator ->() { return &self; }
1046         const LDKEventHandler* operator &() const { return &self; }
1047         const LDKEventHandler* operator ->() const { return &self; }
1048         /**
1049          *  Handles the given [`Event`].
1050          * 
1051          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1052          */
1053         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
1054 };
1055 class InitFeatures {
1056 private:
1057         LDKInitFeatures self;
1058 public:
1059         InitFeatures(const InitFeatures&) = delete;
1060         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1061         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1062         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1063         ~InitFeatures() { InitFeatures_free(self); }
1064         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1065         LDKInitFeatures* operator &() { return &self; }
1066         LDKInitFeatures* operator ->() { return &self; }
1067         const LDKInitFeatures* operator &() const { return &self; }
1068         const LDKInitFeatures* operator ->() const { return &self; }
1069 };
1070 class NodeFeatures {
1071 private:
1072         LDKNodeFeatures self;
1073 public:
1074         NodeFeatures(const NodeFeatures&) = delete;
1075         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1076         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1077         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1078         ~NodeFeatures() { NodeFeatures_free(self); }
1079         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1080         LDKNodeFeatures* operator &() { return &self; }
1081         LDKNodeFeatures* operator ->() { return &self; }
1082         const LDKNodeFeatures* operator &() const { return &self; }
1083         const LDKNodeFeatures* operator ->() const { return &self; }
1084 };
1085 class ChannelFeatures {
1086 private:
1087         LDKChannelFeatures self;
1088 public:
1089         ChannelFeatures(const ChannelFeatures&) = delete;
1090         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1091         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1092         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1093         ~ChannelFeatures() { ChannelFeatures_free(self); }
1094         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1095         LDKChannelFeatures* operator &() { return &self; }
1096         LDKChannelFeatures* operator ->() { return &self; }
1097         const LDKChannelFeatures* operator &() const { return &self; }
1098         const LDKChannelFeatures* operator ->() const { return &self; }
1099 };
1100 class InvoiceFeatures {
1101 private:
1102         LDKInvoiceFeatures self;
1103 public:
1104         InvoiceFeatures(const InvoiceFeatures&) = delete;
1105         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1106         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1107         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1108         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1109         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1110         LDKInvoiceFeatures* operator &() { return &self; }
1111         LDKInvoiceFeatures* operator ->() { return &self; }
1112         const LDKInvoiceFeatures* operator &() const { return &self; }
1113         const LDKInvoiceFeatures* operator ->() const { return &self; }
1114 };
1115 class DelayedPaymentOutputDescriptor {
1116 private:
1117         LDKDelayedPaymentOutputDescriptor self;
1118 public:
1119         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1120         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1121         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1122         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1123         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1124         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1125         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1126         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1127         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1128         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1129 };
1130 class StaticPaymentOutputDescriptor {
1131 private:
1132         LDKStaticPaymentOutputDescriptor self;
1133 public:
1134         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1135         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1136         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1137         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1138         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1139         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1140         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1141         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1142         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1143         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1144 };
1145 class SpendableOutputDescriptor {
1146 private:
1147         LDKSpendableOutputDescriptor self;
1148 public:
1149         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1150         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1151         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1152         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1153         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1154         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1155         LDKSpendableOutputDescriptor* operator &() { return &self; }
1156         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1157         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1158         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1159 };
1160 class BaseSign {
1161 private:
1162         LDKBaseSign self;
1163 public:
1164         BaseSign(const BaseSign&) = delete;
1165         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1166         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1167         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1168         ~BaseSign() { BaseSign_free(self); }
1169         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1170         LDKBaseSign* operator &() { return &self; }
1171         LDKBaseSign* operator ->() { return &self; }
1172         const LDKBaseSign* operator &() const { return &self; }
1173         const LDKBaseSign* operator ->() const { return &self; }
1174         /**
1175          *  Gets the per-commitment point for a specific commitment number
1176          * 
1177          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1178          */
1179         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1180         /**
1181          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1182          * 
1183          *  An external signer implementation should error here if the commitment was already signed
1184          *  and should refuse to sign it in the future.
1185          * 
1186          *  May be called more than once for the same index.
1187          * 
1188          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1189          */
1190         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1191         /**
1192          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1193          * 
1194          *  This is required in order for the signer to make sure that releasing a commitment
1195          *  secret won't leave us without a broadcastable holder transaction.
1196          *  Policy checks should be implemented in this function, including checking the amount
1197          *  sent to us and checking the HTLCs.
1198          */
1199         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx);
1200         /**
1201          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1202          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1203          *  Sign object uniquely and lookup or re-derive its keys.
1204          */
1205         inline LDKThirtyTwoBytes channel_keys_id();
1206         /**
1207          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1208          * 
1209          *  Note that if signing fails or is rejected, the channel will be force-closed.
1210          * 
1211          *  Policy checks should be implemented in this function, including checking the amount
1212          *  sent to us and checking the HTLCs.
1213          */
1214         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx);
1215         /**
1216          *  Validate the counterparty's revocation.
1217          * 
1218          *  This is required in order for the signer to make sure that the state has moved
1219          *  forward and it is safe to sign the next counterparty commitment.
1220          */
1221         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1222         /**
1223          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1224          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1225          *  latest commitment_tx when we initiate a force-close.
1226          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1227          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1228          *  the latest.
1229          *  This may be called multiple times for the same transaction.
1230          * 
1231          *  An external signer implementation should check that the commitment has not been revoked.
1232          * 
1233          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1234          */
1235         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1236         /**
1237          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1238          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1239          * 
1240          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1241          *  similar, but only a signature for the input at index `input` should be signed for here.
1242          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1243          *  to an upcoming timelock expiration.
1244          * 
1245          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1246          * 
1247          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1248          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1249          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1250          *  so).
1251          */
1252         inline LDK::CResult_SignatureNoneZ sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]);
1253         /**
1254          *  Create a signature for the given input in a transaction spending a commitment transaction
1255          *  HTLC output when our counterparty broadcasts an old state.
1256          * 
1257          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1258          *  similar, but only a signature for the input at index `input` should be signed for here.
1259          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1260          *  to an upcoming timelock expiration.
1261          * 
1262          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1263          * 
1264          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1265          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1266          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1267          *  so).
1268          * 
1269          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1270          *  (which is committed to in the BIP 143 signatures).
1271          */
1272         inline LDK::CResult_SignatureNoneZ sign_justice_revoked_htlc(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
1273         /**
1274          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1275          *  transaction, either offered or received.
1276          * 
1277          *  Such a transaction may claim multiples offered outputs at same time if we know the
1278          *  preimage for each when we create it, but only the input at index `input` should be
1279          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1280          *  needed with regards to an upcoming timelock expiration.
1281          * 
1282          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1283          *  outputs.
1284          * 
1285          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1286          * 
1287          *  Per_commitment_point is the dynamic point corresponding to the channel state
1288          *  detected onchain. It has been generated by our counterparty and is used to derive
1289          *  channel state keys, which are then included in the witness script and committed to in the
1290          *  BIP 143 signature.
1291          */
1292         inline LDK::CResult_SignatureNoneZ sign_counterparty_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
1293         /**
1294          *  Create a signature for a (proposed) closing transaction.
1295          * 
1296          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1297          *  chosen to forgo their output as dust.
1298          */
1299         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1300         /**
1301          *  Signs a channel announcement message with our funding key, proving it comes from one
1302          *  of the channel participants.
1303          * 
1304          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1305          *  our counterparty may (though likely will not) close the channel on us for violating the
1306          *  protocol.
1307          */
1308         inline LDK::CResult_SignatureNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1309         /**
1310          *  Set the counterparty static channel data, including basepoints,
1311          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1312          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1313          *  they MUST NOT be allowed to change to different values once set.
1314          * 
1315          *  channel_parameters.is_populated() MUST be true.
1316          * 
1317          *  We bind holder_selected_contest_delay late here for API convenience.
1318          * 
1319          *  Will be called before any signatures are applied.
1320          */
1321         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1322 };
1323 class Sign {
1324 private:
1325         LDKSign self;
1326 public:
1327         Sign(const Sign&) = delete;
1328         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1329         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1330         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1331         ~Sign() { Sign_free(self); }
1332         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1333         LDKSign* operator &() { return &self; }
1334         LDKSign* operator ->() { return &self; }
1335         const LDKSign* operator &() const { return &self; }
1336         const LDKSign* operator ->() const { return &self; }
1337 };
1338 class KeysInterface {
1339 private:
1340         LDKKeysInterface self;
1341 public:
1342         KeysInterface(const KeysInterface&) = delete;
1343         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
1344         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
1345         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
1346         ~KeysInterface() { KeysInterface_free(self); }
1347         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
1348         LDKKeysInterface* operator &() { return &self; }
1349         LDKKeysInterface* operator ->() { return &self; }
1350         const LDKKeysInterface* operator &() const { return &self; }
1351         const LDKKeysInterface* operator ->() const { return &self; }
1352         /**
1353          *  Get node secret key (aka node_id or network_key).
1354          * 
1355          *  This method must return the same value each time it is called.
1356          */
1357         inline LDKSecretKey get_node_secret();
1358         /**
1359          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1360          * 
1361          *  This method should return a different value each time it is called, to avoid linking
1362          *  on-chain funds across channels as controlled to the same user.
1363          */
1364         inline LDK::CVec_u8Z get_destination_script();
1365         /**
1366          *  Get a script pubkey which we will send funds to when closing a channel.
1367          * 
1368          *  This method should return a different value each time it is called, to avoid linking
1369          *  on-chain funds across channels as controlled to the same user.
1370          */
1371         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
1372         /**
1373          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
1374          *  restarted with some stale data!
1375          * 
1376          *  This method must return a different value each time it is called.
1377          */
1378         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
1379         /**
1380          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
1381          *  onion packets and for temporary channel IDs. There is no requirement that these be
1382          *  persisted anywhere, though they must be unique across restarts.
1383          * 
1384          *  This method must return a different value each time it is called.
1385          */
1386         inline LDKThirtyTwoBytes get_secure_random_bytes();
1387         /**
1388          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
1389          *  This is only called during deserialization of other objects which contain
1390          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
1391          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1392          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1393          *  you've read all of the provided bytes to ensure no corruption occurred.
1394          */
1395         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1396         /**
1397          *  Sign an invoice's preimage (note that this is the preimage of the invoice, not the HTLC's
1398          *  preimage). By parameterizing by the preimage instead of the hash, we allow implementors of
1399          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1400          *  blindly signing the hash.
1401          */
1402         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKCVec_u8Z invoice_preimage);
1403 };
1404 class InMemorySigner {
1405 private:
1406         LDKInMemorySigner self;
1407 public:
1408         InMemorySigner(const InMemorySigner&) = delete;
1409         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1410         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1411         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1412         ~InMemorySigner() { InMemorySigner_free(self); }
1413         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1414         LDKInMemorySigner* operator &() { return &self; }
1415         LDKInMemorySigner* operator ->() { return &self; }
1416         const LDKInMemorySigner* operator &() const { return &self; }
1417         const LDKInMemorySigner* operator ->() const { return &self; }
1418 };
1419 class KeysManager {
1420 private:
1421         LDKKeysManager self;
1422 public:
1423         KeysManager(const KeysManager&) = delete;
1424         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1425         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1426         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1427         ~KeysManager() { KeysManager_free(self); }
1428         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1429         LDKKeysManager* operator &() { return &self; }
1430         LDKKeysManager* operator ->() { return &self; }
1431         const LDKKeysManager* operator &() const { return &self; }
1432         const LDKKeysManager* operator ->() const { return &self; }
1433 };
1434 class FilesystemPersister {
1435 private:
1436         LDKFilesystemPersister self;
1437 public:
1438         FilesystemPersister(const FilesystemPersister&) = delete;
1439         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
1440         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
1441         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
1442         ~FilesystemPersister() { FilesystemPersister_free(self); }
1443         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
1444         LDKFilesystemPersister* operator &() { return &self; }
1445         LDKFilesystemPersister* operator ->() { return &self; }
1446         const LDKFilesystemPersister* operator &() const { return &self; }
1447         const LDKFilesystemPersister* operator ->() const { return &self; }
1448 };
1449 class ChannelManager {
1450 private:
1451         LDKChannelManager self;
1452 public:
1453         ChannelManager(const ChannelManager&) = delete;
1454         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
1455         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
1456         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
1457         ~ChannelManager() { ChannelManager_free(self); }
1458         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
1459         LDKChannelManager* operator &() { return &self; }
1460         LDKChannelManager* operator ->() { return &self; }
1461         const LDKChannelManager* operator &() const { return &self; }
1462         const LDKChannelManager* operator ->() const { return &self; }
1463 };
1464 class ChainParameters {
1465 private:
1466         LDKChainParameters self;
1467 public:
1468         ChainParameters(const ChainParameters&) = delete;
1469         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
1470         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
1471         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
1472         ~ChainParameters() { ChainParameters_free(self); }
1473         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
1474         LDKChainParameters* operator &() { return &self; }
1475         LDKChainParameters* operator ->() { return &self; }
1476         const LDKChainParameters* operator &() const { return &self; }
1477         const LDKChainParameters* operator ->() const { return &self; }
1478 };
1479 class CounterpartyForwardingInfo {
1480 private:
1481         LDKCounterpartyForwardingInfo self;
1482 public:
1483         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
1484         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
1485         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
1486         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
1487         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
1488         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
1489         LDKCounterpartyForwardingInfo* operator &() { return &self; }
1490         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
1491         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
1492         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
1493 };
1494 class ChannelCounterparty {
1495 private:
1496         LDKChannelCounterparty self;
1497 public:
1498         ChannelCounterparty(const ChannelCounterparty&) = delete;
1499         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
1500         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
1501         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
1502         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
1503         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
1504         LDKChannelCounterparty* operator &() { return &self; }
1505         LDKChannelCounterparty* operator ->() { return &self; }
1506         const LDKChannelCounterparty* operator &() const { return &self; }
1507         const LDKChannelCounterparty* operator ->() const { return &self; }
1508 };
1509 class ChannelDetails {
1510 private:
1511         LDKChannelDetails self;
1512 public:
1513         ChannelDetails(const ChannelDetails&) = delete;
1514         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
1515         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
1516         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
1517         ~ChannelDetails() { ChannelDetails_free(self); }
1518         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
1519         LDKChannelDetails* operator &() { return &self; }
1520         LDKChannelDetails* operator ->() { return &self; }
1521         const LDKChannelDetails* operator &() const { return &self; }
1522         const LDKChannelDetails* operator ->() const { return &self; }
1523 };
1524 class PaymentSendFailure {
1525 private:
1526         LDKPaymentSendFailure self;
1527 public:
1528         PaymentSendFailure(const PaymentSendFailure&) = delete;
1529         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
1530         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
1531         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
1532         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
1533         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
1534         LDKPaymentSendFailure* operator &() { return &self; }
1535         LDKPaymentSendFailure* operator ->() { return &self; }
1536         const LDKPaymentSendFailure* operator &() const { return &self; }
1537         const LDKPaymentSendFailure* operator ->() const { return &self; }
1538 };
1539 class ChannelManagerReadArgs {
1540 private:
1541         LDKChannelManagerReadArgs self;
1542 public:
1543         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
1544         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
1545         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
1546         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
1547         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
1548         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
1549         LDKChannelManagerReadArgs* operator &() { return &self; }
1550         LDKChannelManagerReadArgs* operator ->() { return &self; }
1551         const LDKChannelManagerReadArgs* operator &() const { return &self; }
1552         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
1553 };
1554 class ChannelHandshakeConfig {
1555 private:
1556         LDKChannelHandshakeConfig self;
1557 public:
1558         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
1559         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
1560         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
1561         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
1562         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
1563         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
1564         LDKChannelHandshakeConfig* operator &() { return &self; }
1565         LDKChannelHandshakeConfig* operator ->() { return &self; }
1566         const LDKChannelHandshakeConfig* operator &() const { return &self; }
1567         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
1568 };
1569 class ChannelHandshakeLimits {
1570 private:
1571         LDKChannelHandshakeLimits self;
1572 public:
1573         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
1574         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
1575         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
1576         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
1577         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
1578         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
1579         LDKChannelHandshakeLimits* operator &() { return &self; }
1580         LDKChannelHandshakeLimits* operator ->() { return &self; }
1581         const LDKChannelHandshakeLimits* operator &() const { return &self; }
1582         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
1583 };
1584 class ChannelConfig {
1585 private:
1586         LDKChannelConfig self;
1587 public:
1588         ChannelConfig(const ChannelConfig&) = delete;
1589         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
1590         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
1591         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
1592         ~ChannelConfig() { ChannelConfig_free(self); }
1593         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
1594         LDKChannelConfig* operator &() { return &self; }
1595         LDKChannelConfig* operator ->() { return &self; }
1596         const LDKChannelConfig* operator &() const { return &self; }
1597         const LDKChannelConfig* operator ->() const { return &self; }
1598 };
1599 class UserConfig {
1600 private:
1601         LDKUserConfig self;
1602 public:
1603         UserConfig(const UserConfig&) = delete;
1604         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
1605         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
1606         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
1607         ~UserConfig() { UserConfig_free(self); }
1608         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
1609         LDKUserConfig* operator &() { return &self; }
1610         LDKUserConfig* operator ->() { return &self; }
1611         const LDKUserConfig* operator &() const { return &self; }
1612         const LDKUserConfig* operator ->() const { return &self; }
1613 };
1614 class APIError {
1615 private:
1616         LDKAPIError self;
1617 public:
1618         APIError(const APIError&) = delete;
1619         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
1620         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
1621         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
1622         ~APIError() { APIError_free(self); }
1623         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
1624         LDKAPIError* operator &() { return &self; }
1625         LDKAPIError* operator ->() { return &self; }
1626         const LDKAPIError* operator &() const { return &self; }
1627         const LDKAPIError* operator ->() const { return &self; }
1628 };
1629 class OutPoint {
1630 private:
1631         LDKOutPoint self;
1632 public:
1633         OutPoint(const OutPoint&) = delete;
1634         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
1635         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
1636         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
1637         ~OutPoint() { OutPoint_free(self); }
1638         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
1639         LDKOutPoint* operator &() { return &self; }
1640         LDKOutPoint* operator ->() { return &self; }
1641         const LDKOutPoint* operator &() const { return &self; }
1642         const LDKOutPoint* operator ->() const { return &self; }
1643 };
1644 class CustomMessageReader {
1645 private:
1646         LDKCustomMessageReader self;
1647 public:
1648         CustomMessageReader(const CustomMessageReader&) = delete;
1649         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
1650         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
1651         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
1652         ~CustomMessageReader() { CustomMessageReader_free(self); }
1653         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
1654         LDKCustomMessageReader* operator &() { return &self; }
1655         LDKCustomMessageReader* operator ->() { return &self; }
1656         const LDKCustomMessageReader* operator &() const { return &self; }
1657         const LDKCustomMessageReader* operator ->() const { return &self; }
1658         /**
1659          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
1660          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
1661          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
1662          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
1663          */
1664         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
1665 };
1666 class Type {
1667 private:
1668         LDKType self;
1669 public:
1670         Type(const Type&) = delete;
1671         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
1672         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
1673         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
1674         ~Type() { Type_free(self); }
1675         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
1676         LDKType* operator &() { return &self; }
1677         LDKType* operator ->() { return &self; }
1678         const LDKType* operator &() const { return &self; }
1679         const LDKType* operator ->() const { return &self; }
1680         /**
1681          *  Returns the type identifying the message payload.
1682          */
1683         inline uint16_t type_id();
1684         /**
1685          * Return a human-readable "debug" string describing this object
1686          */
1687         inline LDK::Str debug_str();
1688 };
1689 class Invoice {
1690 private:
1691         LDKInvoice self;
1692 public:
1693         Invoice(const Invoice&) = delete;
1694         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
1695         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
1696         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
1697         ~Invoice() { Invoice_free(self); }
1698         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
1699         LDKInvoice* operator &() { return &self; }
1700         LDKInvoice* operator ->() { return &self; }
1701         const LDKInvoice* operator &() const { return &self; }
1702         const LDKInvoice* operator ->() const { return &self; }
1703 };
1704 class SignedRawInvoice {
1705 private:
1706         LDKSignedRawInvoice self;
1707 public:
1708         SignedRawInvoice(const SignedRawInvoice&) = delete;
1709         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
1710         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
1711         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
1712         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
1713         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
1714         LDKSignedRawInvoice* operator &() { return &self; }
1715         LDKSignedRawInvoice* operator ->() { return &self; }
1716         const LDKSignedRawInvoice* operator &() const { return &self; }
1717         const LDKSignedRawInvoice* operator ->() const { return &self; }
1718 };
1719 class RawInvoice {
1720 private:
1721         LDKRawInvoice self;
1722 public:
1723         RawInvoice(const RawInvoice&) = delete;
1724         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
1725         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
1726         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
1727         ~RawInvoice() { RawInvoice_free(self); }
1728         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
1729         LDKRawInvoice* operator &() { return &self; }
1730         LDKRawInvoice* operator ->() { return &self; }
1731         const LDKRawInvoice* operator &() const { return &self; }
1732         const LDKRawInvoice* operator ->() const { return &self; }
1733 };
1734 class RawDataPart {
1735 private:
1736         LDKRawDataPart self;
1737 public:
1738         RawDataPart(const RawDataPart&) = delete;
1739         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
1740         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
1741         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
1742         ~RawDataPart() { RawDataPart_free(self); }
1743         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
1744         LDKRawDataPart* operator &() { return &self; }
1745         LDKRawDataPart* operator ->() { return &self; }
1746         const LDKRawDataPart* operator &() const { return &self; }
1747         const LDKRawDataPart* operator ->() const { return &self; }
1748 };
1749 class PositiveTimestamp {
1750 private:
1751         LDKPositiveTimestamp self;
1752 public:
1753         PositiveTimestamp(const PositiveTimestamp&) = delete;
1754         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
1755         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
1756         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
1757         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
1758         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
1759         LDKPositiveTimestamp* operator &() { return &self; }
1760         LDKPositiveTimestamp* operator ->() { return &self; }
1761         const LDKPositiveTimestamp* operator &() const { return &self; }
1762         const LDKPositiveTimestamp* operator ->() const { return &self; }
1763 };
1764 class SiPrefix {
1765 private:
1766         LDKSiPrefix self;
1767 public:
1768         SiPrefix(const SiPrefix&) = delete;
1769         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
1770         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
1771         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
1772         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
1773         LDKSiPrefix* operator &() { return &self; }
1774         LDKSiPrefix* operator ->() { return &self; }
1775         const LDKSiPrefix* operator &() const { return &self; }
1776         const LDKSiPrefix* operator ->() const { return &self; }
1777 };
1778 class Currency {
1779 private:
1780         LDKCurrency self;
1781 public:
1782         Currency(const Currency&) = delete;
1783         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
1784         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
1785         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
1786         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
1787         LDKCurrency* operator &() { return &self; }
1788         LDKCurrency* operator ->() { return &self; }
1789         const LDKCurrency* operator &() const { return &self; }
1790         const LDKCurrency* operator ->() const { return &self; }
1791 };
1792 class Sha256 {
1793 private:
1794         LDKSha256 self;
1795 public:
1796         Sha256(const Sha256&) = delete;
1797         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
1798         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
1799         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
1800         ~Sha256() { Sha256_free(self); }
1801         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
1802         LDKSha256* operator &() { return &self; }
1803         LDKSha256* operator ->() { return &self; }
1804         const LDKSha256* operator &() const { return &self; }
1805         const LDKSha256* operator ->() const { return &self; }
1806 };
1807 class Description {
1808 private:
1809         LDKDescription self;
1810 public:
1811         Description(const Description&) = delete;
1812         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
1813         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
1814         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
1815         ~Description() { Description_free(self); }
1816         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
1817         LDKDescription* operator &() { return &self; }
1818         LDKDescription* operator ->() { return &self; }
1819         const LDKDescription* operator &() const { return &self; }
1820         const LDKDescription* operator ->() const { return &self; }
1821 };
1822 class PayeePubKey {
1823 private:
1824         LDKPayeePubKey self;
1825 public:
1826         PayeePubKey(const PayeePubKey&) = delete;
1827         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
1828         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
1829         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
1830         ~PayeePubKey() { PayeePubKey_free(self); }
1831         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
1832         LDKPayeePubKey* operator &() { return &self; }
1833         LDKPayeePubKey* operator ->() { return &self; }
1834         const LDKPayeePubKey* operator &() const { return &self; }
1835         const LDKPayeePubKey* operator ->() const { return &self; }
1836 };
1837 class ExpiryTime {
1838 private:
1839         LDKExpiryTime self;
1840 public:
1841         ExpiryTime(const ExpiryTime&) = delete;
1842         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
1843         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
1844         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
1845         ~ExpiryTime() { ExpiryTime_free(self); }
1846         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
1847         LDKExpiryTime* operator &() { return &self; }
1848         LDKExpiryTime* operator ->() { return &self; }
1849         const LDKExpiryTime* operator &() const { return &self; }
1850         const LDKExpiryTime* operator ->() const { return &self; }
1851 };
1852 class MinFinalCltvExpiry {
1853 private:
1854         LDKMinFinalCltvExpiry self;
1855 public:
1856         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
1857         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
1858         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
1859         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
1860         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
1861         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
1862         LDKMinFinalCltvExpiry* operator &() { return &self; }
1863         LDKMinFinalCltvExpiry* operator ->() { return &self; }
1864         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
1865         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
1866 };
1867 class Fallback {
1868 private:
1869         LDKFallback self;
1870 public:
1871         Fallback(const Fallback&) = delete;
1872         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
1873         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
1874         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
1875         ~Fallback() { Fallback_free(self); }
1876         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
1877         LDKFallback* operator &() { return &self; }
1878         LDKFallback* operator ->() { return &self; }
1879         const LDKFallback* operator &() const { return &self; }
1880         const LDKFallback* operator ->() const { return &self; }
1881 };
1882 class InvoiceSignature {
1883 private:
1884         LDKInvoiceSignature self;
1885 public:
1886         InvoiceSignature(const InvoiceSignature&) = delete;
1887         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
1888         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
1889         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
1890         ~InvoiceSignature() { InvoiceSignature_free(self); }
1891         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
1892         LDKInvoiceSignature* operator &() { return &self; }
1893         LDKInvoiceSignature* operator ->() { return &self; }
1894         const LDKInvoiceSignature* operator &() const { return &self; }
1895         const LDKInvoiceSignature* operator ->() const { return &self; }
1896 };
1897 class PrivateRoute {
1898 private:
1899         LDKPrivateRoute self;
1900 public:
1901         PrivateRoute(const PrivateRoute&) = delete;
1902         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
1903         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
1904         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
1905         ~PrivateRoute() { PrivateRoute_free(self); }
1906         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
1907         LDKPrivateRoute* operator &() { return &self; }
1908         LDKPrivateRoute* operator ->() { return &self; }
1909         const LDKPrivateRoute* operator &() const { return &self; }
1910         const LDKPrivateRoute* operator ->() const { return &self; }
1911 };
1912 class CreationError {
1913 private:
1914         LDKCreationError self;
1915 public:
1916         CreationError(const CreationError&) = delete;
1917         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
1918         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
1919         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
1920         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
1921         LDKCreationError* operator &() { return &self; }
1922         LDKCreationError* operator ->() { return &self; }
1923         const LDKCreationError* operator &() const { return &self; }
1924         const LDKCreationError* operator ->() const { return &self; }
1925 };
1926 class SemanticError {
1927 private:
1928         LDKSemanticError self;
1929 public:
1930         SemanticError(const SemanticError&) = delete;
1931         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
1932         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
1933         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
1934         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
1935         LDKSemanticError* operator &() { return &self; }
1936         LDKSemanticError* operator ->() { return &self; }
1937         const LDKSemanticError* operator &() const { return &self; }
1938         const LDKSemanticError* operator ->() const { return &self; }
1939 };
1940 class SignOrCreationError {
1941 private:
1942         LDKSignOrCreationError self;
1943 public:
1944         SignOrCreationError(const SignOrCreationError&) = delete;
1945         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
1946         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
1947         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
1948         ~SignOrCreationError() { SignOrCreationError_free(self); }
1949         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
1950         LDKSignOrCreationError* operator &() { return &self; }
1951         LDKSignOrCreationError* operator ->() { return &self; }
1952         const LDKSignOrCreationError* operator &() const { return &self; }
1953         const LDKSignOrCreationError* operator ->() const { return &self; }
1954 };
1955 class ChannelMonitorUpdate {
1956 private:
1957         LDKChannelMonitorUpdate self;
1958 public:
1959         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
1960         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
1961         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
1962         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
1963         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
1964         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
1965         LDKChannelMonitorUpdate* operator &() { return &self; }
1966         LDKChannelMonitorUpdate* operator ->() { return &self; }
1967         const LDKChannelMonitorUpdate* operator &() const { return &self; }
1968         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
1969 };
1970 class ChannelMonitorUpdateErr {
1971 private:
1972         LDKChannelMonitorUpdateErr self;
1973 public:
1974         ChannelMonitorUpdateErr(const ChannelMonitorUpdateErr&) = delete;
1975         ChannelMonitorUpdateErr(ChannelMonitorUpdateErr&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); }
1976         ChannelMonitorUpdateErr(LDKChannelMonitorUpdateErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateErr)); }
1977         operator LDKChannelMonitorUpdateErr() && { LDKChannelMonitorUpdateErr res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateErr)); return res; }
1978         ChannelMonitorUpdateErr& operator=(ChannelMonitorUpdateErr&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); return *this; }
1979         LDKChannelMonitorUpdateErr* operator &() { return &self; }
1980         LDKChannelMonitorUpdateErr* operator ->() { return &self; }
1981         const LDKChannelMonitorUpdateErr* operator &() const { return &self; }
1982         const LDKChannelMonitorUpdateErr* operator ->() const { return &self; }
1983 };
1984 class MonitorUpdateError {
1985 private:
1986         LDKMonitorUpdateError self;
1987 public:
1988         MonitorUpdateError(const MonitorUpdateError&) = delete;
1989         MonitorUpdateError(MonitorUpdateError&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateError)); }
1990         MonitorUpdateError(LDKMonitorUpdateError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateError)); }
1991         operator LDKMonitorUpdateError() && { LDKMonitorUpdateError res = self; memset(&self, 0, sizeof(LDKMonitorUpdateError)); return res; }
1992         ~MonitorUpdateError() { MonitorUpdateError_free(self); }
1993         MonitorUpdateError& operator=(MonitorUpdateError&& o) { MonitorUpdateError_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateError)); return *this; }
1994         LDKMonitorUpdateError* operator &() { return &self; }
1995         LDKMonitorUpdateError* operator ->() { return &self; }
1996         const LDKMonitorUpdateError* operator &() const { return &self; }
1997         const LDKMonitorUpdateError* operator ->() const { return &self; }
1998 };
1999 class MonitorEvent {
2000 private:
2001         LDKMonitorEvent self;
2002 public:
2003         MonitorEvent(const MonitorEvent&) = delete;
2004         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2005         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2006         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2007         ~MonitorEvent() { MonitorEvent_free(self); }
2008         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2009         LDKMonitorEvent* operator &() { return &self; }
2010         LDKMonitorEvent* operator ->() { return &self; }
2011         const LDKMonitorEvent* operator &() const { return &self; }
2012         const LDKMonitorEvent* operator ->() const { return &self; }
2013 };
2014 class HTLCUpdate {
2015 private:
2016         LDKHTLCUpdate self;
2017 public:
2018         HTLCUpdate(const HTLCUpdate&) = delete;
2019         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2020         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2021         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2022         ~HTLCUpdate() { HTLCUpdate_free(self); }
2023         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2024         LDKHTLCUpdate* operator &() { return &self; }
2025         LDKHTLCUpdate* operator ->() { return &self; }
2026         const LDKHTLCUpdate* operator &() const { return &self; }
2027         const LDKHTLCUpdate* operator ->() const { return &self; }
2028 };
2029 class Balance {
2030 private:
2031         LDKBalance self;
2032 public:
2033         Balance(const Balance&) = delete;
2034         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2035         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2036         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2037         ~Balance() { Balance_free(self); }
2038         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2039         LDKBalance* operator &() { return &self; }
2040         LDKBalance* operator ->() { return &self; }
2041         const LDKBalance* operator &() const { return &self; }
2042         const LDKBalance* operator ->() const { return &self; }
2043 };
2044 class ChannelMonitor {
2045 private:
2046         LDKChannelMonitor self;
2047 public:
2048         ChannelMonitor(const ChannelMonitor&) = delete;
2049         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2050         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2051         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2052         ~ChannelMonitor() { ChannelMonitor_free(self); }
2053         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2054         LDKChannelMonitor* operator &() { return &self; }
2055         LDKChannelMonitor* operator ->() { return &self; }
2056         const LDKChannelMonitor* operator &() const { return &self; }
2057         const LDKChannelMonitor* operator ->() const { return &self; }
2058 };
2059 class Persist {
2060 private:
2061         LDKPersist self;
2062 public:
2063         Persist(const Persist&) = delete;
2064         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
2065         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
2066         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
2067         ~Persist() { Persist_free(self); }
2068         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
2069         LDKPersist* operator &() { return &self; }
2070         LDKPersist* operator ->() { return &self; }
2071         const LDKPersist* operator &() const { return &self; }
2072         const LDKPersist* operator ->() const { return &self; }
2073         /**
2074          *  Persist a new channel's data. The data can be stored any way you want, but
2075          *  the identifier provided by Rust-Lightning is the channel's outpoint (and
2076          *  it is up to you to maintain a correct mapping between the outpoint and the
2077          *  stored channel data). Note that you **must** persist every new monitor to
2078          *  disk. See the `Persist` trait documentation for more details.
2079          * 
2080          *  See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
2081          *  and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
2082          */
2083         inline LDK::CResult_NoneChannelMonitorUpdateErrZ persist_new_channel(struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data);
2084         /**
2085          *  Update one channel's data. The provided `ChannelMonitor` has already
2086          *  applied the given update.
2087          * 
2088          *  Note that on every update, you **must** persist either the
2089          *  `ChannelMonitorUpdate` or the updated monitor itself to disk/backups. See
2090          *  the `Persist` trait documentation for more details.
2091          * 
2092          *  If an implementer chooses to persist the updates only, they need to make
2093          *  sure that all the updates are applied to the `ChannelMonitors` *before*
2094          *  the set of channel monitors is given to the `ChannelManager`
2095          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
2096          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
2097          *  persisted, then there is no need to persist individual updates.
2098          * 
2099          *  Note that there could be a performance tradeoff between persisting complete
2100          *  channel monitors on every update vs. persisting only updates and applying
2101          *  them in batches. The size of each monitor grows `O(number of state updates)`
2102          *  whereas updates are small and `O(1)`.
2103          * 
2104          *  See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
2105          *  [`ChannelMonitorUpdate::write`] for writing out an update, and
2106          *  [`ChannelMonitorUpdateErr`] for requirements when returning errors.
2107          */
2108         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_persisted_channel(struct LDKOutPoint id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data);
2109 };
2110 class CustomMessageHandler {
2111 private:
2112         LDKCustomMessageHandler self;
2113 public:
2114         CustomMessageHandler(const CustomMessageHandler&) = delete;
2115         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2116         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2117         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2118         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2119         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2120         LDKCustomMessageHandler* operator &() { return &self; }
2121         LDKCustomMessageHandler* operator ->() { return &self; }
2122         const LDKCustomMessageHandler* operator &() const { return &self; }
2123         const LDKCustomMessageHandler* operator ->() const { return &self; }
2124         /**
2125          *  Called with the message type that was received and the buffer to be read.
2126          *  Can return a `MessageHandlingError` if the message could not be handled.
2127          */
2128         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2129         /**
2130          *  Gets the list of pending messages which were generated by the custom message
2131          *  handler, clearing the list in the process. The first tuple element must
2132          *  correspond to the intended recipients node ids. If no connection to one of the
2133          *  specified node does not exist, the message is simply not sent to it.
2134          */
2135         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2136 };
2137 class IgnoringMessageHandler {
2138 private:
2139         LDKIgnoringMessageHandler self;
2140 public:
2141         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2142         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2143         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2144         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2145         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2146         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2147         LDKIgnoringMessageHandler* operator &() { return &self; }
2148         LDKIgnoringMessageHandler* operator ->() { return &self; }
2149         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2150         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2151 };
2152 class ErroringMessageHandler {
2153 private:
2154         LDKErroringMessageHandler self;
2155 public:
2156         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2157         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2158         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2159         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2160         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2161         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2162         LDKErroringMessageHandler* operator &() { return &self; }
2163         LDKErroringMessageHandler* operator ->() { return &self; }
2164         const LDKErroringMessageHandler* operator &() const { return &self; }
2165         const LDKErroringMessageHandler* operator ->() const { return &self; }
2166 };
2167 class MessageHandler {
2168 private:
2169         LDKMessageHandler self;
2170 public:
2171         MessageHandler(const MessageHandler&) = delete;
2172         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2173         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2174         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2175         ~MessageHandler() { MessageHandler_free(self); }
2176         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2177         LDKMessageHandler* operator &() { return &self; }
2178         LDKMessageHandler* operator ->() { return &self; }
2179         const LDKMessageHandler* operator &() const { return &self; }
2180         const LDKMessageHandler* operator ->() const { return &self; }
2181 };
2182 class SocketDescriptor {
2183 private:
2184         LDKSocketDescriptor self;
2185 public:
2186         SocketDescriptor(const SocketDescriptor&) = delete;
2187         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2188         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2189         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2190         ~SocketDescriptor() { SocketDescriptor_free(self); }
2191         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2192         LDKSocketDescriptor* operator &() { return &self; }
2193         LDKSocketDescriptor* operator ->() { return &self; }
2194         const LDKSocketDescriptor* operator &() const { return &self; }
2195         const LDKSocketDescriptor* operator ->() const { return &self; }
2196         /**
2197          *  Attempts to send some data from the given slice to the peer.
2198          * 
2199          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2200          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2201          *  called and further write attempts may occur until that time.
2202          * 
2203          *  If the returned size is smaller than `data.len()`, a
2204          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2205          *  written. Additionally, until a `send_data` event completes fully, no further
2206          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2207          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2208          *  until then.
2209          * 
2210          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2211          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2212          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2213          *  `resume_read` of false carries no meaning, and should not cause any action.
2214          */
2215         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2216         /**
2217          *  Disconnect the socket pointed to by this SocketDescriptor.
2218          * 
2219          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2220          *  call (doing so is a noop).
2221          */
2222         inline void disconnect_socket();
2223         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2224         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2225         /**
2226          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2227          * This is used, for example, for inclusion of this object in a hash map.
2228          */
2229         inline uint64_t hash();
2230 };
2231 class PeerHandleError {
2232 private:
2233         LDKPeerHandleError self;
2234 public:
2235         PeerHandleError(const PeerHandleError&) = delete;
2236         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2237         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2238         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2239         ~PeerHandleError() { PeerHandleError_free(self); }
2240         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2241         LDKPeerHandleError* operator &() { return &self; }
2242         LDKPeerHandleError* operator ->() { return &self; }
2243         const LDKPeerHandleError* operator &() const { return &self; }
2244         const LDKPeerHandleError* operator ->() const { return &self; }
2245 };
2246 class PeerManager {
2247 private:
2248         LDKPeerManager self;
2249 public:
2250         PeerManager(const PeerManager&) = delete;
2251         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2252         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2253         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2254         ~PeerManager() { PeerManager_free(self); }
2255         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2256         LDKPeerManager* operator &() { return &self; }
2257         LDKPeerManager* operator ->() { return &self; }
2258         const LDKPeerManager* operator &() const { return &self; }
2259         const LDKPeerManager* operator ->() const { return &self; }
2260 };
2261 class NetworkGraph {
2262 private:
2263         LDKNetworkGraph self;
2264 public:
2265         NetworkGraph(const NetworkGraph&) = delete;
2266         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
2267         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
2268         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
2269         ~NetworkGraph() { NetworkGraph_free(self); }
2270         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
2271         LDKNetworkGraph* operator &() { return &self; }
2272         LDKNetworkGraph* operator ->() { return &self; }
2273         const LDKNetworkGraph* operator &() const { return &self; }
2274         const LDKNetworkGraph* operator ->() const { return &self; }
2275 };
2276 class ReadOnlyNetworkGraph {
2277 private:
2278         LDKReadOnlyNetworkGraph self;
2279 public:
2280         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
2281         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
2282         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
2283         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
2284         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
2285         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
2286         LDKReadOnlyNetworkGraph* operator &() { return &self; }
2287         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
2288         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
2289         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
2290 };
2291 class NetworkUpdate {
2292 private:
2293         LDKNetworkUpdate self;
2294 public:
2295         NetworkUpdate(const NetworkUpdate&) = delete;
2296         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
2297         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
2298         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
2299         ~NetworkUpdate() { NetworkUpdate_free(self); }
2300         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
2301         LDKNetworkUpdate* operator &() { return &self; }
2302         LDKNetworkUpdate* operator ->() { return &self; }
2303         const LDKNetworkUpdate* operator &() const { return &self; }
2304         const LDKNetworkUpdate* operator ->() const { return &self; }
2305 };
2306 class NetGraphMsgHandler {
2307 private:
2308         LDKNetGraphMsgHandler self;
2309 public:
2310         NetGraphMsgHandler(const NetGraphMsgHandler&) = delete;
2311         NetGraphMsgHandler(NetGraphMsgHandler&& o) : self(o.self) { memset(&o, 0, sizeof(NetGraphMsgHandler)); }
2312         NetGraphMsgHandler(LDKNetGraphMsgHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetGraphMsgHandler)); }
2313         operator LDKNetGraphMsgHandler() && { LDKNetGraphMsgHandler res = self; memset(&self, 0, sizeof(LDKNetGraphMsgHandler)); return res; }
2314         ~NetGraphMsgHandler() { NetGraphMsgHandler_free(self); }
2315         NetGraphMsgHandler& operator=(NetGraphMsgHandler&& o) { NetGraphMsgHandler_free(self); self = o.self; memset(&o, 0, sizeof(NetGraphMsgHandler)); return *this; }
2316         LDKNetGraphMsgHandler* operator &() { return &self; }
2317         LDKNetGraphMsgHandler* operator ->() { return &self; }
2318         const LDKNetGraphMsgHandler* operator &() const { return &self; }
2319         const LDKNetGraphMsgHandler* operator ->() const { return &self; }
2320 };
2321 class DirectionalChannelInfo {
2322 private:
2323         LDKDirectionalChannelInfo self;
2324 public:
2325         DirectionalChannelInfo(const DirectionalChannelInfo&) = delete;
2326         DirectionalChannelInfo(DirectionalChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectionalChannelInfo)); }
2327         DirectionalChannelInfo(LDKDirectionalChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectionalChannelInfo)); }
2328         operator LDKDirectionalChannelInfo() && { LDKDirectionalChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectionalChannelInfo)); return res; }
2329         ~DirectionalChannelInfo() { DirectionalChannelInfo_free(self); }
2330         DirectionalChannelInfo& operator=(DirectionalChannelInfo&& o) { DirectionalChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectionalChannelInfo)); return *this; }
2331         LDKDirectionalChannelInfo* operator &() { return &self; }
2332         LDKDirectionalChannelInfo* operator ->() { return &self; }
2333         const LDKDirectionalChannelInfo* operator &() const { return &self; }
2334         const LDKDirectionalChannelInfo* operator ->() const { return &self; }
2335 };
2336 class ChannelInfo {
2337 private:
2338         LDKChannelInfo self;
2339 public:
2340         ChannelInfo(const ChannelInfo&) = delete;
2341         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2342         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2343         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2344         ~ChannelInfo() { ChannelInfo_free(self); }
2345         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2346         LDKChannelInfo* operator &() { return &self; }
2347         LDKChannelInfo* operator ->() { return &self; }
2348         const LDKChannelInfo* operator &() const { return &self; }
2349         const LDKChannelInfo* operator ->() const { return &self; }
2350 };
2351 class RoutingFees {
2352 private:
2353         LDKRoutingFees self;
2354 public:
2355         RoutingFees(const RoutingFees&) = delete;
2356         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2357         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2358         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2359         ~RoutingFees() { RoutingFees_free(self); }
2360         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2361         LDKRoutingFees* operator &() { return &self; }
2362         LDKRoutingFees* operator ->() { return &self; }
2363         const LDKRoutingFees* operator &() const { return &self; }
2364         const LDKRoutingFees* operator ->() const { return &self; }
2365 };
2366 class NodeAnnouncementInfo {
2367 private:
2368         LDKNodeAnnouncementInfo self;
2369 public:
2370         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2371         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2372         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2373         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2374         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2375         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2376         LDKNodeAnnouncementInfo* operator &() { return &self; }
2377         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2378         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2379         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2380 };
2381 class NodeInfo {
2382 private:
2383         LDKNodeInfo self;
2384 public:
2385         NodeInfo(const NodeInfo&) = delete;
2386         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2387         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2388         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2389         ~NodeInfo() { NodeInfo_free(self); }
2390         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2391         LDKNodeInfo* operator &() { return &self; }
2392         LDKNodeInfo* operator ->() { return &self; }
2393         const LDKNodeInfo* operator &() const { return &self; }
2394         const LDKNodeInfo* operator ->() const { return &self; }
2395 };
2396 class DecodeError {
2397 private:
2398         LDKDecodeError self;
2399 public:
2400         DecodeError(const DecodeError&) = delete;
2401         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
2402         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
2403         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
2404         ~DecodeError() { DecodeError_free(self); }
2405         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
2406         LDKDecodeError* operator &() { return &self; }
2407         LDKDecodeError* operator ->() { return &self; }
2408         const LDKDecodeError* operator &() const { return &self; }
2409         const LDKDecodeError* operator ->() const { return &self; }
2410 };
2411 class Init {
2412 private:
2413         LDKInit self;
2414 public:
2415         Init(const Init&) = delete;
2416         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
2417         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
2418         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
2419         ~Init() { Init_free(self); }
2420         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
2421         LDKInit* operator &() { return &self; }
2422         LDKInit* operator ->() { return &self; }
2423         const LDKInit* operator &() const { return &self; }
2424         const LDKInit* operator ->() const { return &self; }
2425 };
2426 class ErrorMessage {
2427 private:
2428         LDKErrorMessage self;
2429 public:
2430         ErrorMessage(const ErrorMessage&) = delete;
2431         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
2432         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
2433         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
2434         ~ErrorMessage() { ErrorMessage_free(self); }
2435         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
2436         LDKErrorMessage* operator &() { return &self; }
2437         LDKErrorMessage* operator ->() { return &self; }
2438         const LDKErrorMessage* operator &() const { return &self; }
2439         const LDKErrorMessage* operator ->() const { return &self; }
2440 };
2441 class Ping {
2442 private:
2443         LDKPing self;
2444 public:
2445         Ping(const Ping&) = delete;
2446         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
2447         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
2448         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
2449         ~Ping() { Ping_free(self); }
2450         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
2451         LDKPing* operator &() { return &self; }
2452         LDKPing* operator ->() { return &self; }
2453         const LDKPing* operator &() const { return &self; }
2454         const LDKPing* operator ->() const { return &self; }
2455 };
2456 class Pong {
2457 private:
2458         LDKPong self;
2459 public:
2460         Pong(const Pong&) = delete;
2461         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
2462         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
2463         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
2464         ~Pong() { Pong_free(self); }
2465         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
2466         LDKPong* operator &() { return &self; }
2467         LDKPong* operator ->() { return &self; }
2468         const LDKPong* operator &() const { return &self; }
2469         const LDKPong* operator ->() const { return &self; }
2470 };
2471 class OpenChannel {
2472 private:
2473         LDKOpenChannel self;
2474 public:
2475         OpenChannel(const OpenChannel&) = delete;
2476         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
2477         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
2478         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
2479         ~OpenChannel() { OpenChannel_free(self); }
2480         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
2481         LDKOpenChannel* operator &() { return &self; }
2482         LDKOpenChannel* operator ->() { return &self; }
2483         const LDKOpenChannel* operator &() const { return &self; }
2484         const LDKOpenChannel* operator ->() const { return &self; }
2485 };
2486 class AcceptChannel {
2487 private:
2488         LDKAcceptChannel self;
2489 public:
2490         AcceptChannel(const AcceptChannel&) = delete;
2491         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
2492         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
2493         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
2494         ~AcceptChannel() { AcceptChannel_free(self); }
2495         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
2496         LDKAcceptChannel* operator &() { return &self; }
2497         LDKAcceptChannel* operator ->() { return &self; }
2498         const LDKAcceptChannel* operator &() const { return &self; }
2499         const LDKAcceptChannel* operator ->() const { return &self; }
2500 };
2501 class FundingCreated {
2502 private:
2503         LDKFundingCreated self;
2504 public:
2505         FundingCreated(const FundingCreated&) = delete;
2506         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
2507         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
2508         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
2509         ~FundingCreated() { FundingCreated_free(self); }
2510         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
2511         LDKFundingCreated* operator &() { return &self; }
2512         LDKFundingCreated* operator ->() { return &self; }
2513         const LDKFundingCreated* operator &() const { return &self; }
2514         const LDKFundingCreated* operator ->() const { return &self; }
2515 };
2516 class FundingSigned {
2517 private:
2518         LDKFundingSigned self;
2519 public:
2520         FundingSigned(const FundingSigned&) = delete;
2521         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
2522         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
2523         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
2524         ~FundingSigned() { FundingSigned_free(self); }
2525         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
2526         LDKFundingSigned* operator &() { return &self; }
2527         LDKFundingSigned* operator ->() { return &self; }
2528         const LDKFundingSigned* operator &() const { return &self; }
2529         const LDKFundingSigned* operator ->() const { return &self; }
2530 };
2531 class FundingLocked {
2532 private:
2533         LDKFundingLocked self;
2534 public:
2535         FundingLocked(const FundingLocked&) = delete;
2536         FundingLocked(FundingLocked&& o) : self(o.self) { memset(&o, 0, sizeof(FundingLocked)); }
2537         FundingLocked(LDKFundingLocked&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingLocked)); }
2538         operator LDKFundingLocked() && { LDKFundingLocked res = self; memset(&self, 0, sizeof(LDKFundingLocked)); return res; }
2539         ~FundingLocked() { FundingLocked_free(self); }
2540         FundingLocked& operator=(FundingLocked&& o) { FundingLocked_free(self); self = o.self; memset(&o, 0, sizeof(FundingLocked)); return *this; }
2541         LDKFundingLocked* operator &() { return &self; }
2542         LDKFundingLocked* operator ->() { return &self; }
2543         const LDKFundingLocked* operator &() const { return &self; }
2544         const LDKFundingLocked* operator ->() const { return &self; }
2545 };
2546 class Shutdown {
2547 private:
2548         LDKShutdown self;
2549 public:
2550         Shutdown(const Shutdown&) = delete;
2551         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
2552         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
2553         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
2554         ~Shutdown() { Shutdown_free(self); }
2555         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
2556         LDKShutdown* operator &() { return &self; }
2557         LDKShutdown* operator ->() { return &self; }
2558         const LDKShutdown* operator &() const { return &self; }
2559         const LDKShutdown* operator ->() const { return &self; }
2560 };
2561 class ClosingSignedFeeRange {
2562 private:
2563         LDKClosingSignedFeeRange self;
2564 public:
2565         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
2566         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
2567         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
2568         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
2569         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
2570         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
2571         LDKClosingSignedFeeRange* operator &() { return &self; }
2572         LDKClosingSignedFeeRange* operator ->() { return &self; }
2573         const LDKClosingSignedFeeRange* operator &() const { return &self; }
2574         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
2575 };
2576 class ClosingSigned {
2577 private:
2578         LDKClosingSigned self;
2579 public:
2580         ClosingSigned(const ClosingSigned&) = delete;
2581         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
2582         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
2583         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
2584         ~ClosingSigned() { ClosingSigned_free(self); }
2585         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
2586         LDKClosingSigned* operator &() { return &self; }
2587         LDKClosingSigned* operator ->() { return &self; }
2588         const LDKClosingSigned* operator &() const { return &self; }
2589         const LDKClosingSigned* operator ->() const { return &self; }
2590 };
2591 class UpdateAddHTLC {
2592 private:
2593         LDKUpdateAddHTLC self;
2594 public:
2595         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
2596         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
2597         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
2598         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
2599         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
2600         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
2601         LDKUpdateAddHTLC* operator &() { return &self; }
2602         LDKUpdateAddHTLC* operator ->() { return &self; }
2603         const LDKUpdateAddHTLC* operator &() const { return &self; }
2604         const LDKUpdateAddHTLC* operator ->() const { return &self; }
2605 };
2606 class UpdateFulfillHTLC {
2607 private:
2608         LDKUpdateFulfillHTLC self;
2609 public:
2610         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
2611         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
2612         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
2613         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
2614         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
2615         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
2616         LDKUpdateFulfillHTLC* operator &() { return &self; }
2617         LDKUpdateFulfillHTLC* operator ->() { return &self; }
2618         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
2619         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
2620 };
2621 class UpdateFailHTLC {
2622 private:
2623         LDKUpdateFailHTLC self;
2624 public:
2625         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
2626         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
2627         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
2628         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
2629         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
2630         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
2631         LDKUpdateFailHTLC* operator &() { return &self; }
2632         LDKUpdateFailHTLC* operator ->() { return &self; }
2633         const LDKUpdateFailHTLC* operator &() const { return &self; }
2634         const LDKUpdateFailHTLC* operator ->() const { return &self; }
2635 };
2636 class UpdateFailMalformedHTLC {
2637 private:
2638         LDKUpdateFailMalformedHTLC self;
2639 public:
2640         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
2641         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
2642         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
2643         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
2644         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
2645         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
2646         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
2647         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
2648         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
2649         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
2650 };
2651 class CommitmentSigned {
2652 private:
2653         LDKCommitmentSigned self;
2654 public:
2655         CommitmentSigned(const CommitmentSigned&) = delete;
2656         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
2657         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
2658         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
2659         ~CommitmentSigned() { CommitmentSigned_free(self); }
2660         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
2661         LDKCommitmentSigned* operator &() { return &self; }
2662         LDKCommitmentSigned* operator ->() { return &self; }
2663         const LDKCommitmentSigned* operator &() const { return &self; }
2664         const LDKCommitmentSigned* operator ->() const { return &self; }
2665 };
2666 class RevokeAndACK {
2667 private:
2668         LDKRevokeAndACK self;
2669 public:
2670         RevokeAndACK(const RevokeAndACK&) = delete;
2671         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
2672         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
2673         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
2674         ~RevokeAndACK() { RevokeAndACK_free(self); }
2675         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
2676         LDKRevokeAndACK* operator &() { return &self; }
2677         LDKRevokeAndACK* operator ->() { return &self; }
2678         const LDKRevokeAndACK* operator &() const { return &self; }
2679         const LDKRevokeAndACK* operator ->() const { return &self; }
2680 };
2681 class UpdateFee {
2682 private:
2683         LDKUpdateFee self;
2684 public:
2685         UpdateFee(const UpdateFee&) = delete;
2686         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
2687         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
2688         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
2689         ~UpdateFee() { UpdateFee_free(self); }
2690         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
2691         LDKUpdateFee* operator &() { return &self; }
2692         LDKUpdateFee* operator ->() { return &self; }
2693         const LDKUpdateFee* operator &() const { return &self; }
2694         const LDKUpdateFee* operator ->() const { return &self; }
2695 };
2696 class DataLossProtect {
2697 private:
2698         LDKDataLossProtect self;
2699 public:
2700         DataLossProtect(const DataLossProtect&) = delete;
2701         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
2702         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
2703         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
2704         ~DataLossProtect() { DataLossProtect_free(self); }
2705         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
2706         LDKDataLossProtect* operator &() { return &self; }
2707         LDKDataLossProtect* operator ->() { return &self; }
2708         const LDKDataLossProtect* operator &() const { return &self; }
2709         const LDKDataLossProtect* operator ->() const { return &self; }
2710 };
2711 class ChannelReestablish {
2712 private:
2713         LDKChannelReestablish self;
2714 public:
2715         ChannelReestablish(const ChannelReestablish&) = delete;
2716         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
2717         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
2718         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
2719         ~ChannelReestablish() { ChannelReestablish_free(self); }
2720         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
2721         LDKChannelReestablish* operator &() { return &self; }
2722         LDKChannelReestablish* operator ->() { return &self; }
2723         const LDKChannelReestablish* operator &() const { return &self; }
2724         const LDKChannelReestablish* operator ->() const { return &self; }
2725 };
2726 class AnnouncementSignatures {
2727 private:
2728         LDKAnnouncementSignatures self;
2729 public:
2730         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
2731         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
2732         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
2733         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
2734         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
2735         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
2736         LDKAnnouncementSignatures* operator &() { return &self; }
2737         LDKAnnouncementSignatures* operator ->() { return &self; }
2738         const LDKAnnouncementSignatures* operator &() const { return &self; }
2739         const LDKAnnouncementSignatures* operator ->() const { return &self; }
2740 };
2741 class NetAddress {
2742 private:
2743         LDKNetAddress self;
2744 public:
2745         NetAddress(const NetAddress&) = delete;
2746         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
2747         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
2748         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
2749         ~NetAddress() { NetAddress_free(self); }
2750         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
2751         LDKNetAddress* operator &() { return &self; }
2752         LDKNetAddress* operator ->() { return &self; }
2753         const LDKNetAddress* operator &() const { return &self; }
2754         const LDKNetAddress* operator ->() const { return &self; }
2755 };
2756 class UnsignedNodeAnnouncement {
2757 private:
2758         LDKUnsignedNodeAnnouncement self;
2759 public:
2760         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
2761         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
2762         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
2763         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
2764         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
2765         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
2766         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
2767         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
2768         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
2769         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
2770 };
2771 class NodeAnnouncement {
2772 private:
2773         LDKNodeAnnouncement self;
2774 public:
2775         NodeAnnouncement(const NodeAnnouncement&) = delete;
2776         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
2777         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
2778         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
2779         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
2780         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
2781         LDKNodeAnnouncement* operator &() { return &self; }
2782         LDKNodeAnnouncement* operator ->() { return &self; }
2783         const LDKNodeAnnouncement* operator &() const { return &self; }
2784         const LDKNodeAnnouncement* operator ->() const { return &self; }
2785 };
2786 class UnsignedChannelAnnouncement {
2787 private:
2788         LDKUnsignedChannelAnnouncement self;
2789 public:
2790         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
2791         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
2792         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
2793         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
2794         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
2795         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
2796         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
2797         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
2798         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
2799         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
2800 };
2801 class ChannelAnnouncement {
2802 private:
2803         LDKChannelAnnouncement self;
2804 public:
2805         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
2806         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
2807         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
2808         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
2809         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
2810         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
2811         LDKChannelAnnouncement* operator &() { return &self; }
2812         LDKChannelAnnouncement* operator ->() { return &self; }
2813         const LDKChannelAnnouncement* operator &() const { return &self; }
2814         const LDKChannelAnnouncement* operator ->() const { return &self; }
2815 };
2816 class UnsignedChannelUpdate {
2817 private:
2818         LDKUnsignedChannelUpdate self;
2819 public:
2820         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
2821         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
2822         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
2823         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
2824         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
2825         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
2826         LDKUnsignedChannelUpdate* operator &() { return &self; }
2827         LDKUnsignedChannelUpdate* operator ->() { return &self; }
2828         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
2829         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
2830 };
2831 class ChannelUpdate {
2832 private:
2833         LDKChannelUpdate self;
2834 public:
2835         ChannelUpdate(const ChannelUpdate&) = delete;
2836         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
2837         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
2838         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
2839         ~ChannelUpdate() { ChannelUpdate_free(self); }
2840         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
2841         LDKChannelUpdate* operator &() { return &self; }
2842         LDKChannelUpdate* operator ->() { return &self; }
2843         const LDKChannelUpdate* operator &() const { return &self; }
2844         const LDKChannelUpdate* operator ->() const { return &self; }
2845 };
2846 class QueryChannelRange {
2847 private:
2848         LDKQueryChannelRange self;
2849 public:
2850         QueryChannelRange(const QueryChannelRange&) = delete;
2851         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
2852         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
2853         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
2854         ~QueryChannelRange() { QueryChannelRange_free(self); }
2855         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
2856         LDKQueryChannelRange* operator &() { return &self; }
2857         LDKQueryChannelRange* operator ->() { return &self; }
2858         const LDKQueryChannelRange* operator &() const { return &self; }
2859         const LDKQueryChannelRange* operator ->() const { return &self; }
2860 };
2861 class ReplyChannelRange {
2862 private:
2863         LDKReplyChannelRange self;
2864 public:
2865         ReplyChannelRange(const ReplyChannelRange&) = delete;
2866         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
2867         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
2868         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
2869         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
2870         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
2871         LDKReplyChannelRange* operator &() { return &self; }
2872         LDKReplyChannelRange* operator ->() { return &self; }
2873         const LDKReplyChannelRange* operator &() const { return &self; }
2874         const LDKReplyChannelRange* operator ->() const { return &self; }
2875 };
2876 class QueryShortChannelIds {
2877 private:
2878         LDKQueryShortChannelIds self;
2879 public:
2880         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
2881         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
2882         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
2883         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
2884         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
2885         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
2886         LDKQueryShortChannelIds* operator &() { return &self; }
2887         LDKQueryShortChannelIds* operator ->() { return &self; }
2888         const LDKQueryShortChannelIds* operator &() const { return &self; }
2889         const LDKQueryShortChannelIds* operator ->() const { return &self; }
2890 };
2891 class ReplyShortChannelIdsEnd {
2892 private:
2893         LDKReplyShortChannelIdsEnd self;
2894 public:
2895         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
2896         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
2897         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
2898         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
2899         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
2900         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
2901         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
2902         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
2903         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
2904         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
2905 };
2906 class GossipTimestampFilter {
2907 private:
2908         LDKGossipTimestampFilter self;
2909 public:
2910         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
2911         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
2912         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
2913         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
2914         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
2915         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
2916         LDKGossipTimestampFilter* operator &() { return &self; }
2917         LDKGossipTimestampFilter* operator ->() { return &self; }
2918         const LDKGossipTimestampFilter* operator &() const { return &self; }
2919         const LDKGossipTimestampFilter* operator ->() const { return &self; }
2920 };
2921 class ErrorAction {
2922 private:
2923         LDKErrorAction self;
2924 public:
2925         ErrorAction(const ErrorAction&) = delete;
2926         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
2927         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
2928         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
2929         ~ErrorAction() { ErrorAction_free(self); }
2930         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
2931         LDKErrorAction* operator &() { return &self; }
2932         LDKErrorAction* operator ->() { return &self; }
2933         const LDKErrorAction* operator &() const { return &self; }
2934         const LDKErrorAction* operator ->() const { return &self; }
2935 };
2936 class LightningError {
2937 private:
2938         LDKLightningError self;
2939 public:
2940         LightningError(const LightningError&) = delete;
2941         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
2942         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
2943         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
2944         ~LightningError() { LightningError_free(self); }
2945         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
2946         LDKLightningError* operator &() { return &self; }
2947         LDKLightningError* operator ->() { return &self; }
2948         const LDKLightningError* operator &() const { return &self; }
2949         const LDKLightningError* operator ->() const { return &self; }
2950 };
2951 class CommitmentUpdate {
2952 private:
2953         LDKCommitmentUpdate self;
2954 public:
2955         CommitmentUpdate(const CommitmentUpdate&) = delete;
2956         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
2957         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
2958         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
2959         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
2960         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
2961         LDKCommitmentUpdate* operator &() { return &self; }
2962         LDKCommitmentUpdate* operator ->() { return &self; }
2963         const LDKCommitmentUpdate* operator &() const { return &self; }
2964         const LDKCommitmentUpdate* operator ->() const { return &self; }
2965 };
2966 class ChannelMessageHandler {
2967 private:
2968         LDKChannelMessageHandler self;
2969 public:
2970         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
2971         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
2972         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
2973         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
2974         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
2975         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
2976         LDKChannelMessageHandler* operator &() { return &self; }
2977         LDKChannelMessageHandler* operator ->() { return &self; }
2978         const LDKChannelMessageHandler* operator &() const { return &self; }
2979         const LDKChannelMessageHandler* operator ->() const { return &self; }
2980         /**
2981          *  Handle an incoming open_channel message from the given peer.
2982          */
2983         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
2984         /**
2985          *  Handle an incoming accept_channel message from the given peer.
2986          */
2987         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
2988         /**
2989          *  Handle an incoming funding_created message from the given peer.
2990          */
2991         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
2992         /**
2993          *  Handle an incoming funding_signed message from the given peer.
2994          */
2995         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
2996         /**
2997          *  Handle an incoming funding_locked message from the given peer.
2998          */
2999         inline void handle_funding_locked(struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
3000         /**
3001          *  Handle an incoming shutdown message from the given peer.
3002          */
3003         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3004         /**
3005          *  Handle an incoming closing_signed message from the given peer.
3006          */
3007         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3008         /**
3009          *  Handle an incoming update_add_htlc message from the given peer.
3010          */
3011         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3012         /**
3013          *  Handle an incoming update_fulfill_htlc message from the given peer.
3014          */
3015         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3016         /**
3017          *  Handle an incoming update_fail_htlc message from the given peer.
3018          */
3019         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3020         /**
3021          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3022          */
3023         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3024         /**
3025          *  Handle an incoming commitment_signed message from the given peer.
3026          */
3027         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3028         /**
3029          *  Handle an incoming revoke_and_ack message from the given peer.
3030          */
3031         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3032         /**
3033          *  Handle an incoming update_fee message from the given peer.
3034          */
3035         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3036         /**
3037          *  Handle an incoming announcement_signatures message from the given peer.
3038          */
3039         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3040         /**
3041          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3042          *  is believed to be possible in the future (eg they're sending us messages we don't
3043          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3044          *  and any outstanding channels should be failed.
3045          */
3046         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3047         /**
3048          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3049          */
3050         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3051         /**
3052          *  Handle an incoming channel_reestablish message from the given peer.
3053          */
3054         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3055         /**
3056          *  Handle an incoming channel update from the given peer.
3057          */
3058         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3059         /**
3060          *  Handle an incoming error message from the given peer.
3061          */
3062         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3063 };
3064 class RoutingMessageHandler {
3065 private:
3066         LDKRoutingMessageHandler self;
3067 public:
3068         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3069         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3070         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3071         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3072         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3073         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3074         LDKRoutingMessageHandler* operator &() { return &self; }
3075         LDKRoutingMessageHandler* operator ->() { return &self; }
3076         const LDKRoutingMessageHandler* operator &() const { return &self; }
3077         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3078         /**
3079          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3080          *  false or returning an Err otherwise.
3081          */
3082         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3083         /**
3084          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3085          *  or returning an Err otherwise.
3086          */
3087         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3088         /**
3089          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3090          *  false or returning an Err otherwise.
3091          */
3092         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3093         /**
3094          *  Gets a subset of the channel announcements and updates required to dump our routing table
3095          *  to a remote node, starting at the short_channel_id indicated by starting_point and
3096          *  including the batch_amount entries immediately higher in numerical value than starting_point.
3097          */
3098         inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount);
3099         /**
3100          *  Gets a subset of the node announcements required to dump our routing table to a remote node,
3101          *  starting at the node *after* the provided publickey and including batch_amount entries
3102          *  immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
3103          *  If None is provided for starting_point, we start at the first node.
3104          * 
3105          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3106          */
3107         inline LDK::CVec_NodeAnnouncementZ get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount);
3108         /**
3109          *  Called when a connection is established with a peer. This can be used to
3110          *  perform routing table synchronization using a strategy defined by the
3111          *  implementor.
3112          */
3113         inline void sync_routing_table(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
3114         /**
3115          *  Handles the reply of a query we initiated to learn about channels
3116          *  for a given range of blocks. We can expect to receive one or more
3117          *  replies to a single query.
3118          */
3119         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
3120         /**
3121          *  Handles the reply of a query we initiated asking for routing gossip
3122          *  messages for a list of channels. We should receive this message when
3123          *  a node has completed its best effort to send us the pertaining routing
3124          *  gossip messages.
3125          */
3126         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
3127         /**
3128          *  Handles when a peer asks us to send a list of short_channel_ids
3129          *  for the requested range of blocks.
3130          */
3131         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
3132         /**
3133          *  Handles when a peer asks us to send routing gossip messages for a
3134          *  list of short_channel_ids.
3135          */
3136         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
3137 };
3138 class Level {
3139 private:
3140         LDKLevel self;
3141 public:
3142         Level(const Level&) = delete;
3143         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
3144         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
3145         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
3146         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
3147         LDKLevel* operator &() { return &self; }
3148         LDKLevel* operator ->() { return &self; }
3149         const LDKLevel* operator &() const { return &self; }
3150         const LDKLevel* operator ->() const { return &self; }
3151 };
3152 class Logger {
3153 private:
3154         LDKLogger self;
3155 public:
3156         Logger(const Logger&) = delete;
3157         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
3158         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
3159         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
3160         ~Logger() { Logger_free(self); }
3161         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
3162         LDKLogger* operator &() { return &self; }
3163         LDKLogger* operator ->() { return &self; }
3164         const LDKLogger* operator &() const { return &self; }
3165         const LDKLogger* operator ->() const { return &self; }
3166         /**
3167          *  Logs the `Record`
3168          */
3169         inline void log(const char *record);
3170 };
3171 class ChainMonitor {
3172 private:
3173         LDKChainMonitor self;
3174 public:
3175         ChainMonitor(const ChainMonitor&) = delete;
3176         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
3177         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
3178         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
3179         ~ChainMonitor() { ChainMonitor_free(self); }
3180         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
3181         LDKChainMonitor* operator &() { return &self; }
3182         LDKChainMonitor* operator ->() { return &self; }
3183         const LDKChainMonitor* operator &() const { return &self; }
3184         const LDKChainMonitor* operator ->() const { return &self; }
3185 };
3186 class CVec_SpendableOutputDescriptorZ {
3187 private:
3188         LDKCVec_SpendableOutputDescriptorZ self;
3189 public:
3190         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
3191         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
3192         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
3193         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
3194         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
3195         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
3196         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
3197         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
3198         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
3199         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
3200 };
3201 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
3202 private:
3203         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
3204 public:
3205         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
3206         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3207         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3208         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
3209         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
3210         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ& operator=(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return *this; }
3211         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
3212         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
3213         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
3214         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
3215 };
3216 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3217 private:
3218         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
3219 public:
3220         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
3221         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
3222         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
3223         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
3224         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
3225         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ& operator=(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return *this; }
3226         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
3227         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
3228         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
3229         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
3230 };
3231 class CResult_HTLCUpdateDecodeErrorZ {
3232 private:
3233         LDKCResult_HTLCUpdateDecodeErrorZ self;
3234 public:
3235         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
3236         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
3237         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
3238         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
3239         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
3240         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
3241         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
3242         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
3243         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
3244         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
3245 };
3246 class C2Tuple_SignatureCVec_SignatureZZ {
3247 private:
3248         LDKC2Tuple_SignatureCVec_SignatureZZ self;
3249 public:
3250         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
3251         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
3252         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
3253         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
3254         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
3255         C2Tuple_SignatureCVec_SignatureZZ& operator=(C2Tuple_SignatureCVec_SignatureZZ&& o) { C2Tuple_SignatureCVec_SignatureZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); return *this; }
3256         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
3257         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
3258         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
3259         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
3260 };
3261 class CVec_C2Tuple_u32TxOutZZ {
3262 private:
3263         LDKCVec_C2Tuple_u32TxOutZZ self;
3264 public:
3265         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
3266         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
3267         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
3268         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
3269         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
3270         CVec_C2Tuple_u32TxOutZZ& operator=(CVec_C2Tuple_u32TxOutZZ&& o) { CVec_C2Tuple_u32TxOutZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); return *this; }
3271         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
3272         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
3273         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
3274         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
3275 };
3276 class CResult_ChannelInfoDecodeErrorZ {
3277 private:
3278         LDKCResult_ChannelInfoDecodeErrorZ self;
3279 public:
3280         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
3281         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
3282         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
3283         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
3284         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
3285         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
3286         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
3287         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
3288         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
3289         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
3290 };
3291 class CResult_FundingCreatedDecodeErrorZ {
3292 private:
3293         LDKCResult_FundingCreatedDecodeErrorZ self;
3294 public:
3295         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
3296         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
3297         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
3298         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
3299         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
3300         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
3301         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
3302         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
3303         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
3304         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
3305 };
3306 class CResult_ChannelAnnouncementDecodeErrorZ {
3307 private:
3308         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
3309 public:
3310         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
3311         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
3312         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
3313         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
3314         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
3315         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
3316         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
3317         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
3318         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
3319         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
3320 };
3321 class CResult_PositiveTimestampCreationErrorZ {
3322 private:
3323         LDKCResult_PositiveTimestampCreationErrorZ self;
3324 public:
3325         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
3326         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
3327         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
3328         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
3329         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
3330         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
3331         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
3332         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
3333         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
3334         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
3335 };
3336 class CResult_CVec_u8ZPeerHandleErrorZ {
3337 private:
3338         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
3339 public:
3340         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
3341         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
3342         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
3343         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
3344         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
3345         CResult_CVec_u8ZPeerHandleErrorZ& operator=(CResult_CVec_u8ZPeerHandleErrorZ&& o) { CResult_CVec_u8ZPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); return *this; }
3346         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
3347         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
3348         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
3349         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
3350 };
3351 class CResult_InvoiceFeaturesDecodeErrorZ {
3352 private:
3353         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
3354 public:
3355         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
3356         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
3357         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
3358         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
3359         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
3360         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
3361         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
3362         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
3363         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
3364         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
3365 };
3366 class COption_NetworkUpdateZ {
3367 private:
3368         LDKCOption_NetworkUpdateZ self;
3369 public:
3370         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
3371         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
3372         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
3373         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
3374         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
3375         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
3376         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
3377         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
3378         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
3379         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
3380 };
3381 class COption_u64Z {
3382 private:
3383         LDKCOption_u64Z self;
3384 public:
3385         COption_u64Z(const COption_u64Z&) = delete;
3386         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
3387         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
3388         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
3389         ~COption_u64Z() { COption_u64Z_free(self); }
3390         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
3391         LDKCOption_u64Z* operator &() { return &self; }
3392         LDKCOption_u64Z* operator ->() { return &self; }
3393         const LDKCOption_u64Z* operator &() const { return &self; }
3394         const LDKCOption_u64Z* operator ->() const { return &self; }
3395 };
3396 class CResult_TxOutAccessErrorZ {
3397 private:
3398         LDKCResult_TxOutAccessErrorZ self;
3399 public:
3400         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
3401         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
3402         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
3403         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
3404         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
3405         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
3406         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
3407         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
3408         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
3409         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
3410 };
3411 class CResult_TrustedClosingTransactionNoneZ {
3412 private:
3413         LDKCResult_TrustedClosingTransactionNoneZ self;
3414 public:
3415         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
3416         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
3417         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
3418         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
3419         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
3420         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
3421         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
3422         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
3423         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
3424         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
3425 };
3426 class CResult_ChannelMonitorUpdateDecodeErrorZ {
3427 private:
3428         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
3429 public:
3430         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
3431         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
3432         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
3433         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
3434         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
3435         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
3436         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
3437         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
3438         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
3439         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
3440 };
3441 class C2Tuple_PublicKeyTypeZ {
3442 private:
3443         LDKC2Tuple_PublicKeyTypeZ self;
3444 public:
3445         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
3446         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
3447         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
3448         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
3449         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
3450         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
3451         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
3452         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
3453         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
3454         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
3455 };
3456 class CResult_NetAddressDecodeErrorZ {
3457 private:
3458         LDKCResult_NetAddressDecodeErrorZ self;
3459 public:
3460         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
3461         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
3462         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
3463         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
3464         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
3465         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
3466         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
3467         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
3468         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
3469         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
3470 };
3471 class CResult_ChannelReestablishDecodeErrorZ {
3472 private:
3473         LDKCResult_ChannelReestablishDecodeErrorZ self;
3474 public:
3475         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
3476         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
3477         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
3478         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
3479         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
3480         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
3481         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
3482         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
3483         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
3484         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
3485 };
3486 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
3487 private:
3488         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
3489 public:
3490         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
3491         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
3492         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
3493         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
3494         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
3495         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
3496         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
3497         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
3498         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
3499         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
3500 };
3501 class CResult_ReplyChannelRangeDecodeErrorZ {
3502 private:
3503         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
3504 public:
3505         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
3506         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
3507         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
3508         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
3509         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
3510         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
3511         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
3512         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
3513         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
3514         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
3515 };
3516 class CResult_CommitmentSignedDecodeErrorZ {
3517 private:
3518         LDKCResult_CommitmentSignedDecodeErrorZ self;
3519 public:
3520         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
3521         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
3522         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
3523         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
3524         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
3525         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
3526         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
3527         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
3528         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
3529         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
3530 };
3531 class CVec_UpdateAddHTLCZ {
3532 private:
3533         LDKCVec_UpdateAddHTLCZ self;
3534 public:
3535         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
3536         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
3537         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
3538         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
3539         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
3540         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
3541         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
3542         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
3543         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
3544         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
3545 };
3546 class CResult_GossipTimestampFilterDecodeErrorZ {
3547 private:
3548         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
3549 public:
3550         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
3551         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
3552         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
3553         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
3554         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
3555         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
3556         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
3557         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
3558         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
3559         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
3560 };
3561 class COption_u32Z {
3562 private:
3563         LDKCOption_u32Z self;
3564 public:
3565         COption_u32Z(const COption_u32Z&) = delete;
3566         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
3567         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
3568         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
3569         ~COption_u32Z() { COption_u32Z_free(self); }
3570         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
3571         LDKCOption_u32Z* operator &() { return &self; }
3572         LDKCOption_u32Z* operator ->() { return &self; }
3573         const LDKCOption_u32Z* operator &() const { return &self; }
3574         const LDKCOption_u32Z* operator ->() const { return &self; }
3575 };
3576 class CResult_InitFeaturesDecodeErrorZ {
3577 private:
3578         LDKCResult_InitFeaturesDecodeErrorZ self;
3579 public:
3580         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
3581         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
3582         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
3583         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
3584         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
3585         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
3586         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
3587         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
3588         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
3589         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
3590 };
3591 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
3592 private:
3593         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
3594 public:
3595         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
3596         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
3597         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
3598         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
3599         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
3600         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
3601         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
3602         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
3603         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
3604         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
3605 };
3606 class CResult_InvoiceSignOrCreationErrorZ {
3607 private:
3608         LDKCResult_InvoiceSignOrCreationErrorZ self;
3609 public:
3610         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
3611         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
3612         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
3613         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
3614         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
3615         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
3616         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
3617         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
3618         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
3619         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
3620 };
3621 class COption_FilterZ {
3622 private:
3623         LDKCOption_FilterZ self;
3624 public:
3625         COption_FilterZ(const COption_FilterZ&) = delete;
3626         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
3627         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
3628         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
3629         ~COption_FilterZ() { COption_FilterZ_free(self); }
3630         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
3631         LDKCOption_FilterZ* operator &() { return &self; }
3632         LDKCOption_FilterZ* operator ->() { return &self; }
3633         const LDKCOption_FilterZ* operator &() const { return &self; }
3634         const LDKCOption_FilterZ* operator ->() const { return &self; }
3635 };
3636 class CResult_CommitmentTransactionDecodeErrorZ {
3637 private:
3638         LDKCResult_CommitmentTransactionDecodeErrorZ self;
3639 public:
3640         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
3641         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
3642         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
3643         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
3644         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
3645         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
3646         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
3647         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
3648         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
3649         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
3650 };
3651 class COption_C2Tuple_usizeTransactionZZ {
3652 private:
3653         LDKCOption_C2Tuple_usizeTransactionZZ self;
3654 public:
3655         COption_C2Tuple_usizeTransactionZZ(const COption_C2Tuple_usizeTransactionZZ&) = delete;
3656         COption_C2Tuple_usizeTransactionZZ(COption_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); }
3657         COption_C2Tuple_usizeTransactionZZ(LDKCOption_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); }
3658         operator LDKCOption_C2Tuple_usizeTransactionZZ() && { LDKCOption_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); return res; }
3659         ~COption_C2Tuple_usizeTransactionZZ() { COption_C2Tuple_usizeTransactionZZ_free(self); }
3660         COption_C2Tuple_usizeTransactionZZ& operator=(COption_C2Tuple_usizeTransactionZZ&& o) { COption_C2Tuple_usizeTransactionZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); return *this; }
3661         LDKCOption_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
3662         LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
3663         const LDKCOption_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
3664         const LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
3665 };
3666 class CResult_TransactionNoneZ {
3667 private:
3668         LDKCResult_TransactionNoneZ self;
3669 public:
3670         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
3671         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
3672         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
3673         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
3674         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
3675         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
3676         LDKCResult_TransactionNoneZ* operator &() { return &self; }
3677         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
3678         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
3679         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
3680 };
3681 class CResult_SignedRawInvoiceNoneZ {
3682 private:
3683         LDKCResult_SignedRawInvoiceNoneZ self;
3684 public:
3685         CResult_SignedRawInvoiceNoneZ(const CResult_SignedRawInvoiceNoneZ&) = delete;
3686         CResult_SignedRawInvoiceNoneZ(CResult_SignedRawInvoiceNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceNoneZ)); }
3687         CResult_SignedRawInvoiceNoneZ(LDKCResult_SignedRawInvoiceNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceNoneZ)); }
3688         operator LDKCResult_SignedRawInvoiceNoneZ() && { LDKCResult_SignedRawInvoiceNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceNoneZ)); return res; }
3689         ~CResult_SignedRawInvoiceNoneZ() { CResult_SignedRawInvoiceNoneZ_free(self); }
3690         CResult_SignedRawInvoiceNoneZ& operator=(CResult_SignedRawInvoiceNoneZ&& o) { CResult_SignedRawInvoiceNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceNoneZ)); return *this; }
3691         LDKCResult_SignedRawInvoiceNoneZ* operator &() { return &self; }
3692         LDKCResult_SignedRawInvoiceNoneZ* operator ->() { return &self; }
3693         const LDKCResult_SignedRawInvoiceNoneZ* operator &() const { return &self; }
3694         const LDKCResult_SignedRawInvoiceNoneZ* operator ->() const { return &self; }
3695 };
3696 class CResult_ExpiryTimeCreationErrorZ {
3697 private:
3698         LDKCResult_ExpiryTimeCreationErrorZ self;
3699 public:
3700         CResult_ExpiryTimeCreationErrorZ(const CResult_ExpiryTimeCreationErrorZ&) = delete;
3701         CResult_ExpiryTimeCreationErrorZ(CResult_ExpiryTimeCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ExpiryTimeCreationErrorZ)); }
3702         CResult_ExpiryTimeCreationErrorZ(LDKCResult_ExpiryTimeCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ExpiryTimeCreationErrorZ)); }
3703         operator LDKCResult_ExpiryTimeCreationErrorZ() && { LDKCResult_ExpiryTimeCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ExpiryTimeCreationErrorZ)); return res; }
3704         ~CResult_ExpiryTimeCreationErrorZ() { CResult_ExpiryTimeCreationErrorZ_free(self); }
3705         CResult_ExpiryTimeCreationErrorZ& operator=(CResult_ExpiryTimeCreationErrorZ&& o) { CResult_ExpiryTimeCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ExpiryTimeCreationErrorZ)); return *this; }
3706         LDKCResult_ExpiryTimeCreationErrorZ* operator &() { return &self; }
3707         LDKCResult_ExpiryTimeCreationErrorZ* operator ->() { return &self; }
3708         const LDKCResult_ExpiryTimeCreationErrorZ* operator &() const { return &self; }
3709         const LDKCResult_ExpiryTimeCreationErrorZ* operator ->() const { return &self; }
3710 };
3711 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
3712 private:
3713         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
3714 public:
3715         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
3716         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
3717         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
3718         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
3719         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
3720         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
3721         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
3722         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
3723         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
3724         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
3725 };
3726 class CResult_PingDecodeErrorZ {
3727 private:
3728         LDKCResult_PingDecodeErrorZ self;
3729 public:
3730         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
3731         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
3732         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
3733         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
3734         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
3735         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
3736         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
3737         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
3738         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
3739         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
3740 };
3741 class CVec_TransactionOutputsZ {
3742 private:
3743         LDKCVec_TransactionOutputsZ self;
3744 public:
3745         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
3746         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
3747         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
3748         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
3749         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
3750         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
3751         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
3752         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
3753         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
3754         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
3755 };
3756 class CResult_ErrorMessageDecodeErrorZ {
3757 private:
3758         LDKCResult_ErrorMessageDecodeErrorZ self;
3759 public:
3760         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
3761         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
3762         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
3763         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
3764         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
3765         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
3766         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
3767         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
3768         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
3769         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
3770 };
3771 class CResult_OpenChannelDecodeErrorZ {
3772 private:
3773         LDKCResult_OpenChannelDecodeErrorZ self;
3774 public:
3775         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
3776         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
3777         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
3778         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
3779         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
3780         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
3781         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
3782         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
3783         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
3784         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
3785 };
3786 class CVec_CVec_u8ZZ {
3787 private:
3788         LDKCVec_CVec_u8ZZ self;
3789 public:
3790         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
3791         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
3792         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
3793         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
3794         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
3795         CVec_CVec_u8ZZ& operator=(CVec_CVec_u8ZZ&& o) { CVec_CVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); return *this; }
3796         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
3797         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
3798         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
3799         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
3800 };
3801 class CResult_SecretKeyErrorZ {
3802 private:
3803         LDKCResult_SecretKeyErrorZ self;
3804 public:
3805         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
3806         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
3807         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
3808         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
3809         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
3810         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
3811         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
3812         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
3813         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
3814         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
3815 };
3816 class CResult_ShutdownScriptDecodeErrorZ {
3817 private:
3818         LDKCResult_ShutdownScriptDecodeErrorZ self;
3819 public:
3820         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
3821         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
3822         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
3823         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
3824         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
3825         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
3826         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
3827         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
3828         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
3829         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
3830 };
3831 class CResult_InvoiceNoneZ {
3832 private:
3833         LDKCResult_InvoiceNoneZ self;
3834 public:
3835         CResult_InvoiceNoneZ(const CResult_InvoiceNoneZ&) = delete;
3836         CResult_InvoiceNoneZ(CResult_InvoiceNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceNoneZ)); }
3837         CResult_InvoiceNoneZ(LDKCResult_InvoiceNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceNoneZ)); }
3838         operator LDKCResult_InvoiceNoneZ() && { LDKCResult_InvoiceNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceNoneZ)); return res; }
3839         ~CResult_InvoiceNoneZ() { CResult_InvoiceNoneZ_free(self); }
3840         CResult_InvoiceNoneZ& operator=(CResult_InvoiceNoneZ&& o) { CResult_InvoiceNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceNoneZ)); return *this; }
3841         LDKCResult_InvoiceNoneZ* operator &() { return &self; }
3842         LDKCResult_InvoiceNoneZ* operator ->() { return &self; }
3843         const LDKCResult_InvoiceNoneZ* operator &() const { return &self; }
3844         const LDKCResult_InvoiceNoneZ* operator ->() const { return &self; }
3845 };
3846 class CResult_QueryChannelRangeDecodeErrorZ {
3847 private:
3848         LDKCResult_QueryChannelRangeDecodeErrorZ self;
3849 public:
3850         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
3851         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
3852         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
3853         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
3854         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
3855         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
3856         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
3857         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
3858         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
3859         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
3860 };
3861 class CResult_TxCreationKeysDecodeErrorZ {
3862 private:
3863         LDKCResult_TxCreationKeysDecodeErrorZ self;
3864 public:
3865         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
3866         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
3867         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
3868         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
3869         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
3870         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
3871         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
3872         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
3873         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
3874         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
3875 };
3876 class C2Tuple_usizeTransactionZ {
3877 private:
3878         LDKC2Tuple_usizeTransactionZ self;
3879 public:
3880         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
3881         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
3882         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
3883         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
3884         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
3885         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
3886         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
3887         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
3888         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
3889         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
3890 };
3891 class CResult_ChannelFeaturesDecodeErrorZ {
3892 private:
3893         LDKCResult_ChannelFeaturesDecodeErrorZ self;
3894 public:
3895         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
3896         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
3897         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
3898         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
3899         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
3900         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
3901         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
3902         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
3903         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
3904         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
3905 };
3906 class CVec_ChannelMonitorZ {
3907 private:
3908         LDKCVec_ChannelMonitorZ self;
3909 public:
3910         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
3911         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
3912         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
3913         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
3914         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
3915         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
3916         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
3917         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
3918         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
3919         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
3920 };
3921 class CVec_TransactionZ {
3922 private:
3923         LDKCVec_TransactionZ self;
3924 public:
3925         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
3926         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
3927         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
3928         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
3929         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
3930         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
3931         LDKCVec_TransactionZ* operator &() { return &self; }
3932         LDKCVec_TransactionZ* operator ->() { return &self; }
3933         const LDKCVec_TransactionZ* operator &() const { return &self; }
3934         const LDKCVec_TransactionZ* operator ->() const { return &self; }
3935 };
3936 class CResult_UpdateFeeDecodeErrorZ {
3937 private:
3938         LDKCResult_UpdateFeeDecodeErrorZ self;
3939 public:
3940         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
3941         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
3942         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
3943         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
3944         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
3945         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
3946         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
3947         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
3948         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
3949         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
3950 };
3951 class CResult_RouteHopDecodeErrorZ {
3952 private:
3953         LDKCResult_RouteHopDecodeErrorZ self;
3954 public:
3955         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
3956         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
3957         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
3958         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
3959         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
3960         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
3961         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
3962         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
3963         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
3964         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
3965 };
3966 class CResult_NodeAnnouncementDecodeErrorZ {
3967 private:
3968         LDKCResult_NodeAnnouncementDecodeErrorZ self;
3969 public:
3970         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
3971         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
3972         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
3973         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
3974         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
3975         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
3976         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
3977         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
3978         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
3979         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
3980 };
3981 class CVec_BalanceZ {
3982 private:
3983         LDKCVec_BalanceZ self;
3984 public:
3985         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
3986         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
3987         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
3988         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
3989         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
3990         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
3991         LDKCVec_BalanceZ* operator &() { return &self; }
3992         LDKCVec_BalanceZ* operator ->() { return &self; }
3993         const LDKCVec_BalanceZ* operator &() const { return &self; }
3994         const LDKCVec_BalanceZ* operator ->() const { return &self; }
3995 };
3996 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
3997 private:
3998         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
3999 public:
4000         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4001         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4002         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4003         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4004         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4005         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4006         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4007         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4008         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4009         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4010 };
4011 class CResult_boolLightningErrorZ {
4012 private:
4013         LDKCResult_boolLightningErrorZ self;
4014 public:
4015         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4016         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4017         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4018         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4019         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4020         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4021         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4022         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4023         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4024         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4025 };
4026 class CResult_TxCreationKeysErrorZ {
4027 private:
4028         LDKCResult_TxCreationKeysErrorZ self;
4029 public:
4030         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
4031         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
4032         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
4033         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
4034         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
4035         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
4036         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
4037         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
4038         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
4039         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
4040 };
4041 class C2Tuple_BlockHashChannelMonitorZ {
4042 private:
4043         LDKC2Tuple_BlockHashChannelMonitorZ self;
4044 public:
4045         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
4046         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
4047         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
4048         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
4049         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
4050         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
4051         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
4052         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
4053         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
4054         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
4055 };
4056 class CResult_FundingSignedDecodeErrorZ {
4057 private:
4058         LDKCResult_FundingSignedDecodeErrorZ self;
4059 public:
4060         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
4061         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
4062         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
4063         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
4064         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
4065         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
4066         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
4067         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
4068         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
4069         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
4070 };
4071 class CResult_ShutdownScriptInvalidShutdownScriptZ {
4072 private:
4073         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
4074 public:
4075         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
4076         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
4077         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
4078         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
4079         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
4080         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
4081         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
4082         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
4083         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
4084         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
4085 };
4086 class CResult_RecoverableSignatureNoneZ {
4087 private:
4088         LDKCResult_RecoverableSignatureNoneZ self;
4089 public:
4090         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
4091         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
4092         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
4093         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
4094         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
4095         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
4096         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
4097         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
4098         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
4099         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
4100 };
4101 class CResult_NodeAnnouncementInfoDecodeErrorZ {
4102 private:
4103         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
4104 public:
4105         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
4106         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
4107         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
4108         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
4109         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
4110         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
4111         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
4112         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
4113         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
4114         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
4115 };
4116 class CResult_NetAddressu8Z {
4117 private:
4118         LDKCResult_NetAddressu8Z self;
4119 public:
4120         CResult_NetAddressu8Z(const CResult_NetAddressu8Z&) = delete;
4121         CResult_NetAddressu8Z(CResult_NetAddressu8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressu8Z)); }
4122         CResult_NetAddressu8Z(LDKCResult_NetAddressu8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressu8Z)); }
4123         operator LDKCResult_NetAddressu8Z() && { LDKCResult_NetAddressu8Z res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressu8Z)); return res; }
4124         ~CResult_NetAddressu8Z() { CResult_NetAddressu8Z_free(self); }
4125         CResult_NetAddressu8Z& operator=(CResult_NetAddressu8Z&& o) { CResult_NetAddressu8Z_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressu8Z)); return *this; }
4126         LDKCResult_NetAddressu8Z* operator &() { return &self; }
4127         LDKCResult_NetAddressu8Z* operator ->() { return &self; }
4128         const LDKCResult_NetAddressu8Z* operator &() const { return &self; }
4129         const LDKCResult_NetAddressu8Z* operator ->() const { return &self; }
4130 };
4131 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
4132 private:
4133         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
4134 public:
4135         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
4136         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4137         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4138         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
4139         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
4140         C3Tuple_RawInvoice_u832InvoiceSignatureZ& operator=(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); return *this; }
4141         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
4142         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
4143         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
4144         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
4145 };
4146 class CVec_UpdateFailMalformedHTLCZ {
4147 private:
4148         LDKCVec_UpdateFailMalformedHTLCZ self;
4149 public:
4150         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
4151         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
4152         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
4153         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
4154         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
4155         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
4156         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
4157         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
4158         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
4159         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
4160 };
4161 class CResult_NetworkGraphDecodeErrorZ {
4162 private:
4163         LDKCResult_NetworkGraphDecodeErrorZ self;
4164 public:
4165         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
4166         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
4167         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
4168         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
4169         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
4170         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
4171         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
4172         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
4173         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
4174         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
4175 };
4176 class CVec_RouteHopZ {
4177 private:
4178         LDKCVec_RouteHopZ self;
4179 public:
4180         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
4181         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
4182         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
4183         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
4184         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
4185         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
4186         LDKCVec_RouteHopZ* operator &() { return &self; }
4187         LDKCVec_RouteHopZ* operator ->() { return &self; }
4188         const LDKCVec_RouteHopZ* operator &() const { return &self; }
4189         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
4190 };
4191 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
4192 private:
4193         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
4194 public:
4195         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
4196         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
4197         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
4198         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
4199         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
4200         CVec_C2Tuple_BlockHashChannelMonitorZZ& operator=(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); return *this; }
4201         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
4202         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
4203         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
4204         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
4205 };
4206 class CResult_NonePaymentSendFailureZ {
4207 private:
4208         LDKCResult_NonePaymentSendFailureZ self;
4209 public:
4210         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
4211         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
4212         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
4213         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
4214         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
4215         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
4216         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
4217         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
4218         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
4219         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
4220 };
4221 class CResult_RouteLightningErrorZ {
4222 private:
4223         LDKCResult_RouteLightningErrorZ self;
4224 public:
4225         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
4226         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
4227         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
4228         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
4229         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
4230         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
4231         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
4232         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
4233         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
4234         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
4235 };
4236 class CResult_ChannelPublicKeysDecodeErrorZ {
4237 private:
4238         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
4239 public:
4240         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
4241         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
4242         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
4243         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
4244         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
4245         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
4246         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
4247         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
4248         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
4249         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
4250 };
4251 class CVec_u8Z {
4252 private:
4253         LDKCVec_u8Z self;
4254 public:
4255         CVec_u8Z(const CVec_u8Z&) = delete;
4256         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
4257         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
4258         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
4259         ~CVec_u8Z() { CVec_u8Z_free(self); }
4260         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
4261         LDKCVec_u8Z* operator &() { return &self; }
4262         LDKCVec_u8Z* operator ->() { return &self; }
4263         const LDKCVec_u8Z* operator &() const { return &self; }
4264         const LDKCVec_u8Z* operator ->() const { return &self; }
4265 };
4266 class CResult_NodeInfoDecodeErrorZ {
4267 private:
4268         LDKCResult_NodeInfoDecodeErrorZ self;
4269 public:
4270         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
4271         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
4272         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
4273         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
4274         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
4275         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
4276         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
4277         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
4278         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
4279         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
4280 };
4281 class CResult_ClosingSignedDecodeErrorZ {
4282 private:
4283         LDKCResult_ClosingSignedDecodeErrorZ self;
4284 public:
4285         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
4286         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
4287         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
4288         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
4289         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
4290         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
4291         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
4292         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
4293         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
4294         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
4295 };
4296 class CResult_HolderCommitmentTransactionDecodeErrorZ {
4297 private:
4298         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
4299 public:
4300         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
4301         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
4302         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
4303         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
4304         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
4305         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
4306         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4307         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4308         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4309         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4310 };
4311 class CVec_CResult_NoneAPIErrorZZ {
4312 private:
4313         LDKCVec_CResult_NoneAPIErrorZZ self;
4314 public:
4315         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
4316         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
4317         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
4318         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
4319         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
4320         CVec_CResult_NoneAPIErrorZZ& operator=(CVec_CResult_NoneAPIErrorZZ&& o) { CVec_CResult_NoneAPIErrorZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); return *this; }
4321         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
4322         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
4323         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
4324         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
4325 };
4326 class CResult_SignatureNoneZ {
4327 private:
4328         LDKCResult_SignatureNoneZ self;
4329 public:
4330         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
4331         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
4332         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
4333         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
4334         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
4335         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
4336         LDKCResult_SignatureNoneZ* operator &() { return &self; }
4337         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
4338         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
4339         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
4340 };
4341 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
4342 private:
4343         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
4344 public:
4345         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
4346         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
4347         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
4348         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
4349         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
4350         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ& operator=(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return *this; }
4351         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
4352         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
4353         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
4354         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
4355 };
4356 class CResult_InitDecodeErrorZ {
4357 private:
4358         LDKCResult_InitDecodeErrorZ self;
4359 public:
4360         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
4361         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
4362         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
4363         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
4364         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
4365         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
4366         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
4367         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
4368         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
4369         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
4370 };
4371 class CResult_OutPointDecodeErrorZ {
4372 private:
4373         LDKCResult_OutPointDecodeErrorZ self;
4374 public:
4375         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
4376         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
4377         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
4378         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
4379         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
4380         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
4381         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
4382         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
4383         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
4384         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
4385 };
4386 class CVec_ChannelDetailsZ {
4387 private:
4388         LDKCVec_ChannelDetailsZ self;
4389 public:
4390         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
4391         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
4392         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
4393         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
4394         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
4395         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
4396         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
4397         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
4398         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
4399         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
4400 };
4401 class CResult_SignDecodeErrorZ {
4402 private:
4403         LDKCResult_SignDecodeErrorZ self;
4404 public:
4405         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
4406         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
4407         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
4408         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
4409         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
4410         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
4411         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
4412         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
4413         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
4414         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
4415 };
4416 class CVec_MessageSendEventZ {
4417 private:
4418         LDKCVec_MessageSendEventZ self;
4419 public:
4420         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
4421         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
4422         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
4423         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
4424         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
4425         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
4426         LDKCVec_MessageSendEventZ* operator &() { return &self; }
4427         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
4428         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
4429         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
4430 };
4431 class C2Tuple_OutPointScriptZ {
4432 private:
4433         LDKC2Tuple_OutPointScriptZ self;
4434 public:
4435         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
4436         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
4437         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
4438         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
4439         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
4440         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
4441         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
4442         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
4443         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
4444         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
4445 };
4446 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
4447 private:
4448         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
4449 public:
4450         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
4451         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
4452         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
4453         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
4454         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
4455         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
4456         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
4457         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
4458         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
4459         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
4460 };
4461 class CVec_NodeAnnouncementZ {
4462 private:
4463         LDKCVec_NodeAnnouncementZ self;
4464 public:
4465         CVec_NodeAnnouncementZ(const CVec_NodeAnnouncementZ&) = delete;
4466         CVec_NodeAnnouncementZ(CVec_NodeAnnouncementZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); }
4467         CVec_NodeAnnouncementZ(LDKCVec_NodeAnnouncementZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); }
4468         operator LDKCVec_NodeAnnouncementZ() && { LDKCVec_NodeAnnouncementZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); return res; }
4469         ~CVec_NodeAnnouncementZ() { CVec_NodeAnnouncementZ_free(self); }
4470         CVec_NodeAnnouncementZ& operator=(CVec_NodeAnnouncementZ&& o) { CVec_NodeAnnouncementZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); return *this; }
4471         LDKCVec_NodeAnnouncementZ* operator &() { return &self; }
4472         LDKCVec_NodeAnnouncementZ* operator ->() { return &self; }
4473         const LDKCVec_NodeAnnouncementZ* operator &() const { return &self; }
4474         const LDKCVec_NodeAnnouncementZ* operator ->() const { return &self; }
4475 };
4476 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
4477 private:
4478         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
4479 public:
4480         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
4481         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
4482         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
4483         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
4484         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
4485         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
4486         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
4487         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
4488         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
4489         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4490 };
4491 class CVec_TxidZ {
4492 private:
4493         LDKCVec_TxidZ self;
4494 public:
4495         CVec_TxidZ(const CVec_TxidZ&) = delete;
4496         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
4497         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
4498         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
4499         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
4500         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
4501         LDKCVec_TxidZ* operator &() { return &self; }
4502         LDKCVec_TxidZ* operator ->() { return &self; }
4503         const LDKCVec_TxidZ* operator &() const { return &self; }
4504         const LDKCVec_TxidZ* operator ->() const { return &self; }
4505 };
4506 class CResult_NoneMonitorUpdateErrorZ {
4507 private:
4508         LDKCResult_NoneMonitorUpdateErrorZ self;
4509 public:
4510         CResult_NoneMonitorUpdateErrorZ(const CResult_NoneMonitorUpdateErrorZ&) = delete;
4511         CResult_NoneMonitorUpdateErrorZ(CResult_NoneMonitorUpdateErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneMonitorUpdateErrorZ)); }
4512         CResult_NoneMonitorUpdateErrorZ(LDKCResult_NoneMonitorUpdateErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneMonitorUpdateErrorZ)); }
4513         operator LDKCResult_NoneMonitorUpdateErrorZ() && { LDKCResult_NoneMonitorUpdateErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneMonitorUpdateErrorZ)); return res; }
4514         ~CResult_NoneMonitorUpdateErrorZ() { CResult_NoneMonitorUpdateErrorZ_free(self); }
4515         CResult_NoneMonitorUpdateErrorZ& operator=(CResult_NoneMonitorUpdateErrorZ&& o) { CResult_NoneMonitorUpdateErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneMonitorUpdateErrorZ)); return *this; }
4516         LDKCResult_NoneMonitorUpdateErrorZ* operator &() { return &self; }
4517         LDKCResult_NoneMonitorUpdateErrorZ* operator ->() { return &self; }
4518         const LDKCResult_NoneMonitorUpdateErrorZ* operator &() const { return &self; }
4519         const LDKCResult_NoneMonitorUpdateErrorZ* operator ->() const { return &self; }
4520 };
4521 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
4522 private:
4523         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
4524 public:
4525         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
4526         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
4527         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
4528         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
4529         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
4530         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ& operator=(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return *this; }
4531         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
4532         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
4533         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
4534         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
4535 };
4536 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
4537 private:
4538         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
4539 public:
4540         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
4541         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
4542         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
4543         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
4544         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
4545         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ& operator=(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return *this; }
4546         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
4547         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
4548         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
4549         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
4550 };
4551 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
4552 private:
4553         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
4554 public:
4555         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
4556         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4557         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4558         operator LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
4559         ~CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
4560         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ& operator=(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return *this; }
4561         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
4562         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
4563         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
4564         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
4565 };
4566 class CResult_CVec_CVec_u8ZZNoneZ {
4567 private:
4568         LDKCResult_CVec_CVec_u8ZZNoneZ self;
4569 public:
4570         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
4571         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
4572         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
4573         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
4574         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
4575         CResult_CVec_CVec_u8ZZNoneZ& operator=(CResult_CVec_CVec_u8ZZNoneZ&& o) { CResult_CVec_CVec_u8ZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); return *this; }
4576         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
4577         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
4578         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
4579         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
4580 };
4581 class C2Tuple_PaymentHashPaymentSecretZ {
4582 private:
4583         LDKC2Tuple_PaymentHashPaymentSecretZ self;
4584 public:
4585         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
4586         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
4587         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
4588         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
4589         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
4590         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
4591         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
4592         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
4593         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
4594         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
4595 };
4596 class COption_AccessZ {
4597 private:
4598         LDKCOption_AccessZ self;
4599 public:
4600         COption_AccessZ(const COption_AccessZ&) = delete;
4601         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
4602         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
4603         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
4604         ~COption_AccessZ() { COption_AccessZ_free(self); }
4605         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
4606         LDKCOption_AccessZ* operator &() { return &self; }
4607         LDKCOption_AccessZ* operator ->() { return &self; }
4608         const LDKCOption_AccessZ* operator &() const { return &self; }
4609         const LDKCOption_AccessZ* operator ->() const { return &self; }
4610 };
4611 class C2Tuple_BlockHashChannelManagerZ {
4612 private:
4613         LDKC2Tuple_BlockHashChannelManagerZ self;
4614 public:
4615         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
4616         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
4617         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
4618         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
4619         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
4620         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
4621         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
4622         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
4623         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
4624         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
4625 };
4626 class CResult_ChannelTransactionParametersDecodeErrorZ {
4627 private:
4628         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
4629 public:
4630         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
4631         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
4632         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
4633         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
4634         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
4635         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
4636         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
4637         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
4638         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
4639         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
4640 };
4641 class CResult_AcceptChannelDecodeErrorZ {
4642 private:
4643         LDKCResult_AcceptChannelDecodeErrorZ self;
4644 public:
4645         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
4646         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
4647         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
4648         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
4649         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
4650         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
4651         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
4652         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
4653         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
4654         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
4655 };
4656 class CVec_SignatureZ {
4657 private:
4658         LDKCVec_SignatureZ self;
4659 public:
4660         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
4661         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
4662         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
4663         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
4664         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
4665         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
4666         LDKCVec_SignatureZ* operator &() { return &self; }
4667         LDKCVec_SignatureZ* operator ->() { return &self; }
4668         const LDKCVec_SignatureZ* operator &() const { return &self; }
4669         const LDKCVec_SignatureZ* operator ->() const { return &self; }
4670 };
4671 class CVec_u64Z {
4672 private:
4673         LDKCVec_u64Z self;
4674 public:
4675         CVec_u64Z(const CVec_u64Z&) = delete;
4676         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
4677         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
4678         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
4679         ~CVec_u64Z() { CVec_u64Z_free(self); }
4680         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
4681         LDKCVec_u64Z* operator &() { return &self; }
4682         LDKCVec_u64Z* operator ->() { return &self; }
4683         const LDKCVec_u64Z* operator &() const { return &self; }
4684         const LDKCVec_u64Z* operator ->() const { return &self; }
4685 };
4686 class CResult_PongDecodeErrorZ {
4687 private:
4688         LDKCResult_PongDecodeErrorZ self;
4689 public:
4690         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
4691         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
4692         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
4693         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
4694         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
4695         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
4696         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
4697         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
4698         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
4699         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
4700 };
4701 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
4702 private:
4703         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
4704 public:
4705         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
4706         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
4707         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
4708         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
4709         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
4710         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4711         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4712         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4713         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4714         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4715 };
4716 class CResult_StringErrorZ {
4717 private:
4718         LDKCResult_StringErrorZ self;
4719 public:
4720         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
4721         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
4722         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
4723         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
4724         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
4725         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
4726         LDKCResult_StringErrorZ* operator &() { return &self; }
4727         LDKCResult_StringErrorZ* operator ->() { return &self; }
4728         const LDKCResult_StringErrorZ* operator &() const { return &self; }
4729         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
4730 };
4731 class CResult_NoneErrorZ {
4732 private:
4733         LDKCResult_NoneErrorZ self;
4734 public:
4735         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
4736         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
4737         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
4738         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
4739         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
4740         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
4741         LDKCResult_NoneErrorZ* operator &() { return &self; }
4742         LDKCResult_NoneErrorZ* operator ->() { return &self; }
4743         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
4744         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
4745 };
4746 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
4747 private:
4748         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
4749 public:
4750         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
4751         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
4752         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
4753         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
4754         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
4755         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ& operator=(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return *this; }
4756         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
4757         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
4758         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
4759         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
4760 };
4761 class CVec_RouteHintZ {
4762 private:
4763         LDKCVec_RouteHintZ self;
4764 public:
4765         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
4766         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
4767         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
4768         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
4769         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
4770         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
4771         LDKCVec_RouteHintZ* operator &() { return &self; }
4772         LDKCVec_RouteHintZ* operator ->() { return &self; }
4773         const LDKCVec_RouteHintZ* operator &() const { return &self; }
4774         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
4775 };
4776 class COption_u16Z {
4777 private:
4778         LDKCOption_u16Z self;
4779 public:
4780         COption_u16Z(const COption_u16Z&) = delete;
4781         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
4782         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
4783         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
4784         ~COption_u16Z() { COption_u16Z_free(self); }
4785         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
4786         LDKCOption_u16Z* operator &() { return &self; }
4787         LDKCOption_u16Z* operator ->() { return &self; }
4788         const LDKCOption_u16Z* operator &() const { return &self; }
4789         const LDKCOption_u16Z* operator ->() const { return &self; }
4790 };
4791 class CVec_CVec_RouteHopZZ {
4792 private:
4793         LDKCVec_CVec_RouteHopZZ self;
4794 public:
4795         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
4796         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
4797         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
4798         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
4799         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
4800         CVec_CVec_RouteHopZZ& operator=(CVec_CVec_RouteHopZZ&& o) { CVec_CVec_RouteHopZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); return *this; }
4801         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
4802         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
4803         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
4804         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
4805 };
4806 class CResult_TrustedCommitmentTransactionNoneZ {
4807 private:
4808         LDKCResult_TrustedCommitmentTransactionNoneZ self;
4809 public:
4810         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
4811         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
4812         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
4813         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
4814         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
4815         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
4816         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
4817         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
4818         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
4819         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
4820 };
4821 class CResult_NoneLightningErrorZ {
4822 private:
4823         LDKCResult_NoneLightningErrorZ self;
4824 public:
4825         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
4826         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
4827         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
4828         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
4829         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
4830         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
4831         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
4832         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
4833         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
4834         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
4835 };
4836 class CResult_NonePeerHandleErrorZ {
4837 private:
4838         LDKCResult_NonePeerHandleErrorZ self;
4839 public:
4840         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
4841         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
4842         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
4843         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
4844         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
4845         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
4846         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
4847         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
4848         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
4849         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
4850 };
4851 class CResult_CVec_SignatureZNoneZ {
4852 private:
4853         LDKCResult_CVec_SignatureZNoneZ self;
4854 public:
4855         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
4856         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
4857         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
4858         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
4859         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
4860         CResult_CVec_SignatureZNoneZ& operator=(CResult_CVec_SignatureZNoneZ&& o) { CResult_CVec_SignatureZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); return *this; }
4861         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
4862         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
4863         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
4864         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
4865 };
4866 class CResult_DescriptionCreationErrorZ {
4867 private:
4868         LDKCResult_DescriptionCreationErrorZ self;
4869 public:
4870         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
4871         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
4872         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
4873         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
4874         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
4875         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
4876         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
4877         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
4878         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
4879         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
4880 };
4881 class CVec_C2Tuple_PublicKeyTypeZZ {
4882 private:
4883         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
4884 public:
4885         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
4886         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
4887         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
4888         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
4889         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
4890         CVec_C2Tuple_PublicKeyTypeZZ& operator=(CVec_C2Tuple_PublicKeyTypeZZ&& o) { CVec_C2Tuple_PublicKeyTypeZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); return *this; }
4891         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
4892         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
4893         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
4894         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
4895 };
4896 class CResult_RoutingFeesDecodeErrorZ {
4897 private:
4898         LDKCResult_RoutingFeesDecodeErrorZ self;
4899 public:
4900         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
4901         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
4902         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
4903         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
4904         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
4905         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
4906         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
4907         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
4908         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
4909         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
4910 };
4911 class CResult_PayeePubKeyErrorZ {
4912 private:
4913         LDKCResult_PayeePubKeyErrorZ self;
4914 public:
4915         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
4916         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
4917         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
4918         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
4919         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
4920         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
4921         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
4922         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
4923         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
4924         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
4925 };
4926 class CResult_QueryShortChannelIdsDecodeErrorZ {
4927 private:
4928         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
4929 public:
4930         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
4931         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
4932         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
4933         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
4934         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
4935         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
4936         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
4937         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
4938         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
4939         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
4940 };
4941 class CResult_InvoiceSemanticErrorZ {
4942 private:
4943         LDKCResult_InvoiceSemanticErrorZ self;
4944 public:
4945         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
4946         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
4947         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
4948         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
4949         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
4950         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
4951         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
4952         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
4953         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
4954         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
4955 };
4956 class CResult_UpdateAddHTLCDecodeErrorZ {
4957 private:
4958         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
4959 public:
4960         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
4961         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
4962         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
4963         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
4964         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
4965         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
4966         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
4967         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
4968         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
4969         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
4970 };
4971 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
4972 private:
4973         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
4974 public:
4975         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
4976         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
4977         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
4978         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
4979         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
4980         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
4981         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
4982         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
4983         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
4984         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
4985 };
4986 class CResult_NoneAPIErrorZ {
4987 private:
4988         LDKCResult_NoneAPIErrorZ self;
4989 public:
4990         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
4991         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
4992         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
4993         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
4994         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
4995         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
4996         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
4997         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
4998         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
4999         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
5000 };
5001 class CVec_NetAddressZ {
5002 private:
5003         LDKCVec_NetAddressZ self;
5004 public:
5005         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
5006         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
5007         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
5008         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
5009         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
5010         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
5011         LDKCVec_NetAddressZ* operator &() { return &self; }
5012         LDKCVec_NetAddressZ* operator ->() { return &self; }
5013         const LDKCVec_NetAddressZ* operator &() const { return &self; }
5014         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
5015 };
5016 class CVec_C2Tuple_usizeTransactionZZ {
5017 private:
5018         LDKCVec_C2Tuple_usizeTransactionZZ self;
5019 public:
5020         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
5021         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
5022         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
5023         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
5024         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
5025         CVec_C2Tuple_usizeTransactionZZ& operator=(CVec_C2Tuple_usizeTransactionZZ&& o) { CVec_C2Tuple_usizeTransactionZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); return *this; }
5026         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
5027         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
5028         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
5029         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
5030 };
5031 class CVec_PublicKeyZ {
5032 private:
5033         LDKCVec_PublicKeyZ self;
5034 public:
5035         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
5036         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
5037         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
5038         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
5039         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
5040         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
5041         LDKCVec_PublicKeyZ* operator &() { return &self; }
5042         LDKCVec_PublicKeyZ* operator ->() { return &self; }
5043         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
5044         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
5045 };
5046 class COption_TypeZ {
5047 private:
5048         LDKCOption_TypeZ self;
5049 public:
5050         COption_TypeZ(const COption_TypeZ&) = delete;
5051         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
5052         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
5053         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
5054         ~COption_TypeZ() { COption_TypeZ_free(self); }
5055         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
5056         LDKCOption_TypeZ* operator &() { return &self; }
5057         LDKCOption_TypeZ* operator ->() { return &self; }
5058         const LDKCOption_TypeZ* operator &() const { return &self; }
5059         const LDKCOption_TypeZ* operator ->() const { return &self; }
5060 };
5061 class CResult_COption_TypeZDecodeErrorZ {
5062 private:
5063         LDKCResult_COption_TypeZDecodeErrorZ self;
5064 public:
5065         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
5066         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
5067         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
5068         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
5069         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
5070         CResult_COption_TypeZDecodeErrorZ& operator=(CResult_COption_TypeZDecodeErrorZ&& o) { CResult_COption_TypeZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); return *this; }
5071         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
5072         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
5073         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
5074         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
5075 };
5076 class CResult_DirectionalChannelInfoDecodeErrorZ {
5077 private:
5078         LDKCResult_DirectionalChannelInfoDecodeErrorZ self;
5079 public:
5080         CResult_DirectionalChannelInfoDecodeErrorZ(const CResult_DirectionalChannelInfoDecodeErrorZ&) = delete;
5081         CResult_DirectionalChannelInfoDecodeErrorZ(CResult_DirectionalChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DirectionalChannelInfoDecodeErrorZ)); }
5082         CResult_DirectionalChannelInfoDecodeErrorZ(LDKCResult_DirectionalChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ)); }
5083         operator LDKCResult_DirectionalChannelInfoDecodeErrorZ() && { LDKCResult_DirectionalChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ)); return res; }
5084         ~CResult_DirectionalChannelInfoDecodeErrorZ() { CResult_DirectionalChannelInfoDecodeErrorZ_free(self); }
5085         CResult_DirectionalChannelInfoDecodeErrorZ& operator=(CResult_DirectionalChannelInfoDecodeErrorZ&& o) { CResult_DirectionalChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DirectionalChannelInfoDecodeErrorZ)); return *this; }
5086         LDKCResult_DirectionalChannelInfoDecodeErrorZ* operator &() { return &self; }
5087         LDKCResult_DirectionalChannelInfoDecodeErrorZ* operator ->() { return &self; }
5088         const LDKCResult_DirectionalChannelInfoDecodeErrorZ* operator &() const { return &self; }
5089         const LDKCResult_DirectionalChannelInfoDecodeErrorZ* operator ->() const { return &self; }
5090 };
5091 class C2Tuple_u32TxOutZ {
5092 private:
5093         LDKC2Tuple_u32TxOutZ self;
5094 public:
5095         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
5096         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
5097         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
5098         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
5099         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
5100         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
5101         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
5102         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
5103         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
5104         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
5105 };
5106 class CResult_UpdateFailHTLCDecodeErrorZ {
5107 private:
5108         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
5109 public:
5110         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
5111         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
5112         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
5113         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
5114         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
5115         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
5116         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
5117         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
5118         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
5119         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
5120 };
5121 class CResult_ChannelConfigDecodeErrorZ {
5122 private:
5123         LDKCResult_ChannelConfigDecodeErrorZ self;
5124 public:
5125         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
5126         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
5127         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
5128         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
5129         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
5130         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
5131         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
5132         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
5133         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
5134         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
5135 };
5136 class CVec_PrivateRouteZ {
5137 private:
5138         LDKCVec_PrivateRouteZ self;
5139 public:
5140         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
5141         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
5142         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
5143         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
5144         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
5145         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
5146         LDKCVec_PrivateRouteZ* operator &() { return &self; }
5147         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
5148         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
5149         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
5150 };
5151 class CResult_SpendableOutputDescriptorDecodeErrorZ {
5152 private:
5153         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
5154 public:
5155         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
5156         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
5157         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
5158         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
5159         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
5160         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
5161         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5162         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5163         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5164         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5165 };
5166 class CResult_RevokeAndACKDecodeErrorZ {
5167 private:
5168         LDKCResult_RevokeAndACKDecodeErrorZ self;
5169 public:
5170         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
5171         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
5172         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
5173         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
5174         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
5175         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
5176         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
5177         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
5178         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
5179         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
5180 };
5181 class CResult_UnsignedChannelUpdateDecodeErrorZ {
5182 private:
5183         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
5184 public:
5185         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
5186         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
5187         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
5188         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
5189         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
5190         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
5191         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
5192         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
5193         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
5194         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
5195 };
5196 class CResult_ShutdownDecodeErrorZ {
5197 private:
5198         LDKCResult_ShutdownDecodeErrorZ self;
5199 public:
5200         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
5201         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
5202         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
5203         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
5204         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
5205         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
5206         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
5207         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
5208         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
5209         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
5210 };
5211 class CVec_EventZ {
5212 private:
5213         LDKCVec_EventZ self;
5214 public:
5215         CVec_EventZ(const CVec_EventZ&) = delete;
5216         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
5217         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
5218         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
5219         ~CVec_EventZ() { CVec_EventZ_free(self); }
5220         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
5221         LDKCVec_EventZ* operator &() { return &self; }
5222         LDKCVec_EventZ* operator ->() { return &self; }
5223         const LDKCVec_EventZ* operator &() const { return &self; }
5224         const LDKCVec_EventZ* operator ->() const { return &self; }
5225 };
5226 class CResult_NoneSemanticErrorZ {
5227 private:
5228         LDKCResult_NoneSemanticErrorZ self;
5229 public:
5230         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
5231         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
5232         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
5233         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
5234         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
5235         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
5236         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
5237         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
5238         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
5239         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
5240 };
5241 class CVec_MonitorEventZ {
5242 private:
5243         LDKCVec_MonitorEventZ self;
5244 public:
5245         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
5246         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
5247         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
5248         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
5249         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
5250         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
5251         LDKCVec_MonitorEventZ* operator &() { return &self; }
5252         LDKCVec_MonitorEventZ* operator ->() { return &self; }
5253         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
5254         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
5255 };
5256 class CVec_C2Tuple_u32ScriptZZ {
5257 private:
5258         LDKCVec_C2Tuple_u32ScriptZZ self;
5259 public:
5260         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
5261         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
5262         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
5263         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
5264         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
5265         CVec_C2Tuple_u32ScriptZZ& operator=(CVec_C2Tuple_u32ScriptZZ&& o) { CVec_C2Tuple_u32ScriptZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); return *this; }
5266         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
5267         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
5268         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
5269         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
5270 };
5271 class CResult_NoneChannelMonitorUpdateErrZ {
5272 private:
5273         LDKCResult_NoneChannelMonitorUpdateErrZ self;
5274 public:
5275         CResult_NoneChannelMonitorUpdateErrZ(const CResult_NoneChannelMonitorUpdateErrZ&) = delete;
5276         CResult_NoneChannelMonitorUpdateErrZ(CResult_NoneChannelMonitorUpdateErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); }
5277         CResult_NoneChannelMonitorUpdateErrZ(LDKCResult_NoneChannelMonitorUpdateErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); }
5278         operator LDKCResult_NoneChannelMonitorUpdateErrZ() && { LDKCResult_NoneChannelMonitorUpdateErrZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); return res; }
5279         ~CResult_NoneChannelMonitorUpdateErrZ() { CResult_NoneChannelMonitorUpdateErrZ_free(self); }
5280         CResult_NoneChannelMonitorUpdateErrZ& operator=(CResult_NoneChannelMonitorUpdateErrZ&& o) { CResult_NoneChannelMonitorUpdateErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); return *this; }
5281         LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() { return &self; }
5282         LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() { return &self; }
5283         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() const { return &self; }
5284         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() const { return &self; }
5285 };
5286 class CResult_PaymentHashPaymentSendFailureZ {
5287 private:
5288         LDKCResult_PaymentHashPaymentSendFailureZ self;
5289 public:
5290         CResult_PaymentHashPaymentSendFailureZ(const CResult_PaymentHashPaymentSendFailureZ&) = delete;
5291         CResult_PaymentHashPaymentSendFailureZ(CResult_PaymentHashPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); }
5292         CResult_PaymentHashPaymentSendFailureZ(LDKCResult_PaymentHashPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); }
5293         operator LDKCResult_PaymentHashPaymentSendFailureZ() && { LDKCResult_PaymentHashPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); return res; }
5294         ~CResult_PaymentHashPaymentSendFailureZ() { CResult_PaymentHashPaymentSendFailureZ_free(self); }
5295         CResult_PaymentHashPaymentSendFailureZ& operator=(CResult_PaymentHashPaymentSendFailureZ&& o) { CResult_PaymentHashPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); return *this; }
5296         LDKCResult_PaymentHashPaymentSendFailureZ* operator &() { return &self; }
5297         LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() { return &self; }
5298         const LDKCResult_PaymentHashPaymentSendFailureZ* operator &() const { return &self; }
5299         const LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() const { return &self; }
5300 };
5301 class CResult_SiPrefixNoneZ {
5302 private:
5303         LDKCResult_SiPrefixNoneZ self;
5304 public:
5305         CResult_SiPrefixNoneZ(const CResult_SiPrefixNoneZ&) = delete;
5306         CResult_SiPrefixNoneZ(CResult_SiPrefixNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixNoneZ)); }
5307         CResult_SiPrefixNoneZ(LDKCResult_SiPrefixNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixNoneZ)); }
5308         operator LDKCResult_SiPrefixNoneZ() && { LDKCResult_SiPrefixNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixNoneZ)); return res; }
5309         ~CResult_SiPrefixNoneZ() { CResult_SiPrefixNoneZ_free(self); }
5310         CResult_SiPrefixNoneZ& operator=(CResult_SiPrefixNoneZ&& o) { CResult_SiPrefixNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixNoneZ)); return *this; }
5311         LDKCResult_SiPrefixNoneZ* operator &() { return &self; }
5312         LDKCResult_SiPrefixNoneZ* operator ->() { return &self; }
5313         const LDKCResult_SiPrefixNoneZ* operator &() const { return &self; }
5314         const LDKCResult_SiPrefixNoneZ* operator ->() const { return &self; }
5315 };
5316 class CResult_PublicKeyErrorZ {
5317 private:
5318         LDKCResult_PublicKeyErrorZ self;
5319 public:
5320         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
5321         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
5322         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
5323         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
5324         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
5325         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
5326         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
5327         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
5328         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
5329         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
5330 };
5331 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
5332 private:
5333         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
5334 public:
5335         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
5336         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
5337         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
5338         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
5339         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
5340         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
5341         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
5342         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
5343         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
5344         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
5345 };
5346 class CResult_NoneNoneZ {
5347 private:
5348         LDKCResult_NoneNoneZ self;
5349 public:
5350         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
5351         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
5352         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
5353         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
5354         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
5355         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
5356         LDKCResult_NoneNoneZ* operator &() { return &self; }
5357         LDKCResult_NoneNoneZ* operator ->() { return &self; }
5358         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
5359         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
5360 };
5361 class CResult_PrivateRouteCreationErrorZ {
5362 private:
5363         LDKCResult_PrivateRouteCreationErrorZ self;
5364 public:
5365         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
5366         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
5367         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
5368         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
5369         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
5370         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
5371         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
5372         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
5373         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
5374         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
5375 };
5376 class CResult_boolPeerHandleErrorZ {
5377 private:
5378         LDKCResult_boolPeerHandleErrorZ self;
5379 public:
5380         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
5381         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
5382         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
5383         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
5384         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
5385         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
5386         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
5387         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
5388         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
5389         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
5390 };
5391 class CVec_APIErrorZ {
5392 private:
5393         LDKCVec_APIErrorZ self;
5394 public:
5395         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
5396         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
5397         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
5398         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
5399         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
5400         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
5401         LDKCVec_APIErrorZ* operator &() { return &self; }
5402         LDKCVec_APIErrorZ* operator ->() { return &self; }
5403         const LDKCVec_APIErrorZ* operator &() const { return &self; }
5404         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
5405 };
5406 class CResult_ChannelUpdateDecodeErrorZ {
5407 private:
5408         LDKCResult_ChannelUpdateDecodeErrorZ self;
5409 public:
5410         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
5411         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
5412         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
5413         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
5414         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
5415         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
5416         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
5417         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
5418         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
5419         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
5420 };
5421 class CVec_UpdateFulfillHTLCZ {
5422 private:
5423         LDKCVec_UpdateFulfillHTLCZ self;
5424 public:
5425         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
5426         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
5427         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
5428         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
5429         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
5430         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
5431         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
5432         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
5433         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
5434         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
5435 };
5436 class CResult_AnnouncementSignaturesDecodeErrorZ {
5437 private:
5438         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
5439 public:
5440         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
5441         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
5442         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
5443         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
5444         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
5445         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
5446         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
5447         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
5448         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
5449         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
5450 };
5451 class CResult_UpdateFulfillHTLCDecodeErrorZ {
5452 private:
5453         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
5454 public:
5455         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
5456         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
5457         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
5458         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
5459         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
5460         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
5461         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
5462         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
5463         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
5464         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
5465 };
5466 class CResult_NodeFeaturesDecodeErrorZ {
5467 private:
5468         LDKCResult_NodeFeaturesDecodeErrorZ self;
5469 public:
5470         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
5471         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
5472         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
5473         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
5474         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
5475         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
5476         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
5477         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
5478         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
5479         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
5480 };
5481 class CResult_InMemorySignerDecodeErrorZ {
5482 private:
5483         LDKCResult_InMemorySignerDecodeErrorZ self;
5484 public:
5485         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
5486         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
5487         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
5488         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
5489         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
5490         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
5491         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
5492         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
5493         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
5494         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
5495 };
5496 class CResult_PaymentSecretAPIErrorZ {
5497 private:
5498         LDKCResult_PaymentSecretAPIErrorZ self;
5499 public:
5500         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
5501         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
5502         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
5503         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
5504         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
5505         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
5506         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
5507         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
5508         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
5509         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
5510 };
5511 class C2Tuple_u32ScriptZ {
5512 private:
5513         LDKC2Tuple_u32ScriptZ self;
5514 public:
5515         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
5516         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
5517         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
5518         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
5519         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
5520         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
5521         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
5522         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
5523         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
5524         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
5525 };
5526 class CResult_CResult_NetAddressu8ZDecodeErrorZ {
5527 private:
5528         LDKCResult_CResult_NetAddressu8ZDecodeErrorZ self;
5529 public:
5530         CResult_CResult_NetAddressu8ZDecodeErrorZ(const CResult_CResult_NetAddressu8ZDecodeErrorZ&) = delete;
5531         CResult_CResult_NetAddressu8ZDecodeErrorZ(CResult_CResult_NetAddressu8ZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CResult_NetAddressu8ZDecodeErrorZ)); }
5532         CResult_CResult_NetAddressu8ZDecodeErrorZ(LDKCResult_CResult_NetAddressu8ZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CResult_NetAddressu8ZDecodeErrorZ)); }
5533         operator LDKCResult_CResult_NetAddressu8ZDecodeErrorZ() && { LDKCResult_CResult_NetAddressu8ZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CResult_NetAddressu8ZDecodeErrorZ)); return res; }
5534         ~CResult_CResult_NetAddressu8ZDecodeErrorZ() { CResult_CResult_NetAddressu8ZDecodeErrorZ_free(self); }
5535         CResult_CResult_NetAddressu8ZDecodeErrorZ& operator=(CResult_CResult_NetAddressu8ZDecodeErrorZ&& o) { CResult_CResult_NetAddressu8ZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CResult_NetAddressu8ZDecodeErrorZ)); return *this; }
5536         LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* operator &() { return &self; }
5537         LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* operator ->() { return &self; }
5538         const LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* operator &() const { return &self; }
5539         const LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* operator ->() const { return &self; }
5540 };
5541 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
5542 private:
5543         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
5544 public:
5545         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
5546         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
5547         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
5548         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
5549         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
5550         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
5551         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
5552         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
5553         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
5554         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
5555 };
5556 class CResult_RouteDecodeErrorZ {
5557 private:
5558         LDKCResult_RouteDecodeErrorZ self;
5559 public:
5560         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
5561         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
5562         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
5563         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
5564         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
5565         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
5566         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
5567         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
5568         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
5569         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
5570 };
5571 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
5572 private:
5573         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
5574 public:
5575         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
5576         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
5577         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
5578         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
5579         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
5580         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
5581         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5582         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5583         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5584         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5585 };
5586 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
5587 private:
5588         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
5589 public:
5590         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
5591         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
5592         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
5593         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
5594         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
5595         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ& operator=(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return *this; }
5596         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
5597         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
5598         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
5599         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
5600 };
5601 class CVec_TxOutZ {
5602 private:
5603         LDKCVec_TxOutZ self;
5604 public:
5605         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
5606         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
5607         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
5608         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
5609         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
5610         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
5611         LDKCVec_TxOutZ* operator &() { return &self; }
5612         LDKCVec_TxOutZ* operator ->() { return &self; }
5613         const LDKCVec_TxOutZ* operator &() const { return &self; }
5614         const LDKCVec_TxOutZ* operator ->() const { return &self; }
5615 };
5616 class CVec_UpdateFailHTLCZ {
5617 private:
5618         LDKCVec_UpdateFailHTLCZ self;
5619 public:
5620         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
5621         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
5622         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
5623         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
5624         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
5625         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
5626         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
5627         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
5628         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
5629         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
5630 };
5631 class CResult_FundingLockedDecodeErrorZ {
5632 private:
5633         LDKCResult_FundingLockedDecodeErrorZ self;
5634 public:
5635         CResult_FundingLockedDecodeErrorZ(const CResult_FundingLockedDecodeErrorZ&) = delete;
5636         CResult_FundingLockedDecodeErrorZ(CResult_FundingLockedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingLockedDecodeErrorZ)); }
5637         CResult_FundingLockedDecodeErrorZ(LDKCResult_FundingLockedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingLockedDecodeErrorZ)); }
5638         operator LDKCResult_FundingLockedDecodeErrorZ() && { LDKCResult_FundingLockedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingLockedDecodeErrorZ)); return res; }
5639         ~CResult_FundingLockedDecodeErrorZ() { CResult_FundingLockedDecodeErrorZ_free(self); }
5640         CResult_FundingLockedDecodeErrorZ& operator=(CResult_FundingLockedDecodeErrorZ&& o) { CResult_FundingLockedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingLockedDecodeErrorZ)); return *this; }
5641         LDKCResult_FundingLockedDecodeErrorZ* operator &() { return &self; }
5642         LDKCResult_FundingLockedDecodeErrorZ* operator ->() { return &self; }
5643         const LDKCResult_FundingLockedDecodeErrorZ* operator &() const { return &self; }
5644         const LDKCResult_FundingLockedDecodeErrorZ* operator ->() const { return &self; }
5645 };
5646
5647 inline LDK::CResult_NoneErrorZ ChannelManagerPersister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
5648         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
5649         return ret;
5650 }
5651 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
5652         (self.broadcast_transaction)(self.this_arg, tx);
5653 }
5654 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
5655         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
5656         return ret;
5657 }
5658 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
5659         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
5660         return ret;
5661 }
5662 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
5663         (self.block_connected)(self.this_arg, block, height);
5664 }
5665 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
5666         (self.block_disconnected)(self.this_arg, header, height);
5667 }
5668 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
5669         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
5670 }
5671 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
5672         (self.transaction_unconfirmed)(self.this_arg, txid);
5673 }
5674 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
5675         (self.best_block_updated)(self.this_arg, header, height);
5676 }
5677 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
5678         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
5679         return ret;
5680 }
5681 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
5682         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
5683         return ret;
5684 }
5685 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
5686         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_channel)(self.this_arg, funding_txo, update);
5687         return ret;
5688 }
5689 inline LDK::CVec_MonitorEventZ Watch::release_pending_monitor_events() {
5690         LDK::CVec_MonitorEventZ ret = (self.release_pending_monitor_events)(self.this_arg);
5691         return ret;
5692 }
5693 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
5694         (self.register_tx)(self.this_arg, txid, script_pubkey);
5695 }
5696 inline LDK::COption_C2Tuple_usizeTransactionZZ Filter::register_output(struct LDKWatchedOutput output) {
5697         LDK::COption_C2Tuple_usizeTransactionZZ ret = (self.register_output)(self.this_arg, output);
5698         return ret;
5699 }
5700 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
5701         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
5702         return ret;
5703 }
5704 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
5705         (self.process_pending_events)(self.this_arg, handler);
5706 }
5707 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
5708         (self.handle_event)(self.this_arg, event);
5709 }
5710 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
5711         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
5712         return ret;
5713 }
5714 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
5715         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
5716         return ret;
5717 }
5718 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx) {
5719         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx);
5720         return ret;
5721 }
5722 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
5723         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
5724         return ret;
5725 }
5726 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx) {
5727         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx);
5728         return ret;
5729 }
5730 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
5731         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
5732         return ret;
5733 }
5734 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
5735         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
5736         return ret;
5737 }
5738 inline LDK::CResult_SignatureNoneZ BaseSign::sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]) {
5739         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
5740         return ret;
5741 }
5742 inline LDK::CResult_SignatureNoneZ BaseSign::sign_justice_revoked_htlc(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc) {
5743         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
5744         return ret;
5745 }
5746 inline LDK::CResult_SignatureNoneZ BaseSign::sign_counterparty_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc) {
5747         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
5748         return ret;
5749 }
5750 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
5751         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
5752         return ret;
5753 }
5754 inline LDK::CResult_SignatureNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
5755         LDK::CResult_SignatureNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
5756         return ret;
5757 }
5758 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
5759         (self.ready_channel)(self.this_arg, channel_parameters);
5760 }
5761 inline LDKSecretKey KeysInterface::get_node_secret() {
5762         LDKSecretKey ret = (self.get_node_secret)(self.this_arg);
5763         return ret;
5764 }
5765 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
5766         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
5767         return ret;
5768 }
5769 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
5770         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
5771         return ret;
5772 }
5773 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
5774         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
5775         return ret;
5776 }
5777 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
5778         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
5779         return ret;
5780 }
5781 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
5782         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
5783         return ret;
5784 }
5785 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKCVec_u8Z invoice_preimage) {
5786         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, invoice_preimage);
5787         return ret;
5788 }
5789 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
5790         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
5791         return ret;
5792 }
5793 inline uint16_t Type::type_id() {
5794         uint16_t ret = (self.type_id)(self.this_arg);
5795         return ret;
5796 }
5797 inline LDK::Str Type::debug_str() {
5798         LDK::Str ret = (self.debug_str)(self.this_arg);
5799         return ret;
5800 }
5801 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::persist_new_channel(struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data) {
5802         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.persist_new_channel)(self.this_arg, id, data);
5803         return ret;
5804 }
5805 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::update_persisted_channel(struct LDKOutPoint id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data) {
5806         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_persisted_channel)(self.this_arg, id, update, data);
5807         return ret;
5808 }
5809 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
5810         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
5811         return ret;
5812 }
5813 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
5814         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
5815         return ret;
5816 }
5817 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
5818         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
5819         return ret;
5820 }
5821 inline void SocketDescriptor::disconnect_socket() {
5822         (self.disconnect_socket)(self.this_arg);
5823 }
5824 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
5825         bool ret = (self.eq)(self.this_arg, other_arg);
5826         return ret;
5827 }
5828 inline uint64_t SocketDescriptor::hash() {
5829         uint64_t ret = (self.hash)(self.this_arg);
5830         return ret;
5831 }
5832 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
5833         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
5834 }
5835 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
5836         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
5837 }
5838 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
5839         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
5840 }
5841 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
5842         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
5843 }
5844 inline void ChannelMessageHandler::handle_funding_locked(struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg) {
5845         (self.handle_funding_locked)(self.this_arg, their_node_id, msg);
5846 }
5847 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
5848         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
5849 }
5850 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
5851         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
5852 }
5853 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
5854         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
5855 }
5856 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
5857         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
5858 }
5859 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
5860         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
5861 }
5862 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
5863         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
5864 }
5865 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
5866         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
5867 }
5868 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
5869         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
5870 }
5871 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
5872         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
5873 }
5874 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
5875         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
5876 }
5877 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
5878         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
5879 }
5880 inline void ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
5881         (self.peer_connected)(self.this_arg, their_node_id, msg);
5882 }
5883 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
5884         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
5885 }
5886 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
5887         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
5888 }
5889 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
5890         (self.handle_error)(self.this_arg, their_node_id, msg);
5891 }
5892 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
5893         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
5894         return ret;
5895 }
5896 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
5897         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
5898         return ret;
5899 }
5900 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
5901         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
5902         return ret;
5903 }
5904 inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount) {
5905         LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcements)(self.this_arg, starting_point, batch_amount);
5906         return ret;
5907 }
5908 inline LDK::CVec_NodeAnnouncementZ RoutingMessageHandler::get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount) {
5909         LDK::CVec_NodeAnnouncementZ ret = (self.get_next_node_announcements)(self.this_arg, starting_point, batch_amount);
5910         return ret;
5911 }
5912 inline void RoutingMessageHandler::sync_routing_table(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
5913         (self.sync_routing_table)(self.this_arg, their_node_id, init);
5914 }
5915 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
5916         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
5917         return ret;
5918 }
5919 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
5920         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
5921         return ret;
5922 }
5923 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
5924         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
5925         return ret;
5926 }
5927 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
5928         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
5929         return ret;
5930 }
5931 inline void Logger::log(const char *record) {
5932         (self.log)(self.this_arg, record);
5933 }
5934 }