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