1b383c094ef84d04f9c2694795496e86f793b4b0
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class CounterpartyCommitmentSecrets;
6 class TxCreationKeys;
7 class ChannelPublicKeys;
8 class HTLCOutputInCommitment;
9 class ChannelTransactionParameters;
10 class CounterpartyChannelTransactionParameters;
11 class DirectedChannelTransactionParameters;
12 class HolderCommitmentTransaction;
13 class BuiltCommitmentTransaction;
14 class ClosingTransaction;
15 class TrustedClosingTransaction;
16 class CommitmentTransaction;
17 class TrustedCommitmentTransaction;
18 class ShutdownScript;
19 class InvalidShutdownScript;
20 class BackgroundProcessor;
21 class GossipSync;
22 class RouteHop;
23 class Route;
24 class RouteParameters;
25 class PaymentParameters;
26 class RouteHint;
27 class RouteHintHop;
28 class BroadcasterInterface;
29 class ConfirmationTarget;
30 class FeeEstimator;
31 class PaymentPurpose;
32 class ClosureReason;
33 class Event;
34 class MessageSendEvent;
35 class MessageSendEventsProvider;
36 class EventsProvider;
37 class EventHandler;
38 class BestBlock;
39 class AccessError;
40 class Access;
41 class Listen;
42 class Confirm;
43 class ChannelMonitorUpdateErr;
44 class Watch;
45 class Filter;
46 class WatchedOutput;
47 class Score;
48 class LockableScore;
49 class MultiThreadedLockableScore;
50 class ChannelUsage;
51 class FixedPenaltyScorer;
52 class ProbabilisticScorer;
53 class ProbabilisticScoringParameters;
54 class InitFeatures;
55 class NodeFeatures;
56 class ChannelFeatures;
57 class InvoiceFeatures;
58 class ChannelTypeFeatures;
59 class NodeId;
60 class NetworkGraph;
61 class ReadOnlyNetworkGraph;
62 class NetworkUpdate;
63 class P2PGossipSync;
64 class ChannelUpdateInfo;
65 class ChannelInfo;
66 class DirectedChannelInfo;
67 class EffectiveCapacity;
68 class RoutingFees;
69 class NodeAnnouncementInfo;
70 class NodeAlias;
71 class NodeInfo;
72 class DelayedPaymentOutputDescriptor;
73 class StaticPaymentOutputDescriptor;
74 class SpendableOutputDescriptor;
75 class BaseSign;
76 class Sign;
77 class Recipient;
78 class KeysInterface;
79 class InMemorySigner;
80 class KeysManager;
81 class PhantomKeysManager;
82 class FilesystemPersister;
83 class ChannelManager;
84 class ChainParameters;
85 class CounterpartyForwardingInfo;
86 class ChannelCounterparty;
87 class ChannelDetails;
88 class PaymentSendFailure;
89 class PhantomRouteHints;
90 class ChannelManagerReadArgs;
91 class ChannelHandshakeConfig;
92 class ChannelHandshakeLimits;
93 class ChannelConfig;
94 class UserConfig;
95 class APIError;
96 class BigSize;
97 class OutPoint;
98 class CustomMessageReader;
99 class Type;
100 class InvoicePayer;
101 class Payer;
102 class Router;
103 class Retry;
104 class PaymentError;
105 class ParseError;
106 class ParseOrSemanticError;
107 class Invoice;
108 class SignedRawInvoice;
109 class RawInvoice;
110 class RawDataPart;
111 class PositiveTimestamp;
112 class SiPrefix;
113 class Currency;
114 class Sha256;
115 class Description;
116 class PayeePubKey;
117 class ExpiryTime;
118 class MinFinalCltvExpiry;
119 class Fallback;
120 class InvoiceSignature;
121 class PrivateRoute;
122 class CreationError;
123 class SemanticError;
124 class SignOrCreationError;
125 class ChannelMonitorUpdate;
126 class MonitorEvent;
127 class HTLCUpdate;
128 class Balance;
129 class ChannelMonitor;
130 class ExpandedKey;
131 class CustomMessageHandler;
132 class IgnoringMessageHandler;
133 class ErroringMessageHandler;
134 class MessageHandler;
135 class SocketDescriptor;
136 class PeerHandleError;
137 class PeerManager;
138 class RapidGossipSync;
139 class Persister;
140 class DecodeError;
141 class Init;
142 class ErrorMessage;
143 class WarningMessage;
144 class Ping;
145 class Pong;
146 class OpenChannel;
147 class AcceptChannel;
148 class FundingCreated;
149 class FundingSigned;
150 class ChannelReady;
151 class Shutdown;
152 class ClosingSignedFeeRange;
153 class ClosingSigned;
154 class UpdateAddHTLC;
155 class UpdateFulfillHTLC;
156 class UpdateFailHTLC;
157 class UpdateFailMalformedHTLC;
158 class CommitmentSigned;
159 class RevokeAndACK;
160 class UpdateFee;
161 class DataLossProtect;
162 class ChannelReestablish;
163 class AnnouncementSignatures;
164 class NetAddress;
165 class UnsignedNodeAnnouncement;
166 class NodeAnnouncement;
167 class UnsignedChannelAnnouncement;
168 class ChannelAnnouncement;
169 class UnsignedChannelUpdate;
170 class ChannelUpdate;
171 class QueryChannelRange;
172 class ReplyChannelRange;
173 class QueryShortChannelIds;
174 class ReplyShortChannelIdsEnd;
175 class GossipTimestampFilter;
176 class ErrorAction;
177 class LightningError;
178 class CommitmentUpdate;
179 class ChannelMessageHandler;
180 class RoutingMessageHandler;
181 class GraphSyncError;
182 class DefaultRouter;
183 class Level;
184 class Record;
185 class Logger;
186 class MonitorUpdateId;
187 class Persist;
188 class LockedChannelMonitor;
189 class ChainMonitor;
190 class CVec_SpendableOutputDescriptorZ;
191 class CResult_LockedChannelMonitorNoneZ;
192 class CResult_PhantomRouteHintsDecodeErrorZ;
193 class COption_C2Tuple_u64u64ZZ;
194 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
195 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
196 class CResult_HTLCUpdateDecodeErrorZ;
197 class C2Tuple_SignatureCVec_SignatureZZ;
198 class CVec_C2Tuple_u32TxOutZZ;
199 class CResult_ChannelInfoDecodeErrorZ;
200 class CResult_FundingCreatedDecodeErrorZ;
201 class CResult_ChannelAnnouncementDecodeErrorZ;
202 class CVec_OutPointZ;
203 class CResult_PositiveTimestampCreationErrorZ;
204 class CResult_CVec_u8ZPeerHandleErrorZ;
205 class CResult_InvoiceFeaturesDecodeErrorZ;
206 class COption_NetworkUpdateZ;
207 class COption_u64Z;
208 class CResult_TxOutAccessErrorZ;
209 class CResult_TrustedClosingTransactionNoneZ;
210 class CResult_PaymentPreimageAPIErrorZ;
211 class CResult_ChannelMonitorUpdateDecodeErrorZ;
212 class CResult_RouteHintDecodeErrorZ;
213 class C2Tuple_PublicKeyTypeZ;
214 class CResult_NetAddressDecodeErrorZ;
215 class CResult_ChannelReestablishDecodeErrorZ;
216 class CResult_CommitmentSignedDecodeErrorZ;
217 class CVec_UpdateAddHTLCZ;
218 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
219 class COption_u32Z;
220 class CResult_InitFeaturesDecodeErrorZ;
221 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
222 class CResult_PaymentIdPaymentSendFailureZ;
223 class CResult_ReplyChannelRangeDecodeErrorZ;
224 class CResult_CommitmentTransactionDecodeErrorZ;
225 class COption_C2Tuple_usizeTransactionZZ;
226 class CResult_TransactionNoneZ;
227 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
228 class CResult_PingDecodeErrorZ;
229 class CResult_GossipTimestampFilterDecodeErrorZ;
230 class CResult_InvoiceSignOrCreationErrorZ;
231 class COption_FilterZ;
232 class CVec_TransactionOutputsZ;
233 class CResult_ErrorMessageDecodeErrorZ;
234 class CResult_OpenChannelDecodeErrorZ;
235 class CVec_CVec_u8ZZ;
236 class CResult_SecretKeyErrorZ;
237 class CResult_ShutdownScriptDecodeErrorZ;
238 class CResult_ProbabilisticScorerDecodeErrorZ;
239 class CResult_QueryChannelRangeDecodeErrorZ;
240 class CResult_TxCreationKeysDecodeErrorZ;
241 class C2Tuple_usizeTransactionZ;
242 class CResult_ChannelFeaturesDecodeErrorZ;
243 class CVec_ChannelMonitorZ;
244 class CVec_TransactionZ;
245 class CResult_ChannelReadyDecodeErrorZ;
246 class CResult_RouteHopDecodeErrorZ;
247 class CResult_UpdateFeeDecodeErrorZ;
248 class CResult_NodeAnnouncementDecodeErrorZ;
249 class CVec_BalanceZ;
250 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
251 class CResult_boolLightningErrorZ;
252 class CResult_TxCreationKeysErrorZ;
253 class CResult_NodeIdDecodeErrorZ;
254 class C2Tuple_BlockHashChannelMonitorZ;
255 class CResult_ShutdownScriptInvalidShutdownScriptZ;
256 class CResult_NodeAnnouncementInfoDecodeErrorZ;
257 class CResult_COption_NetworkUpdateZDecodeErrorZ;
258 class CResult_RecoverableSignatureNoneZ;
259 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
260 class CVec_UpdateFailMalformedHTLCZ;
261 class CResult_FundingSignedDecodeErrorZ;
262 class CResult_NetworkGraphDecodeErrorZ;
263 class CVec_RouteHopZ;
264 class CResult_NonePaymentSendFailureZ;
265 class CResult_NodeInfoDecodeErrorZ;
266 class CResult_RouteLightningErrorZ;
267 class CResult_ChannelPublicKeysDecodeErrorZ;
268 class CVec_NodeIdZ;
269 class CVec_u8Z;
270 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
271 class CVec_ThirtyTwoBytesZ;
272 class CResult_ClosingSignedDecodeErrorZ;
273 class CResult_HolderCommitmentTransactionDecodeErrorZ;
274 class CVec_CResult_NoneAPIErrorZZ;
275 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
276 class CResult_ChannelCounterpartyDecodeErrorZ;
277 class CResult_WarningMessageDecodeErrorZ;
278 class CResult_SignatureNoneZ;
279 class CVec_RouteHintHopZ;
280 class CResult_SecretKeyNoneZ;
281 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
282 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
283 class CResult_PaymentParametersDecodeErrorZ;
284 class CResult_PaymentPurposeDecodeErrorZ;
285 class CResult_InitDecodeErrorZ;
286 class CResult_OutPointDecodeErrorZ;
287 class CVec_ChannelDetailsZ;
288 class CResult_SignDecodeErrorZ;
289 class C2Tuple_OutPointCVec_MonitorEventZZ;
290 class CVec_MessageSendEventZ;
291 class COption_NetAddressZ;
292 class C2Tuple_OutPointScriptZ;
293 class CResult_RouteHintHopDecodeErrorZ;
294 class CResult_C2Tuple_SignatureSignatureZNoneZ;
295 class CVec_NodeAnnouncementZ;
296 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
297 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
298 class CVec_TxidZ;
299 class COption_AccessZ;
300 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
301 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
302 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
303 class CResult_CVec_CVec_u8ZZNoneZ;
304 class C2Tuple_SignatureSignatureZ;
305 class C2Tuple_PaymentHashPaymentSecretZ;
306 class C2Tuple_BlockHashChannelManagerZ;
307 class CResult_ChannelTransactionParametersDecodeErrorZ;
308 class CResult_AcceptChannelDecodeErrorZ;
309 class CVec_SignatureZ;
310 class CVec_u64Z;
311 class CResult_PongDecodeErrorZ;
312 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
313 class C2Tuple_PaymentHashPaymentIdZ;
314 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
315 class CResult_NoneErrorZ;
316 class CResult_StringErrorZ;
317 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
318 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
319 class COption_EventZ;
320 class CResult_ChannelTypeFeaturesDecodeErrorZ;
321 class CResult_SiPrefixParseErrorZ;
322 class CVec_RouteHintZ;
323 class COption_u16Z;
324 class CVec_CVec_RouteHopZZ;
325 class CResult_TrustedCommitmentTransactionNoneZ;
326 class CResult_FixedPenaltyScorerDecodeErrorZ;
327 class CResult_NoneLightningErrorZ;
328 class CResult_NonePeerHandleErrorZ;
329 class CResult_COption_EventZDecodeErrorZ;
330 class CResult_CVec_SignatureZNoneZ;
331 class COption_CVec_NetAddressZZ;
332 class CResult__u832APIErrorZ;
333 class CResult_PaymentIdPaymentErrorZ;
334 class CResult_DescriptionCreationErrorZ;
335 class CResult_RoutingFeesDecodeErrorZ;
336 class CResult_PayeePubKeyErrorZ;
337 class CResult_COption_MonitorEventZDecodeErrorZ;
338 class CVec_C2Tuple_PublicKeyTypeZZ;
339 class CResult_u32GraphSyncErrorZ;
340 class CResult_InvoiceSemanticErrorZ;
341 class CResult_UpdateAddHTLCDecodeErrorZ;
342 class CResult_QueryShortChannelIdsDecodeErrorZ;
343 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
344 class CResult_NoneAPIErrorZ;
345 class CVec_NetAddressZ;
346 class CResult_ChannelDetailsDecodeErrorZ;
347 class CVec_PublicKeyZ;
348 class CVec_C2Tuple_usizeTransactionZZ;
349 class CVec_PhantomRouteHintsZ;
350 class COption_MonitorEventZ;
351 class C2Tuple_u64u64Z;
352 class COption_TypeZ;
353 class CResult_COption_TypeZDecodeErrorZ;
354 class C2Tuple_u32TxOutZ;
355 class CResult_UpdateFailHTLCDecodeErrorZ;
356 class CResult_InvoiceParseOrSemanticErrorZ;
357 class CResult_PaymentSecretNoneZ;
358 class CResult_ChannelConfigDecodeErrorZ;
359 class CVec_PrivateRouteZ;
360 class CResult_SpendableOutputDescriptorDecodeErrorZ;
361 class CResult_RevokeAndACKDecodeErrorZ;
362 class CResult_UnsignedChannelUpdateDecodeErrorZ;
363 class CResult_ShutdownDecodeErrorZ;
364 class CVec_EventZ;
365 class CResult_NoneSemanticErrorZ;
366 class CVec_MonitorEventZ;
367 class CVec_PaymentPreimageZ;
368 class CVec_C2Tuple_u32ScriptZZ;
369 class CResult_NoneChannelMonitorUpdateErrZ;
370 class CResult_COption_ClosureReasonZDecodeErrorZ;
371 class CResult_PublicKeyErrorZ;
372 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
373 class CResult_NoneNoneZ;
374 class CResult_RouteParametersDecodeErrorZ;
375 class COption_ClosureReasonZ;
376 class CResult_NodeAliasDecodeErrorZ;
377 class CVec_APIErrorZ;
378 class CResult_PrivateRouteCreationErrorZ;
379 class CResult_boolPeerHandleErrorZ;
380 class CVec_UpdateFulfillHTLCZ;
381 class CResult_AnnouncementSignaturesDecodeErrorZ;
382 class CResult_UpdateFulfillHTLCDecodeErrorZ;
383 class CResult_ChannelUpdateDecodeErrorZ;
384 class CResult_NodeFeaturesDecodeErrorZ;
385 class CVec_u5Z;
386 class CResult_InMemorySignerDecodeErrorZ;
387 class CResult_PaymentSecretAPIErrorZ;
388 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
389 class CResult_SignedRawInvoiceParseErrorZ;
390 class C2Tuple_u32ScriptZ;
391 class CResult_RouteDecodeErrorZ;
392 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
393 class COption_NoneZ;
394 class CVec_TxOutZ;
395 class CResult_ChannelUpdateInfoDecodeErrorZ;
396 class CVec_C2Tuple_OutPointCVec_MonitorEventZZZ;
397 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
398 class CVec_UpdateFailHTLCZ;
399 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
400
401 class Str {
402 private:
403         LDKStr self;
404 public:
405         Str(const Str&) = delete;
406         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
407         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
408         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
409         ~Str() { Str_free(self); }
410         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
411         LDKStr* operator &() { return &self; }
412         LDKStr* operator ->() { return &self; }
413         const LDKStr* operator &() const { return &self; }
414         const LDKStr* operator ->() const { return &self; }
415 };
416 class CounterpartyCommitmentSecrets {
417 private:
418         LDKCounterpartyCommitmentSecrets self;
419 public:
420         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
421         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
422         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
423         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
424         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
425         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
426         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
427         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
428         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
429         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
430 };
431 class TxCreationKeys {
432 private:
433         LDKTxCreationKeys self;
434 public:
435         TxCreationKeys(const TxCreationKeys&) = delete;
436         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
437         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
438         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
439         ~TxCreationKeys() { TxCreationKeys_free(self); }
440         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
441         LDKTxCreationKeys* operator &() { return &self; }
442         LDKTxCreationKeys* operator ->() { return &self; }
443         const LDKTxCreationKeys* operator &() const { return &self; }
444         const LDKTxCreationKeys* operator ->() const { return &self; }
445 };
446 class ChannelPublicKeys {
447 private:
448         LDKChannelPublicKeys self;
449 public:
450         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
451         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
452         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
453         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
454         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
455         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
456         LDKChannelPublicKeys* operator &() { return &self; }
457         LDKChannelPublicKeys* operator ->() { return &self; }
458         const LDKChannelPublicKeys* operator &() const { return &self; }
459         const LDKChannelPublicKeys* operator ->() const { return &self; }
460 };
461 class HTLCOutputInCommitment {
462 private:
463         LDKHTLCOutputInCommitment self;
464 public:
465         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
466         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
467         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
468         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
469         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
470         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
471         LDKHTLCOutputInCommitment* operator &() { return &self; }
472         LDKHTLCOutputInCommitment* operator ->() { return &self; }
473         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
474         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
475 };
476 class ChannelTransactionParameters {
477 private:
478         LDKChannelTransactionParameters self;
479 public:
480         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
481         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
482         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
483         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
484         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
485         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
486         LDKChannelTransactionParameters* operator &() { return &self; }
487         LDKChannelTransactionParameters* operator ->() { return &self; }
488         const LDKChannelTransactionParameters* operator &() const { return &self; }
489         const LDKChannelTransactionParameters* operator ->() const { return &self; }
490 };
491 class CounterpartyChannelTransactionParameters {
492 private:
493         LDKCounterpartyChannelTransactionParameters self;
494 public:
495         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
496         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
497         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
498         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
499         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
500         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
501         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
502         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
503         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
504         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
505 };
506 class DirectedChannelTransactionParameters {
507 private:
508         LDKDirectedChannelTransactionParameters self;
509 public:
510         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
511         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
512         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
513         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
514         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
515         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
516         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
517         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
518         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
519         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
520 };
521 class HolderCommitmentTransaction {
522 private:
523         LDKHolderCommitmentTransaction self;
524 public:
525         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
526         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
527         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
528         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
529         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
530         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
531         LDKHolderCommitmentTransaction* operator &() { return &self; }
532         LDKHolderCommitmentTransaction* operator ->() { return &self; }
533         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
534         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
535 };
536 class BuiltCommitmentTransaction {
537 private:
538         LDKBuiltCommitmentTransaction self;
539 public:
540         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
541         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
542         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
543         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
544         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
545         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
546         LDKBuiltCommitmentTransaction* operator &() { return &self; }
547         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
548         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
549         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
550 };
551 class ClosingTransaction {
552 private:
553         LDKClosingTransaction self;
554 public:
555         ClosingTransaction(const ClosingTransaction&) = delete;
556         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
557         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
558         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
559         ~ClosingTransaction() { ClosingTransaction_free(self); }
560         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
561         LDKClosingTransaction* operator &() { return &self; }
562         LDKClosingTransaction* operator ->() { return &self; }
563         const LDKClosingTransaction* operator &() const { return &self; }
564         const LDKClosingTransaction* operator ->() const { return &self; }
565 };
566 class TrustedClosingTransaction {
567 private:
568         LDKTrustedClosingTransaction self;
569 public:
570         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
571         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
572         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
573         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
574         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
575         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
576         LDKTrustedClosingTransaction* operator &() { return &self; }
577         LDKTrustedClosingTransaction* operator ->() { return &self; }
578         const LDKTrustedClosingTransaction* operator &() const { return &self; }
579         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
580 };
581 class CommitmentTransaction {
582 private:
583         LDKCommitmentTransaction self;
584 public:
585         CommitmentTransaction(const CommitmentTransaction&) = delete;
586         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
587         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
588         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
589         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
590         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
591         LDKCommitmentTransaction* operator &() { return &self; }
592         LDKCommitmentTransaction* operator ->() { return &self; }
593         const LDKCommitmentTransaction* operator &() const { return &self; }
594         const LDKCommitmentTransaction* operator ->() const { return &self; }
595 };
596 class TrustedCommitmentTransaction {
597 private:
598         LDKTrustedCommitmentTransaction self;
599 public:
600         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
601         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
602         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
603         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
604         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
605         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
606         LDKTrustedCommitmentTransaction* operator &() { return &self; }
607         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
608         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
609         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
610 };
611 class ShutdownScript {
612 private:
613         LDKShutdownScript self;
614 public:
615         ShutdownScript(const ShutdownScript&) = delete;
616         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
617         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
618         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
619         ~ShutdownScript() { ShutdownScript_free(self); }
620         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
621         LDKShutdownScript* operator &() { return &self; }
622         LDKShutdownScript* operator ->() { return &self; }
623         const LDKShutdownScript* operator &() const { return &self; }
624         const LDKShutdownScript* operator ->() const { return &self; }
625 };
626 class InvalidShutdownScript {
627 private:
628         LDKInvalidShutdownScript self;
629 public:
630         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
631         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
632         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
633         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
634         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
635         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
636         LDKInvalidShutdownScript* operator &() { return &self; }
637         LDKInvalidShutdownScript* operator ->() { return &self; }
638         const LDKInvalidShutdownScript* operator &() const { return &self; }
639         const LDKInvalidShutdownScript* operator ->() const { return &self; }
640 };
641 class BackgroundProcessor {
642 private:
643         LDKBackgroundProcessor self;
644 public:
645         BackgroundProcessor(const BackgroundProcessor&) = delete;
646         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
647         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
648         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
649         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
650         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
651         LDKBackgroundProcessor* operator &() { return &self; }
652         LDKBackgroundProcessor* operator ->() { return &self; }
653         const LDKBackgroundProcessor* operator &() const { return &self; }
654         const LDKBackgroundProcessor* operator ->() const { return &self; }
655 };
656 class GossipSync {
657 private:
658         LDKGossipSync self;
659 public:
660         GossipSync(const GossipSync&) = delete;
661         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
662         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
663         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
664         ~GossipSync() { GossipSync_free(self); }
665         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
666         LDKGossipSync* operator &() { return &self; }
667         LDKGossipSync* operator ->() { return &self; }
668         const LDKGossipSync* operator &() const { return &self; }
669         const LDKGossipSync* operator ->() const { return &self; }
670 };
671 class RouteHop {
672 private:
673         LDKRouteHop self;
674 public:
675         RouteHop(const RouteHop&) = delete;
676         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
677         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
678         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
679         ~RouteHop() { RouteHop_free(self); }
680         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
681         LDKRouteHop* operator &() { return &self; }
682         LDKRouteHop* operator ->() { return &self; }
683         const LDKRouteHop* operator &() const { return &self; }
684         const LDKRouteHop* operator ->() const { return &self; }
685 };
686 class Route {
687 private:
688         LDKRoute self;
689 public:
690         Route(const Route&) = delete;
691         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
692         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
693         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
694         ~Route() { Route_free(self); }
695         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
696         LDKRoute* operator &() { return &self; }
697         LDKRoute* operator ->() { return &self; }
698         const LDKRoute* operator &() const { return &self; }
699         const LDKRoute* operator ->() const { return &self; }
700 };
701 class RouteParameters {
702 private:
703         LDKRouteParameters self;
704 public:
705         RouteParameters(const RouteParameters&) = delete;
706         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
707         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
708         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
709         ~RouteParameters() { RouteParameters_free(self); }
710         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
711         LDKRouteParameters* operator &() { return &self; }
712         LDKRouteParameters* operator ->() { return &self; }
713         const LDKRouteParameters* operator &() const { return &self; }
714         const LDKRouteParameters* operator ->() const { return &self; }
715 };
716 class PaymentParameters {
717 private:
718         LDKPaymentParameters self;
719 public:
720         PaymentParameters(const PaymentParameters&) = delete;
721         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
722         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
723         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
724         ~PaymentParameters() { PaymentParameters_free(self); }
725         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
726         LDKPaymentParameters* operator &() { return &self; }
727         LDKPaymentParameters* operator ->() { return &self; }
728         const LDKPaymentParameters* operator &() const { return &self; }
729         const LDKPaymentParameters* operator ->() const { return &self; }
730 };
731 class RouteHint {
732 private:
733         LDKRouteHint self;
734 public:
735         RouteHint(const RouteHint&) = delete;
736         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
737         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
738         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
739         ~RouteHint() { RouteHint_free(self); }
740         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
741         LDKRouteHint* operator &() { return &self; }
742         LDKRouteHint* operator ->() { return &self; }
743         const LDKRouteHint* operator &() const { return &self; }
744         const LDKRouteHint* operator ->() const { return &self; }
745 };
746 class RouteHintHop {
747 private:
748         LDKRouteHintHop self;
749 public:
750         RouteHintHop(const RouteHintHop&) = delete;
751         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
752         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
753         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
754         ~RouteHintHop() { RouteHintHop_free(self); }
755         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
756         LDKRouteHintHop* operator &() { return &self; }
757         LDKRouteHintHop* operator ->() { return &self; }
758         const LDKRouteHintHop* operator &() const { return &self; }
759         const LDKRouteHintHop* operator ->() const { return &self; }
760 };
761 class BroadcasterInterface {
762 private:
763         LDKBroadcasterInterface self;
764 public:
765         BroadcasterInterface(const BroadcasterInterface&) = delete;
766         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
767         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
768         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
769         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
770         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
771         LDKBroadcasterInterface* operator &() { return &self; }
772         LDKBroadcasterInterface* operator ->() { return &self; }
773         const LDKBroadcasterInterface* operator &() const { return &self; }
774         const LDKBroadcasterInterface* operator ->() const { return &self; }
775         /**
776          *  Sends a transaction out to (hopefully) be mined.
777          */
778         inline void broadcast_transaction(struct LDKTransaction tx);
779 };
780 class ConfirmationTarget {
781 private:
782         LDKConfirmationTarget self;
783 public:
784         ConfirmationTarget(const ConfirmationTarget&) = delete;
785         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
786         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
787         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
788         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
789         LDKConfirmationTarget* operator &() { return &self; }
790         LDKConfirmationTarget* operator ->() { return &self; }
791         const LDKConfirmationTarget* operator &() const { return &self; }
792         const LDKConfirmationTarget* operator ->() const { return &self; }
793 };
794 class FeeEstimator {
795 private:
796         LDKFeeEstimator self;
797 public:
798         FeeEstimator(const FeeEstimator&) = delete;
799         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
800         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
801         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
802         ~FeeEstimator() { FeeEstimator_free(self); }
803         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
804         LDKFeeEstimator* operator &() { return &self; }
805         LDKFeeEstimator* operator ->() { return &self; }
806         const LDKFeeEstimator* operator &() const { return &self; }
807         const LDKFeeEstimator* operator ->() const { return &self; }
808         /**
809          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
810          * 
811          *  Must return a value no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later
812          *  round-downs don't put us below 1 satoshi-per-byte).
813          * 
814          *  This method can be implemented with the following unit conversions:
815          *   * max(satoshis-per-byte * 250, 253)
816          *   * max(satoshis-per-kbyte / 4, 253)
817          */
818         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
819 };
820 class PaymentPurpose {
821 private:
822         LDKPaymentPurpose self;
823 public:
824         PaymentPurpose(const PaymentPurpose&) = delete;
825         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
826         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
827         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
828         ~PaymentPurpose() { PaymentPurpose_free(self); }
829         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
830         LDKPaymentPurpose* operator &() { return &self; }
831         LDKPaymentPurpose* operator ->() { return &self; }
832         const LDKPaymentPurpose* operator &() const { return &self; }
833         const LDKPaymentPurpose* operator ->() const { return &self; }
834 };
835 class ClosureReason {
836 private:
837         LDKClosureReason self;
838 public:
839         ClosureReason(const ClosureReason&) = delete;
840         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
841         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
842         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
843         ~ClosureReason() { ClosureReason_free(self); }
844         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
845         LDKClosureReason* operator &() { return &self; }
846         LDKClosureReason* operator ->() { return &self; }
847         const LDKClosureReason* operator &() const { return &self; }
848         const LDKClosureReason* operator ->() const { return &self; }
849 };
850 class Event {
851 private:
852         LDKEvent self;
853 public:
854         Event(const Event&) = delete;
855         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
856         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
857         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
858         ~Event() { Event_free(self); }
859         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
860         LDKEvent* operator &() { return &self; }
861         LDKEvent* operator ->() { return &self; }
862         const LDKEvent* operator &() const { return &self; }
863         const LDKEvent* operator ->() const { return &self; }
864 };
865 class MessageSendEvent {
866 private:
867         LDKMessageSendEvent self;
868 public:
869         MessageSendEvent(const MessageSendEvent&) = delete;
870         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
871         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
872         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
873         ~MessageSendEvent() { MessageSendEvent_free(self); }
874         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
875         LDKMessageSendEvent* operator &() { return &self; }
876         LDKMessageSendEvent* operator ->() { return &self; }
877         const LDKMessageSendEvent* operator &() const { return &self; }
878         const LDKMessageSendEvent* operator ->() const { return &self; }
879 };
880 class MessageSendEventsProvider {
881 private:
882         LDKMessageSendEventsProvider self;
883 public:
884         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
885         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
886         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
887         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
888         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
889         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
890         LDKMessageSendEventsProvider* operator &() { return &self; }
891         LDKMessageSendEventsProvider* operator ->() { return &self; }
892         const LDKMessageSendEventsProvider* operator &() const { return &self; }
893         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
894         /**
895          *  Gets the list of pending events which were generated by previous actions, clearing the list
896          *  in the process.
897          */
898         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
899 };
900 class EventsProvider {
901 private:
902         LDKEventsProvider self;
903 public:
904         EventsProvider(const EventsProvider&) = delete;
905         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
906         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
907         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
908         ~EventsProvider() { EventsProvider_free(self); }
909         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
910         LDKEventsProvider* operator &() { return &self; }
911         LDKEventsProvider* operator ->() { return &self; }
912         const LDKEventsProvider* operator &() const { return &self; }
913         const LDKEventsProvider* operator ->() const { return &self; }
914         /**
915          *  Processes any events generated since the last call using the given event handler.
916          * 
917          *  Subsequent calls must only process new events. However, handlers must be capable of handling
918          *  duplicate events across process restarts. This may occur if the provider was recovered from
919          *  an old state (i.e., it hadn't been successfully persisted after processing pending events).
920          */
921         inline void process_pending_events(struct LDKEventHandler handler);
922 };
923 class EventHandler {
924 private:
925         LDKEventHandler self;
926 public:
927         EventHandler(const EventHandler&) = delete;
928         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
929         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
930         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
931         ~EventHandler() { EventHandler_free(self); }
932         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
933         LDKEventHandler* operator &() { return &self; }
934         LDKEventHandler* operator ->() { return &self; }
935         const LDKEventHandler* operator &() const { return &self; }
936         const LDKEventHandler* operator ->() const { return &self; }
937         /**
938          *  Handles the given [`Event`].
939          * 
940          *  See [`EventsProvider`] for details that must be considered when implementing this method.
941          */
942         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
943 };
944 class BestBlock {
945 private:
946         LDKBestBlock self;
947 public:
948         BestBlock(const BestBlock&) = delete;
949         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
950         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
951         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
952         ~BestBlock() { BestBlock_free(self); }
953         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
954         LDKBestBlock* operator &() { return &self; }
955         LDKBestBlock* operator ->() { return &self; }
956         const LDKBestBlock* operator &() const { return &self; }
957         const LDKBestBlock* operator ->() const { return &self; }
958 };
959 class AccessError {
960 private:
961         LDKAccessError self;
962 public:
963         AccessError(const AccessError&) = delete;
964         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
965         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
966         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
967         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
968         LDKAccessError* operator &() { return &self; }
969         LDKAccessError* operator ->() { return &self; }
970         const LDKAccessError* operator &() const { return &self; }
971         const LDKAccessError* operator ->() const { return &self; }
972 };
973 class Access {
974 private:
975         LDKAccess self;
976 public:
977         Access(const Access&) = delete;
978         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
979         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
980         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
981         ~Access() { Access_free(self); }
982         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
983         LDKAccess* operator &() { return &self; }
984         LDKAccess* operator ->() { return &self; }
985         const LDKAccess* operator &() const { return &self; }
986         const LDKAccess* operator ->() const { return &self; }
987         /**
988          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
989          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
990          *  is unknown.
991          * 
992          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
993          */
994         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
995 };
996 class Listen {
997 private:
998         LDKListen self;
999 public:
1000         Listen(const Listen&) = delete;
1001         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1002         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1003         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1004         ~Listen() { Listen_free(self); }
1005         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1006         LDKListen* operator &() { return &self; }
1007         LDKListen* operator ->() { return &self; }
1008         const LDKListen* operator &() const { return &self; }
1009         const LDKListen* operator ->() const { return &self; }
1010         /**
1011          *  Notifies the listener that a block was added at the given height, with the transaction data
1012          *  possibly filtered.
1013          */
1014         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1015         /**
1016          *  Notifies the listener that a block was added at the given height.
1017          */
1018         inline void block_connected(struct LDKu8slice block, uint32_t height);
1019         /**
1020          *  Notifies the listener that a block was removed at the given height.
1021          */
1022         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1023 };
1024 class Confirm {
1025 private:
1026         LDKConfirm self;
1027 public:
1028         Confirm(const Confirm&) = delete;
1029         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1030         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1031         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1032         ~Confirm() { Confirm_free(self); }
1033         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1034         LDKConfirm* operator &() { return &self; }
1035         LDKConfirm* operator ->() { return &self; }
1036         const LDKConfirm* operator &() const { return &self; }
1037         const LDKConfirm* operator ->() const { return &self; }
1038         /**
1039          *  Processes transactions confirmed in a block with a given header and height.
1040          * 
1041          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
1042          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1043          *  appearing in the same block do not need to be included in the same call; instead, multiple
1044          *  calls with additional transactions may be made so long as they are made in [chain order].
1045          * 
1046          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1047          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1048          *  longer in the chain as of the last call to [`best_block_updated`].
1049          * 
1050          *  [chain order]: Confirm#Order
1051          *  [`best_block_updated`]: Self::best_block_updated
1052          */
1053         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1054         /**
1055          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
1056          * 
1057          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
1058          *  reorganized out of the best chain. Once called, the given transaction should not be returned
1059          *  by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
1060          * 
1061          *  [`get_relevant_txids`]: Self::get_relevant_txids
1062          *  [`transactions_confirmed`]: Self::transactions_confirmed
1063          */
1064         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1065         /**
1066          *  Processes an update to the best header connected at the given height.
1067          * 
1068          *  Should be called when a new header is available but may be skipped for intermediary blocks
1069          *  if they become available at the same time.
1070          */
1071         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1072         /**
1073          *  Returns transactions that should be monitored for reorganization out of the chain.
1074          * 
1075          *  Should include any transactions passed to [`transactions_confirmed`] that have insufficient
1076          *  confirmations to be safe from a chain reorganization. Should not include any transactions
1077          *  passed to [`transaction_unconfirmed`] unless later reconfirmed.
1078          * 
1079          *  May be called to determine the subset of transactions that must still be monitored for
1080          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1081          *  other interface methods. Thus, this is useful to determine which transactions may need to be
1082          *  given to [`transaction_unconfirmed`].
1083          * 
1084          *  [`transactions_confirmed`]: Self::transactions_confirmed
1085          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1086          */
1087         inline LDK::CVec_TxidZ get_relevant_txids();
1088 };
1089 class ChannelMonitorUpdateErr {
1090 private:
1091         LDKChannelMonitorUpdateErr self;
1092 public:
1093         ChannelMonitorUpdateErr(const ChannelMonitorUpdateErr&) = delete;
1094         ChannelMonitorUpdateErr(ChannelMonitorUpdateErr&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); }
1095         ChannelMonitorUpdateErr(LDKChannelMonitorUpdateErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateErr)); }
1096         operator LDKChannelMonitorUpdateErr() && { LDKChannelMonitorUpdateErr res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateErr)); return res; }
1097         ChannelMonitorUpdateErr& operator=(ChannelMonitorUpdateErr&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); return *this; }
1098         LDKChannelMonitorUpdateErr* operator &() { return &self; }
1099         LDKChannelMonitorUpdateErr* operator ->() { return &self; }
1100         const LDKChannelMonitorUpdateErr* operator &() const { return &self; }
1101         const LDKChannelMonitorUpdateErr* operator ->() const { return &self; }
1102 };
1103 class Watch {
1104 private:
1105         LDKWatch self;
1106 public:
1107         Watch(const Watch&) = delete;
1108         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1109         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1110         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1111         ~Watch() { Watch_free(self); }
1112         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1113         LDKWatch* operator &() { return &self; }
1114         LDKWatch* operator ->() { return &self; }
1115         const LDKWatch* operator &() const { return &self; }
1116         const LDKWatch* operator ->() const { return &self; }
1117         /**
1118          *  Watches a channel identified by `funding_txo` using `monitor`.
1119          * 
1120          *  Implementations are responsible for watching the chain for the funding transaction along
1121          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1122          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1123          * 
1124          *  Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
1125          *  the given `funding_txo` has previously been registered via `watch_channel`.
1126          * 
1127          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1128          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1129          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1130          */
1131         inline LDK::CResult_NoneChannelMonitorUpdateErrZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1132         /**
1133          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1134          * 
1135          *  Implementations must call [`update_monitor`] with the given update. See
1136          *  [`ChannelMonitorUpdateErr`] for invariants around returning an error.
1137          * 
1138          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1139          */
1140         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1141         /**
1142          *  Returns any monitor events since the last call. Subsequent calls must only return new
1143          *  events.
1144          * 
1145          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1146          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1147          *  to disk.
1148          * 
1149          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1150          *  [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
1151          */
1152         inline LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ release_pending_monitor_events();
1153 };
1154 class Filter {
1155 private:
1156         LDKFilter self;
1157 public:
1158         Filter(const Filter&) = delete;
1159         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1160         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1161         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1162         ~Filter() { Filter_free(self); }
1163         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1164         LDKFilter* operator &() { return &self; }
1165         LDKFilter* operator ->() { return &self; }
1166         const LDKFilter* operator &() const { return &self; }
1167         const LDKFilter* operator ->() const { return &self; }
1168         /**
1169          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1170          *  a spending condition.
1171          */
1172         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1173         /**
1174          *  Registers interest in spends of a transaction output.
1175          * 
1176          *  Optionally, when `output.block_hash` is set, should return any transaction spending the
1177          *  output that is found in the corresponding block along with its index.
1178          * 
1179          *  This return value is useful for Electrum clients in order to supply in-block descendant
1180          *  transactions which otherwise were not included. This is not necessary for other clients if
1181          *  such descendant transactions were already included (e.g., when a BIP 157 client provides the
1182          *  full block).
1183          */
1184         inline LDK::COption_C2Tuple_usizeTransactionZZ register_output(struct LDKWatchedOutput output);
1185 };
1186 class WatchedOutput {
1187 private:
1188         LDKWatchedOutput self;
1189 public:
1190         WatchedOutput(const WatchedOutput&) = delete;
1191         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1192         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1193         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1194         ~WatchedOutput() { WatchedOutput_free(self); }
1195         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1196         LDKWatchedOutput* operator &() { return &self; }
1197         LDKWatchedOutput* operator ->() { return &self; }
1198         const LDKWatchedOutput* operator &() const { return &self; }
1199         const LDKWatchedOutput* operator ->() const { return &self; }
1200 };
1201 class Score {
1202 private:
1203         LDKScore self;
1204 public:
1205         Score(const Score&) = delete;
1206         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1207         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1208         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1209         ~Score() { Score_free(self); }
1210         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1211         LDKScore* operator &() { return &self; }
1212         LDKScore* operator ->() { return &self; }
1213         const LDKScore* operator &() const { return &self; }
1214         const LDKScore* operator ->() const { return &self; }
1215         /**
1216          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1217          *  given channel in the direction from `source` to `target`.
1218          * 
1219          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1220          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1221          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1222          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1223          *  Thus, implementations should be overflow-safe.
1224          */
1225         inline uint64_t channel_penalty_msat(uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, struct LDKChannelUsage usage);
1226         /**
1227          *  Handles updating channel penalties after failing to route through a channel.
1228          */
1229         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1230         /**
1231          *  Handles updating channel penalties after successfully routing along a path.
1232          */
1233         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1234 };
1235 class LockableScore {
1236 private:
1237         LDKLockableScore self;
1238 public:
1239         LockableScore(const LockableScore&) = delete;
1240         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1241         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1242         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1243         ~LockableScore() { LockableScore_free(self); }
1244         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1245         LDKLockableScore* operator &() { return &self; }
1246         LDKLockableScore* operator ->() { return &self; }
1247         const LDKLockableScore* operator &() const { return &self; }
1248         const LDKLockableScore* operator ->() const { return &self; }
1249         /**
1250          *  Returns the locked scorer.
1251          */
1252         inline LDK::Score lock();
1253 };
1254 class MultiThreadedLockableScore {
1255 private:
1256         LDKMultiThreadedLockableScore self;
1257 public:
1258         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1259         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1260         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1261         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1262         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1263         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1264         LDKMultiThreadedLockableScore* operator &() { return &self; }
1265         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1266         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1267         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1268 };
1269 class ChannelUsage {
1270 private:
1271         LDKChannelUsage self;
1272 public:
1273         ChannelUsage(const ChannelUsage&) = delete;
1274         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1275         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1276         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1277         ~ChannelUsage() { ChannelUsage_free(self); }
1278         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1279         LDKChannelUsage* operator &() { return &self; }
1280         LDKChannelUsage* operator ->() { return &self; }
1281         const LDKChannelUsage* operator &() const { return &self; }
1282         const LDKChannelUsage* operator ->() const { return &self; }
1283 };
1284 class FixedPenaltyScorer {
1285 private:
1286         LDKFixedPenaltyScorer self;
1287 public:
1288         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1289         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1290         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1291         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1292         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1293         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1294         LDKFixedPenaltyScorer* operator &() { return &self; }
1295         LDKFixedPenaltyScorer* operator ->() { return &self; }
1296         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1297         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1298 };
1299 class ProbabilisticScorer {
1300 private:
1301         LDKProbabilisticScorer self;
1302 public:
1303         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1304         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1305         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1306         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1307         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1308         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1309         LDKProbabilisticScorer* operator &() { return &self; }
1310         LDKProbabilisticScorer* operator ->() { return &self; }
1311         const LDKProbabilisticScorer* operator &() const { return &self; }
1312         const LDKProbabilisticScorer* operator ->() const { return &self; }
1313 };
1314 class ProbabilisticScoringParameters {
1315 private:
1316         LDKProbabilisticScoringParameters self;
1317 public:
1318         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1319         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1320         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1321         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1322         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1323         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1324         LDKProbabilisticScoringParameters* operator &() { return &self; }
1325         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1326         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1327         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1328 };
1329 class InitFeatures {
1330 private:
1331         LDKInitFeatures self;
1332 public:
1333         InitFeatures(const InitFeatures&) = delete;
1334         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1335         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1336         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1337         ~InitFeatures() { InitFeatures_free(self); }
1338         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1339         LDKInitFeatures* operator &() { return &self; }
1340         LDKInitFeatures* operator ->() { return &self; }
1341         const LDKInitFeatures* operator &() const { return &self; }
1342         const LDKInitFeatures* operator ->() const { return &self; }
1343 };
1344 class NodeFeatures {
1345 private:
1346         LDKNodeFeatures self;
1347 public:
1348         NodeFeatures(const NodeFeatures&) = delete;
1349         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1350         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1351         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1352         ~NodeFeatures() { NodeFeatures_free(self); }
1353         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1354         LDKNodeFeatures* operator &() { return &self; }
1355         LDKNodeFeatures* operator ->() { return &self; }
1356         const LDKNodeFeatures* operator &() const { return &self; }
1357         const LDKNodeFeatures* operator ->() const { return &self; }
1358 };
1359 class ChannelFeatures {
1360 private:
1361         LDKChannelFeatures self;
1362 public:
1363         ChannelFeatures(const ChannelFeatures&) = delete;
1364         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1365         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1366         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1367         ~ChannelFeatures() { ChannelFeatures_free(self); }
1368         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1369         LDKChannelFeatures* operator &() { return &self; }
1370         LDKChannelFeatures* operator ->() { return &self; }
1371         const LDKChannelFeatures* operator &() const { return &self; }
1372         const LDKChannelFeatures* operator ->() const { return &self; }
1373 };
1374 class InvoiceFeatures {
1375 private:
1376         LDKInvoiceFeatures self;
1377 public:
1378         InvoiceFeatures(const InvoiceFeatures&) = delete;
1379         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1380         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1381         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1382         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1383         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1384         LDKInvoiceFeatures* operator &() { return &self; }
1385         LDKInvoiceFeatures* operator ->() { return &self; }
1386         const LDKInvoiceFeatures* operator &() const { return &self; }
1387         const LDKInvoiceFeatures* operator ->() const { return &self; }
1388 };
1389 class ChannelTypeFeatures {
1390 private:
1391         LDKChannelTypeFeatures self;
1392 public:
1393         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1394         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1395         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1396         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1397         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1398         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1399         LDKChannelTypeFeatures* operator &() { return &self; }
1400         LDKChannelTypeFeatures* operator ->() { return &self; }
1401         const LDKChannelTypeFeatures* operator &() const { return &self; }
1402         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1403 };
1404 class NodeId {
1405 private:
1406         LDKNodeId self;
1407 public:
1408         NodeId(const NodeId&) = delete;
1409         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1410         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1411         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1412         ~NodeId() { NodeId_free(self); }
1413         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1414         LDKNodeId* operator &() { return &self; }
1415         LDKNodeId* operator ->() { return &self; }
1416         const LDKNodeId* operator &() const { return &self; }
1417         const LDKNodeId* operator ->() const { return &self; }
1418 };
1419 class NetworkGraph {
1420 private:
1421         LDKNetworkGraph self;
1422 public:
1423         NetworkGraph(const NetworkGraph&) = delete;
1424         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1425         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1426         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1427         ~NetworkGraph() { NetworkGraph_free(self); }
1428         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1429         LDKNetworkGraph* operator &() { return &self; }
1430         LDKNetworkGraph* operator ->() { return &self; }
1431         const LDKNetworkGraph* operator &() const { return &self; }
1432         const LDKNetworkGraph* operator ->() const { return &self; }
1433 };
1434 class ReadOnlyNetworkGraph {
1435 private:
1436         LDKReadOnlyNetworkGraph self;
1437 public:
1438         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1439         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1440         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1441         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1442         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1443         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1444         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1445         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1446         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1447         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1448 };
1449 class NetworkUpdate {
1450 private:
1451         LDKNetworkUpdate self;
1452 public:
1453         NetworkUpdate(const NetworkUpdate&) = delete;
1454         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1455         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1456         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1457         ~NetworkUpdate() { NetworkUpdate_free(self); }
1458         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1459         LDKNetworkUpdate* operator &() { return &self; }
1460         LDKNetworkUpdate* operator ->() { return &self; }
1461         const LDKNetworkUpdate* operator &() const { return &self; }
1462         const LDKNetworkUpdate* operator ->() const { return &self; }
1463 };
1464 class P2PGossipSync {
1465 private:
1466         LDKP2PGossipSync self;
1467 public:
1468         P2PGossipSync(const P2PGossipSync&) = delete;
1469         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1470         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1471         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1472         ~P2PGossipSync() { P2PGossipSync_free(self); }
1473         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1474         LDKP2PGossipSync* operator &() { return &self; }
1475         LDKP2PGossipSync* operator ->() { return &self; }
1476         const LDKP2PGossipSync* operator &() const { return &self; }
1477         const LDKP2PGossipSync* operator ->() const { return &self; }
1478 };
1479 class ChannelUpdateInfo {
1480 private:
1481         LDKChannelUpdateInfo self;
1482 public:
1483         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1484         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1485         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1486         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1487         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1488         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1489         LDKChannelUpdateInfo* operator &() { return &self; }
1490         LDKChannelUpdateInfo* operator ->() { return &self; }
1491         const LDKChannelUpdateInfo* operator &() const { return &self; }
1492         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1493 };
1494 class ChannelInfo {
1495 private:
1496         LDKChannelInfo self;
1497 public:
1498         ChannelInfo(const ChannelInfo&) = delete;
1499         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1500         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1501         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1502         ~ChannelInfo() { ChannelInfo_free(self); }
1503         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1504         LDKChannelInfo* operator &() { return &self; }
1505         LDKChannelInfo* operator ->() { return &self; }
1506         const LDKChannelInfo* operator &() const { return &self; }
1507         const LDKChannelInfo* operator ->() const { return &self; }
1508 };
1509 class DirectedChannelInfo {
1510 private:
1511         LDKDirectedChannelInfo self;
1512 public:
1513         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1514         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1515         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1516         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1517         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1518         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1519         LDKDirectedChannelInfo* operator &() { return &self; }
1520         LDKDirectedChannelInfo* operator ->() { return &self; }
1521         const LDKDirectedChannelInfo* operator &() const { return &self; }
1522         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1523 };
1524 class EffectiveCapacity {
1525 private:
1526         LDKEffectiveCapacity self;
1527 public:
1528         EffectiveCapacity(const EffectiveCapacity&) = delete;
1529         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1530         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1531         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1532         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1533         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1534         LDKEffectiveCapacity* operator &() { return &self; }
1535         LDKEffectiveCapacity* operator ->() { return &self; }
1536         const LDKEffectiveCapacity* operator &() const { return &self; }
1537         const LDKEffectiveCapacity* operator ->() const { return &self; }
1538 };
1539 class RoutingFees {
1540 private:
1541         LDKRoutingFees self;
1542 public:
1543         RoutingFees(const RoutingFees&) = delete;
1544         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1545         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1546         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1547         ~RoutingFees() { RoutingFees_free(self); }
1548         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1549         LDKRoutingFees* operator &() { return &self; }
1550         LDKRoutingFees* operator ->() { return &self; }
1551         const LDKRoutingFees* operator &() const { return &self; }
1552         const LDKRoutingFees* operator ->() const { return &self; }
1553 };
1554 class NodeAnnouncementInfo {
1555 private:
1556         LDKNodeAnnouncementInfo self;
1557 public:
1558         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1559         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1560         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1561         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1562         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1563         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1564         LDKNodeAnnouncementInfo* operator &() { return &self; }
1565         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1566         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1567         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1568 };
1569 class NodeAlias {
1570 private:
1571         LDKNodeAlias self;
1572 public:
1573         NodeAlias(const NodeAlias&) = delete;
1574         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
1575         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
1576         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
1577         ~NodeAlias() { NodeAlias_free(self); }
1578         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
1579         LDKNodeAlias* operator &() { return &self; }
1580         LDKNodeAlias* operator ->() { return &self; }
1581         const LDKNodeAlias* operator &() const { return &self; }
1582         const LDKNodeAlias* operator ->() const { return &self; }
1583 };
1584 class NodeInfo {
1585 private:
1586         LDKNodeInfo self;
1587 public:
1588         NodeInfo(const NodeInfo&) = delete;
1589         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1590         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1591         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1592         ~NodeInfo() { NodeInfo_free(self); }
1593         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1594         LDKNodeInfo* operator &() { return &self; }
1595         LDKNodeInfo* operator ->() { return &self; }
1596         const LDKNodeInfo* operator &() const { return &self; }
1597         const LDKNodeInfo* operator ->() const { return &self; }
1598 };
1599 class DelayedPaymentOutputDescriptor {
1600 private:
1601         LDKDelayedPaymentOutputDescriptor self;
1602 public:
1603         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1604         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1605         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1606         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1607         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1608         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1609         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1610         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1611         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1612         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1613 };
1614 class StaticPaymentOutputDescriptor {
1615 private:
1616         LDKStaticPaymentOutputDescriptor self;
1617 public:
1618         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1619         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1620         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1621         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1622         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1623         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1624         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1625         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1626         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1627         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1628 };
1629 class SpendableOutputDescriptor {
1630 private:
1631         LDKSpendableOutputDescriptor self;
1632 public:
1633         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1634         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1635         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1636         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1637         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1638         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1639         LDKSpendableOutputDescriptor* operator &() { return &self; }
1640         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1641         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1642         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1643 };
1644 class BaseSign {
1645 private:
1646         LDKBaseSign self;
1647 public:
1648         BaseSign(const BaseSign&) = delete;
1649         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1650         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1651         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1652         ~BaseSign() { BaseSign_free(self); }
1653         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1654         LDKBaseSign* operator &() { return &self; }
1655         LDKBaseSign* operator ->() { return &self; }
1656         const LDKBaseSign* operator &() const { return &self; }
1657         const LDKBaseSign* operator ->() const { return &self; }
1658         /**
1659          *  Gets the per-commitment point for a specific commitment number
1660          * 
1661          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1662          */
1663         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1664         /**
1665          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1666          * 
1667          *  An external signer implementation should error here if the commitment was already signed
1668          *  and should refuse to sign it in the future.
1669          * 
1670          *  May be called more than once for the same index.
1671          * 
1672          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1673          */
1674         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1675         /**
1676          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1677          * 
1678          *  This is required in order for the signer to make sure that releasing a commitment
1679          *  secret won't leave us without a broadcastable holder transaction.
1680          *  Policy checks should be implemented in this function, including checking the amount
1681          *  sent to us and checking the HTLCs.
1682          * 
1683          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1684          *  A validating signer should ensure that an HTLC output is removed only when the matching
1685          *  preimage is provided, or when the value to holder is restored.
1686          * 
1687          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1688          *  irrelevant or duplicate preimages.
1689          */
1690         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
1691         /**
1692          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1693          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1694          *  Sign object uniquely and lookup or re-derive its keys.
1695          */
1696         inline LDKThirtyTwoBytes channel_keys_id();
1697         /**
1698          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1699          * 
1700          *  Note that if signing fails or is rejected, the channel will be force-closed.
1701          * 
1702          *  Policy checks should be implemented in this function, including checking the amount
1703          *  sent to us and checking the HTLCs.
1704          * 
1705          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1706          *  A validating signer should ensure that an HTLC output is removed only when the matching
1707          *  preimage is provided, or when the value to holder is restored.
1708          * 
1709          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1710          *  irrelevant or duplicate preimages.
1711          */
1712         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
1713         /**
1714          *  Validate the counterparty's revocation.
1715          * 
1716          *  This is required in order for the signer to make sure that the state has moved
1717          *  forward and it is safe to sign the next counterparty commitment.
1718          */
1719         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1720         /**
1721          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1722          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1723          *  latest commitment_tx when we initiate a force-close.
1724          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1725          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1726          *  the latest.
1727          *  This may be called multiple times for the same transaction.
1728          * 
1729          *  An external signer implementation should check that the commitment has not been revoked.
1730          * 
1731          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1732          */
1733         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1734         /**
1735          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1736          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1737          * 
1738          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1739          *  similar, but only a signature for the input at index `input` should be signed for here.
1740          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1741          *  to an upcoming timelock expiration.
1742          * 
1743          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1744          * 
1745          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1746          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1747          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1748          *  so).
1749          */
1750         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]);
1751         /**
1752          *  Create a signature for the given input in a transaction spending a commitment transaction
1753          *  HTLC output when our counterparty broadcasts an old state.
1754          * 
1755          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1756          *  similar, but only a signature for the input at index `input` should be signed for here.
1757          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1758          *  to an upcoming timelock expiration.
1759          * 
1760          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1761          * 
1762          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1763          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1764          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1765          *  so).
1766          * 
1767          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1768          *  (which is committed to in the BIP 143 signatures).
1769          */
1770         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);
1771         /**
1772          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1773          *  transaction, either offered or received.
1774          * 
1775          *  Such a transaction may claim multiples offered outputs at same time if we know the
1776          *  preimage for each when we create it, but only the input at index `input` should be
1777          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1778          *  needed with regards to an upcoming timelock expiration.
1779          * 
1780          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1781          *  outputs.
1782          * 
1783          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1784          * 
1785          *  Per_commitment_point is the dynamic point corresponding to the channel state
1786          *  detected onchain. It has been generated by our counterparty and is used to derive
1787          *  channel state keys, which are then included in the witness script and committed to in the
1788          *  BIP 143 signature.
1789          */
1790         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);
1791         /**
1792          *  Create a signature for a (proposed) closing transaction.
1793          * 
1794          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1795          *  chosen to forgo their output as dust.
1796          */
1797         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1798         /**
1799          *  Signs a channel announcement message with our funding key and our node secret key (aka
1800          *  node_id or network_key), proving it comes from one of the channel participants.
1801          * 
1802          *  The first returned signature should be from our node secret key, the second from our
1803          *  funding key.
1804          * 
1805          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1806          *  our counterparty may (though likely will not) close the channel on us for violating the
1807          *  protocol.
1808          */
1809         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1810         /**
1811          *  Set the counterparty static channel data, including basepoints,
1812          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1813          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1814          *  they MUST NOT be allowed to change to different values once set.
1815          * 
1816          *  channel_parameters.is_populated() MUST be true.
1817          * 
1818          *  We bind holder_selected_contest_delay late here for API convenience.
1819          * 
1820          *  Will be called before any signatures are applied.
1821          */
1822         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1823 };
1824 class Sign {
1825 private:
1826         LDKSign self;
1827 public:
1828         Sign(const Sign&) = delete;
1829         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1830         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1831         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1832         ~Sign() { Sign_free(self); }
1833         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1834         LDKSign* operator &() { return &self; }
1835         LDKSign* operator ->() { return &self; }
1836         const LDKSign* operator &() const { return &self; }
1837         const LDKSign* operator ->() const { return &self; }
1838 };
1839 class Recipient {
1840 private:
1841         LDKRecipient self;
1842 public:
1843         Recipient(const Recipient&) = delete;
1844         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1845         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1846         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1847         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1848         LDKRecipient* operator &() { return &self; }
1849         LDKRecipient* operator ->() { return &self; }
1850         const LDKRecipient* operator &() const { return &self; }
1851         const LDKRecipient* operator ->() const { return &self; }
1852 };
1853 class KeysInterface {
1854 private:
1855         LDKKeysInterface self;
1856 public:
1857         KeysInterface(const KeysInterface&) = delete;
1858         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
1859         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
1860         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
1861         ~KeysInterface() { KeysInterface_free(self); }
1862         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
1863         LDKKeysInterface* operator &() { return &self; }
1864         LDKKeysInterface* operator ->() { return &self; }
1865         const LDKKeysInterface* operator &() const { return &self; }
1866         const LDKKeysInterface* operator ->() const { return &self; }
1867         /**
1868          *  Get node secret key based on the provided [`Recipient`].
1869          * 
1870          *  The node_id/network_key is the public key that corresponds to this secret key.
1871          * 
1872          *  This method must return the same value each time it is called with a given `Recipient`
1873          *  parameter.
1874          */
1875         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
1876         /**
1877          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1878          * 
1879          *  This method should return a different value each time it is called, to avoid linking
1880          *  on-chain funds across channels as controlled to the same user.
1881          */
1882         inline LDK::CVec_u8Z get_destination_script();
1883         /**
1884          *  Get a script pubkey which we will send funds to when closing a channel.
1885          * 
1886          *  This method should return a different value each time it is called, to avoid linking
1887          *  on-chain funds across channels as controlled to the same user.
1888          */
1889         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
1890         /**
1891          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
1892          *  restarted with some stale data!
1893          * 
1894          *  This method must return a different value each time it is called.
1895          */
1896         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
1897         /**
1898          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
1899          *  onion packets and for temporary channel IDs. There is no requirement that these be
1900          *  persisted anywhere, though they must be unique across restarts.
1901          * 
1902          *  This method must return a different value each time it is called.
1903          */
1904         inline LDKThirtyTwoBytes get_secure_random_bytes();
1905         /**
1906          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
1907          *  This is only called during deserialization of other objects which contain
1908          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
1909          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1910          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1911          *  you've read all of the provided bytes to ensure no corruption occurred.
1912          */
1913         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1914         /**
1915          *  Sign an invoice.
1916          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1917          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1918          *  blindly signing the hash.
1919          *  The hrp is ascii bytes, while the invoice data is base32.
1920          * 
1921          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1922          */
1923         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
1924         /**
1925          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1926          * 
1927          *  If the implementor of this trait supports [phantom node payments], then every node that is
1928          *  intended to be included in the phantom invoice route hints must return the same value from
1929          *  this method.
1930          * 
1931          *  This method must return the same value each time it is called.
1932          * 
1933          *  [phantom node payments]: PhantomKeysManager
1934          */
1935         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1936 };
1937 class InMemorySigner {
1938 private:
1939         LDKInMemorySigner self;
1940 public:
1941         InMemorySigner(const InMemorySigner&) = delete;
1942         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1943         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1944         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1945         ~InMemorySigner() { InMemorySigner_free(self); }
1946         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1947         LDKInMemorySigner* operator &() { return &self; }
1948         LDKInMemorySigner* operator ->() { return &self; }
1949         const LDKInMemorySigner* operator &() const { return &self; }
1950         const LDKInMemorySigner* operator ->() const { return &self; }
1951 };
1952 class KeysManager {
1953 private:
1954         LDKKeysManager self;
1955 public:
1956         KeysManager(const KeysManager&) = delete;
1957         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1958         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1959         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1960         ~KeysManager() { KeysManager_free(self); }
1961         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1962         LDKKeysManager* operator &() { return &self; }
1963         LDKKeysManager* operator ->() { return &self; }
1964         const LDKKeysManager* operator &() const { return &self; }
1965         const LDKKeysManager* operator ->() const { return &self; }
1966 };
1967 class PhantomKeysManager {
1968 private:
1969         LDKPhantomKeysManager self;
1970 public:
1971         PhantomKeysManager(const PhantomKeysManager&) = delete;
1972         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1973         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1974         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1975         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1976         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1977         LDKPhantomKeysManager* operator &() { return &self; }
1978         LDKPhantomKeysManager* operator ->() { return &self; }
1979         const LDKPhantomKeysManager* operator &() const { return &self; }
1980         const LDKPhantomKeysManager* operator ->() const { return &self; }
1981 };
1982 class FilesystemPersister {
1983 private:
1984         LDKFilesystemPersister self;
1985 public:
1986         FilesystemPersister(const FilesystemPersister&) = delete;
1987         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
1988         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
1989         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
1990         ~FilesystemPersister() { FilesystemPersister_free(self); }
1991         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
1992         LDKFilesystemPersister* operator &() { return &self; }
1993         LDKFilesystemPersister* operator ->() { return &self; }
1994         const LDKFilesystemPersister* operator &() const { return &self; }
1995         const LDKFilesystemPersister* operator ->() const { return &self; }
1996 };
1997 class ChannelManager {
1998 private:
1999         LDKChannelManager self;
2000 public:
2001         ChannelManager(const ChannelManager&) = delete;
2002         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2003         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2004         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2005         ~ChannelManager() { ChannelManager_free(self); }
2006         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2007         LDKChannelManager* operator &() { return &self; }
2008         LDKChannelManager* operator ->() { return &self; }
2009         const LDKChannelManager* operator &() const { return &self; }
2010         const LDKChannelManager* operator ->() const { return &self; }
2011 };
2012 class ChainParameters {
2013 private:
2014         LDKChainParameters self;
2015 public:
2016         ChainParameters(const ChainParameters&) = delete;
2017         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2018         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2019         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2020         ~ChainParameters() { ChainParameters_free(self); }
2021         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2022         LDKChainParameters* operator &() { return &self; }
2023         LDKChainParameters* operator ->() { return &self; }
2024         const LDKChainParameters* operator &() const { return &self; }
2025         const LDKChainParameters* operator ->() const { return &self; }
2026 };
2027 class CounterpartyForwardingInfo {
2028 private:
2029         LDKCounterpartyForwardingInfo self;
2030 public:
2031         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2032         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2033         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2034         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2035         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2036         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2037         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2038         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2039         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2040         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2041 };
2042 class ChannelCounterparty {
2043 private:
2044         LDKChannelCounterparty self;
2045 public:
2046         ChannelCounterparty(const ChannelCounterparty&) = delete;
2047         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2048         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2049         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2050         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2051         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2052         LDKChannelCounterparty* operator &() { return &self; }
2053         LDKChannelCounterparty* operator ->() { return &self; }
2054         const LDKChannelCounterparty* operator &() const { return &self; }
2055         const LDKChannelCounterparty* operator ->() const { return &self; }
2056 };
2057 class ChannelDetails {
2058 private:
2059         LDKChannelDetails self;
2060 public:
2061         ChannelDetails(const ChannelDetails&) = delete;
2062         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2063         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2064         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2065         ~ChannelDetails() { ChannelDetails_free(self); }
2066         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2067         LDKChannelDetails* operator &() { return &self; }
2068         LDKChannelDetails* operator ->() { return &self; }
2069         const LDKChannelDetails* operator &() const { return &self; }
2070         const LDKChannelDetails* operator ->() const { return &self; }
2071 };
2072 class PaymentSendFailure {
2073 private:
2074         LDKPaymentSendFailure self;
2075 public:
2076         PaymentSendFailure(const PaymentSendFailure&) = delete;
2077         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
2078         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
2079         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
2080         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
2081         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
2082         LDKPaymentSendFailure* operator &() { return &self; }
2083         LDKPaymentSendFailure* operator ->() { return &self; }
2084         const LDKPaymentSendFailure* operator &() const { return &self; }
2085         const LDKPaymentSendFailure* operator ->() const { return &self; }
2086 };
2087 class PhantomRouteHints {
2088 private:
2089         LDKPhantomRouteHints self;
2090 public:
2091         PhantomRouteHints(const PhantomRouteHints&) = delete;
2092         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2093         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2094         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2095         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2096         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2097         LDKPhantomRouteHints* operator &() { return &self; }
2098         LDKPhantomRouteHints* operator ->() { return &self; }
2099         const LDKPhantomRouteHints* operator &() const { return &self; }
2100         const LDKPhantomRouteHints* operator ->() const { return &self; }
2101 };
2102 class ChannelManagerReadArgs {
2103 private:
2104         LDKChannelManagerReadArgs self;
2105 public:
2106         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2107         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2108         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2109         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2110         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2111         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2112         LDKChannelManagerReadArgs* operator &() { return &self; }
2113         LDKChannelManagerReadArgs* operator ->() { return &self; }
2114         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2115         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2116 };
2117 class ChannelHandshakeConfig {
2118 private:
2119         LDKChannelHandshakeConfig self;
2120 public:
2121         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2122         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2123         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2124         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2125         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2126         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2127         LDKChannelHandshakeConfig* operator &() { return &self; }
2128         LDKChannelHandshakeConfig* operator ->() { return &self; }
2129         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2130         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2131 };
2132 class ChannelHandshakeLimits {
2133 private:
2134         LDKChannelHandshakeLimits self;
2135 public:
2136         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2137         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2138         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2139         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2140         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2141         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2142         LDKChannelHandshakeLimits* operator &() { return &self; }
2143         LDKChannelHandshakeLimits* operator ->() { return &self; }
2144         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2145         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2146 };
2147 class ChannelConfig {
2148 private:
2149         LDKChannelConfig self;
2150 public:
2151         ChannelConfig(const ChannelConfig&) = delete;
2152         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2153         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2154         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2155         ~ChannelConfig() { ChannelConfig_free(self); }
2156         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2157         LDKChannelConfig* operator &() { return &self; }
2158         LDKChannelConfig* operator ->() { return &self; }
2159         const LDKChannelConfig* operator &() const { return &self; }
2160         const LDKChannelConfig* operator ->() const { return &self; }
2161 };
2162 class UserConfig {
2163 private:
2164         LDKUserConfig self;
2165 public:
2166         UserConfig(const UserConfig&) = delete;
2167         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2168         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2169         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2170         ~UserConfig() { UserConfig_free(self); }
2171         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2172         LDKUserConfig* operator &() { return &self; }
2173         LDKUserConfig* operator ->() { return &self; }
2174         const LDKUserConfig* operator &() const { return &self; }
2175         const LDKUserConfig* operator ->() const { return &self; }
2176 };
2177 class APIError {
2178 private:
2179         LDKAPIError self;
2180 public:
2181         APIError(const APIError&) = delete;
2182         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2183         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2184         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2185         ~APIError() { APIError_free(self); }
2186         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2187         LDKAPIError* operator &() { return &self; }
2188         LDKAPIError* operator ->() { return &self; }
2189         const LDKAPIError* operator &() const { return &self; }
2190         const LDKAPIError* operator ->() const { return &self; }
2191 };
2192 class BigSize {
2193 private:
2194         LDKBigSize self;
2195 public:
2196         BigSize(const BigSize&) = delete;
2197         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2198         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2199         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2200         ~BigSize() { BigSize_free(self); }
2201         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2202         LDKBigSize* operator &() { return &self; }
2203         LDKBigSize* operator ->() { return &self; }
2204         const LDKBigSize* operator &() const { return &self; }
2205         const LDKBigSize* operator ->() const { return &self; }
2206 };
2207 class OutPoint {
2208 private:
2209         LDKOutPoint self;
2210 public:
2211         OutPoint(const OutPoint&) = delete;
2212         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2213         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2214         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2215         ~OutPoint() { OutPoint_free(self); }
2216         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2217         LDKOutPoint* operator &() { return &self; }
2218         LDKOutPoint* operator ->() { return &self; }
2219         const LDKOutPoint* operator &() const { return &self; }
2220         const LDKOutPoint* operator ->() const { return &self; }
2221 };
2222 class CustomMessageReader {
2223 private:
2224         LDKCustomMessageReader self;
2225 public:
2226         CustomMessageReader(const CustomMessageReader&) = delete;
2227         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2228         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2229         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2230         ~CustomMessageReader() { CustomMessageReader_free(self); }
2231         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2232         LDKCustomMessageReader* operator &() { return &self; }
2233         LDKCustomMessageReader* operator ->() { return &self; }
2234         const LDKCustomMessageReader* operator &() const { return &self; }
2235         const LDKCustomMessageReader* operator ->() const { return &self; }
2236         /**
2237          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2238          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2239          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2240          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2241          */
2242         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2243 };
2244 class Type {
2245 private:
2246         LDKType self;
2247 public:
2248         Type(const Type&) = delete;
2249         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2250         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2251         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2252         ~Type() { Type_free(self); }
2253         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2254         LDKType* operator &() { return &self; }
2255         LDKType* operator ->() { return &self; }
2256         const LDKType* operator &() const { return &self; }
2257         const LDKType* operator ->() const { return &self; }
2258         /**
2259          *  Returns the type identifying the message payload.
2260          */
2261         inline uint16_t type_id();
2262         /**
2263          * Return a human-readable "debug" string describing this object
2264          */
2265         inline LDK::Str debug_str();
2266 };
2267 class InvoicePayer {
2268 private:
2269         LDKInvoicePayer self;
2270 public:
2271         InvoicePayer(const InvoicePayer&) = delete;
2272         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2273         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2274         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2275         ~InvoicePayer() { InvoicePayer_free(self); }
2276         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2277         LDKInvoicePayer* operator &() { return &self; }
2278         LDKInvoicePayer* operator ->() { return &self; }
2279         const LDKInvoicePayer* operator &() const { return &self; }
2280         const LDKInvoicePayer* operator ->() const { return &self; }
2281 };
2282 class Payer {
2283 private:
2284         LDKPayer self;
2285 public:
2286         Payer(const Payer&) = delete;
2287         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2288         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2289         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2290         ~Payer() { Payer_free(self); }
2291         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2292         LDKPayer* operator &() { return &self; }
2293         LDKPayer* operator ->() { return &self; }
2294         const LDKPayer* operator &() const { return &self; }
2295         const LDKPayer* operator ->() const { return &self; }
2296         /**
2297          *  Returns the payer's node id.
2298          */
2299         inline LDKPublicKey node_id();
2300         /**
2301          *  Returns the payer's channels.
2302          */
2303         inline LDK::CVec_ChannelDetailsZ first_hops();
2304         /**
2305          *  Sends a payment over the Lightning Network using the given [`Route`].
2306          * 
2307          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2308          */
2309         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
2310         /**
2311          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2312          */
2313         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
2314         /**
2315          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2316          */
2317         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2318         /**
2319          *  Signals that no further retries for the given payment will occur.
2320          */
2321         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2322 };
2323 class Router {
2324 private:
2325         LDKRouter self;
2326 public:
2327         Router(const Router&) = delete;
2328         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
2329         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
2330         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
2331         ~Router() { Router_free(self); }
2332         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
2333         LDKRouter* operator &() { return &self; }
2334         LDKRouter* operator ->() { return &self; }
2335         const LDKRouter* operator &() const { return &self; }
2336         const LDKRouter* operator ->() const { return &self; }
2337         /**
2338          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
2339          * 
2340          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
2341          */
2342         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer);
2343 };
2344 class Retry {
2345 private:
2346         LDKRetry self;
2347 public:
2348         Retry(const Retry&) = delete;
2349         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
2350         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
2351         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
2352         ~Retry() { Retry_free(self); }
2353         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
2354         LDKRetry* operator &() { return &self; }
2355         LDKRetry* operator ->() { return &self; }
2356         const LDKRetry* operator &() const { return &self; }
2357         const LDKRetry* operator ->() const { return &self; }
2358 };
2359 class PaymentError {
2360 private:
2361         LDKPaymentError self;
2362 public:
2363         PaymentError(const PaymentError&) = delete;
2364         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2365         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2366         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2367         ~PaymentError() { PaymentError_free(self); }
2368         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2369         LDKPaymentError* operator &() { return &self; }
2370         LDKPaymentError* operator ->() { return &self; }
2371         const LDKPaymentError* operator &() const { return &self; }
2372         const LDKPaymentError* operator ->() const { return &self; }
2373 };
2374 class ParseError {
2375 private:
2376         LDKParseError self;
2377 public:
2378         ParseError(const ParseError&) = delete;
2379         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
2380         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
2381         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
2382         ~ParseError() { ParseError_free(self); }
2383         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
2384         LDKParseError* operator &() { return &self; }
2385         LDKParseError* operator ->() { return &self; }
2386         const LDKParseError* operator &() const { return &self; }
2387         const LDKParseError* operator ->() const { return &self; }
2388 };
2389 class ParseOrSemanticError {
2390 private:
2391         LDKParseOrSemanticError self;
2392 public:
2393         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
2394         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
2395         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
2396         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
2397         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
2398         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
2399         LDKParseOrSemanticError* operator &() { return &self; }
2400         LDKParseOrSemanticError* operator ->() { return &self; }
2401         const LDKParseOrSemanticError* operator &() const { return &self; }
2402         const LDKParseOrSemanticError* operator ->() const { return &self; }
2403 };
2404 class Invoice {
2405 private:
2406         LDKInvoice self;
2407 public:
2408         Invoice(const Invoice&) = delete;
2409         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
2410         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
2411         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
2412         ~Invoice() { Invoice_free(self); }
2413         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
2414         LDKInvoice* operator &() { return &self; }
2415         LDKInvoice* operator ->() { return &self; }
2416         const LDKInvoice* operator &() const { return &self; }
2417         const LDKInvoice* operator ->() const { return &self; }
2418 };
2419 class SignedRawInvoice {
2420 private:
2421         LDKSignedRawInvoice self;
2422 public:
2423         SignedRawInvoice(const SignedRawInvoice&) = delete;
2424         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
2425         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
2426         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
2427         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
2428         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
2429         LDKSignedRawInvoice* operator &() { return &self; }
2430         LDKSignedRawInvoice* operator ->() { return &self; }
2431         const LDKSignedRawInvoice* operator &() const { return &self; }
2432         const LDKSignedRawInvoice* operator ->() const { return &self; }
2433 };
2434 class RawInvoice {
2435 private:
2436         LDKRawInvoice self;
2437 public:
2438         RawInvoice(const RawInvoice&) = delete;
2439         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
2440         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
2441         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
2442         ~RawInvoice() { RawInvoice_free(self); }
2443         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
2444         LDKRawInvoice* operator &() { return &self; }
2445         LDKRawInvoice* operator ->() { return &self; }
2446         const LDKRawInvoice* operator &() const { return &self; }
2447         const LDKRawInvoice* operator ->() const { return &self; }
2448 };
2449 class RawDataPart {
2450 private:
2451         LDKRawDataPart self;
2452 public:
2453         RawDataPart(const RawDataPart&) = delete;
2454         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
2455         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
2456         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
2457         ~RawDataPart() { RawDataPart_free(self); }
2458         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
2459         LDKRawDataPart* operator &() { return &self; }
2460         LDKRawDataPart* operator ->() { return &self; }
2461         const LDKRawDataPart* operator &() const { return &self; }
2462         const LDKRawDataPart* operator ->() const { return &self; }
2463 };
2464 class PositiveTimestamp {
2465 private:
2466         LDKPositiveTimestamp self;
2467 public:
2468         PositiveTimestamp(const PositiveTimestamp&) = delete;
2469         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
2470         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
2471         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
2472         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
2473         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
2474         LDKPositiveTimestamp* operator &() { return &self; }
2475         LDKPositiveTimestamp* operator ->() { return &self; }
2476         const LDKPositiveTimestamp* operator &() const { return &self; }
2477         const LDKPositiveTimestamp* operator ->() const { return &self; }
2478 };
2479 class SiPrefix {
2480 private:
2481         LDKSiPrefix self;
2482 public:
2483         SiPrefix(const SiPrefix&) = delete;
2484         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
2485         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
2486         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
2487         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
2488         LDKSiPrefix* operator &() { return &self; }
2489         LDKSiPrefix* operator ->() { return &self; }
2490         const LDKSiPrefix* operator &() const { return &self; }
2491         const LDKSiPrefix* operator ->() const { return &self; }
2492 };
2493 class Currency {
2494 private:
2495         LDKCurrency self;
2496 public:
2497         Currency(const Currency&) = delete;
2498         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
2499         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
2500         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
2501         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
2502         LDKCurrency* operator &() { return &self; }
2503         LDKCurrency* operator ->() { return &self; }
2504         const LDKCurrency* operator &() const { return &self; }
2505         const LDKCurrency* operator ->() const { return &self; }
2506 };
2507 class Sha256 {
2508 private:
2509         LDKSha256 self;
2510 public:
2511         Sha256(const Sha256&) = delete;
2512         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
2513         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
2514         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
2515         ~Sha256() { Sha256_free(self); }
2516         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
2517         LDKSha256* operator &() { return &self; }
2518         LDKSha256* operator ->() { return &self; }
2519         const LDKSha256* operator &() const { return &self; }
2520         const LDKSha256* operator ->() const { return &self; }
2521 };
2522 class Description {
2523 private:
2524         LDKDescription self;
2525 public:
2526         Description(const Description&) = delete;
2527         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
2528         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
2529         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
2530         ~Description() { Description_free(self); }
2531         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
2532         LDKDescription* operator &() { return &self; }
2533         LDKDescription* operator ->() { return &self; }
2534         const LDKDescription* operator &() const { return &self; }
2535         const LDKDescription* operator ->() const { return &self; }
2536 };
2537 class PayeePubKey {
2538 private:
2539         LDKPayeePubKey self;
2540 public:
2541         PayeePubKey(const PayeePubKey&) = delete;
2542         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
2543         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
2544         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
2545         ~PayeePubKey() { PayeePubKey_free(self); }
2546         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
2547         LDKPayeePubKey* operator &() { return &self; }
2548         LDKPayeePubKey* operator ->() { return &self; }
2549         const LDKPayeePubKey* operator &() const { return &self; }
2550         const LDKPayeePubKey* operator ->() const { return &self; }
2551 };
2552 class ExpiryTime {
2553 private:
2554         LDKExpiryTime self;
2555 public:
2556         ExpiryTime(const ExpiryTime&) = delete;
2557         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
2558         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
2559         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
2560         ~ExpiryTime() { ExpiryTime_free(self); }
2561         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
2562         LDKExpiryTime* operator &() { return &self; }
2563         LDKExpiryTime* operator ->() { return &self; }
2564         const LDKExpiryTime* operator &() const { return &self; }
2565         const LDKExpiryTime* operator ->() const { return &self; }
2566 };
2567 class MinFinalCltvExpiry {
2568 private:
2569         LDKMinFinalCltvExpiry self;
2570 public:
2571         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
2572         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
2573         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
2574         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
2575         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
2576         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
2577         LDKMinFinalCltvExpiry* operator &() { return &self; }
2578         LDKMinFinalCltvExpiry* operator ->() { return &self; }
2579         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
2580         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
2581 };
2582 class Fallback {
2583 private:
2584         LDKFallback self;
2585 public:
2586         Fallback(const Fallback&) = delete;
2587         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
2588         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
2589         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
2590         ~Fallback() { Fallback_free(self); }
2591         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
2592         LDKFallback* operator &() { return &self; }
2593         LDKFallback* operator ->() { return &self; }
2594         const LDKFallback* operator &() const { return &self; }
2595         const LDKFallback* operator ->() const { return &self; }
2596 };
2597 class InvoiceSignature {
2598 private:
2599         LDKInvoiceSignature self;
2600 public:
2601         InvoiceSignature(const InvoiceSignature&) = delete;
2602         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
2603         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
2604         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
2605         ~InvoiceSignature() { InvoiceSignature_free(self); }
2606         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
2607         LDKInvoiceSignature* operator &() { return &self; }
2608         LDKInvoiceSignature* operator ->() { return &self; }
2609         const LDKInvoiceSignature* operator &() const { return &self; }
2610         const LDKInvoiceSignature* operator ->() const { return &self; }
2611 };
2612 class PrivateRoute {
2613 private:
2614         LDKPrivateRoute self;
2615 public:
2616         PrivateRoute(const PrivateRoute&) = delete;
2617         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
2618         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
2619         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
2620         ~PrivateRoute() { PrivateRoute_free(self); }
2621         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
2622         LDKPrivateRoute* operator &() { return &self; }
2623         LDKPrivateRoute* operator ->() { return &self; }
2624         const LDKPrivateRoute* operator &() const { return &self; }
2625         const LDKPrivateRoute* operator ->() const { return &self; }
2626 };
2627 class CreationError {
2628 private:
2629         LDKCreationError self;
2630 public:
2631         CreationError(const CreationError&) = delete;
2632         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
2633         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
2634         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
2635         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
2636         LDKCreationError* operator &() { return &self; }
2637         LDKCreationError* operator ->() { return &self; }
2638         const LDKCreationError* operator &() const { return &self; }
2639         const LDKCreationError* operator ->() const { return &self; }
2640 };
2641 class SemanticError {
2642 private:
2643         LDKSemanticError self;
2644 public:
2645         SemanticError(const SemanticError&) = delete;
2646         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
2647         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
2648         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
2649         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
2650         LDKSemanticError* operator &() { return &self; }
2651         LDKSemanticError* operator ->() { return &self; }
2652         const LDKSemanticError* operator &() const { return &self; }
2653         const LDKSemanticError* operator ->() const { return &self; }
2654 };
2655 class SignOrCreationError {
2656 private:
2657         LDKSignOrCreationError self;
2658 public:
2659         SignOrCreationError(const SignOrCreationError&) = delete;
2660         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
2661         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
2662         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
2663         ~SignOrCreationError() { SignOrCreationError_free(self); }
2664         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
2665         LDKSignOrCreationError* operator &() { return &self; }
2666         LDKSignOrCreationError* operator ->() { return &self; }
2667         const LDKSignOrCreationError* operator &() const { return &self; }
2668         const LDKSignOrCreationError* operator ->() const { return &self; }
2669 };
2670 class ChannelMonitorUpdate {
2671 private:
2672         LDKChannelMonitorUpdate self;
2673 public:
2674         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2675         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2676         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2677         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2678         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2679         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2680         LDKChannelMonitorUpdate* operator &() { return &self; }
2681         LDKChannelMonitorUpdate* operator ->() { return &self; }
2682         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2683         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2684 };
2685 class MonitorEvent {
2686 private:
2687         LDKMonitorEvent self;
2688 public:
2689         MonitorEvent(const MonitorEvent&) = delete;
2690         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2691         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2692         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2693         ~MonitorEvent() { MonitorEvent_free(self); }
2694         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2695         LDKMonitorEvent* operator &() { return &self; }
2696         LDKMonitorEvent* operator ->() { return &self; }
2697         const LDKMonitorEvent* operator &() const { return &self; }
2698         const LDKMonitorEvent* operator ->() const { return &self; }
2699 };
2700 class HTLCUpdate {
2701 private:
2702         LDKHTLCUpdate self;
2703 public:
2704         HTLCUpdate(const HTLCUpdate&) = delete;
2705         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2706         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2707         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2708         ~HTLCUpdate() { HTLCUpdate_free(self); }
2709         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2710         LDKHTLCUpdate* operator &() { return &self; }
2711         LDKHTLCUpdate* operator ->() { return &self; }
2712         const LDKHTLCUpdate* operator &() const { return &self; }
2713         const LDKHTLCUpdate* operator ->() const { return &self; }
2714 };
2715 class Balance {
2716 private:
2717         LDKBalance self;
2718 public:
2719         Balance(const Balance&) = delete;
2720         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2721         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2722         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2723         ~Balance() { Balance_free(self); }
2724         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2725         LDKBalance* operator &() { return &self; }
2726         LDKBalance* operator ->() { return &self; }
2727         const LDKBalance* operator &() const { return &self; }
2728         const LDKBalance* operator ->() const { return &self; }
2729 };
2730 class ChannelMonitor {
2731 private:
2732         LDKChannelMonitor self;
2733 public:
2734         ChannelMonitor(const ChannelMonitor&) = delete;
2735         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2736         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2737         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2738         ~ChannelMonitor() { ChannelMonitor_free(self); }
2739         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2740         LDKChannelMonitor* operator &() { return &self; }
2741         LDKChannelMonitor* operator ->() { return &self; }
2742         const LDKChannelMonitor* operator &() const { return &self; }
2743         const LDKChannelMonitor* operator ->() const { return &self; }
2744 };
2745 class ExpandedKey {
2746 private:
2747         LDKExpandedKey self;
2748 public:
2749         ExpandedKey(const ExpandedKey&) = delete;
2750         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2751         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2752         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2753         ~ExpandedKey() { ExpandedKey_free(self); }
2754         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2755         LDKExpandedKey* operator &() { return &self; }
2756         LDKExpandedKey* operator ->() { return &self; }
2757         const LDKExpandedKey* operator &() const { return &self; }
2758         const LDKExpandedKey* operator ->() const { return &self; }
2759 };
2760 class CustomMessageHandler {
2761 private:
2762         LDKCustomMessageHandler self;
2763 public:
2764         CustomMessageHandler(const CustomMessageHandler&) = delete;
2765         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2766         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2767         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2768         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2769         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2770         LDKCustomMessageHandler* operator &() { return &self; }
2771         LDKCustomMessageHandler* operator ->() { return &self; }
2772         const LDKCustomMessageHandler* operator &() const { return &self; }
2773         const LDKCustomMessageHandler* operator ->() const { return &self; }
2774         /**
2775          *  Called with the message type that was received and the buffer to be read.
2776          *  Can return a `MessageHandlingError` if the message could not be handled.
2777          */
2778         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2779         /**
2780          *  Gets the list of pending messages which were generated by the custom message
2781          *  handler, clearing the list in the process. The first tuple element must
2782          *  correspond to the intended recipients node ids. If no connection to one of the
2783          *  specified node does not exist, the message is simply not sent to it.
2784          */
2785         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2786 };
2787 class IgnoringMessageHandler {
2788 private:
2789         LDKIgnoringMessageHandler self;
2790 public:
2791         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2792         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2793         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2794         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2795         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2796         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2797         LDKIgnoringMessageHandler* operator &() { return &self; }
2798         LDKIgnoringMessageHandler* operator ->() { return &self; }
2799         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2800         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2801 };
2802 class ErroringMessageHandler {
2803 private:
2804         LDKErroringMessageHandler self;
2805 public:
2806         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2807         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2808         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2809         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2810         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2811         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2812         LDKErroringMessageHandler* operator &() { return &self; }
2813         LDKErroringMessageHandler* operator ->() { return &self; }
2814         const LDKErroringMessageHandler* operator &() const { return &self; }
2815         const LDKErroringMessageHandler* operator ->() const { return &self; }
2816 };
2817 class MessageHandler {
2818 private:
2819         LDKMessageHandler self;
2820 public:
2821         MessageHandler(const MessageHandler&) = delete;
2822         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2823         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2824         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2825         ~MessageHandler() { MessageHandler_free(self); }
2826         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2827         LDKMessageHandler* operator &() { return &self; }
2828         LDKMessageHandler* operator ->() { return &self; }
2829         const LDKMessageHandler* operator &() const { return &self; }
2830         const LDKMessageHandler* operator ->() const { return &self; }
2831 };
2832 class SocketDescriptor {
2833 private:
2834         LDKSocketDescriptor self;
2835 public:
2836         SocketDescriptor(const SocketDescriptor&) = delete;
2837         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2838         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2839         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2840         ~SocketDescriptor() { SocketDescriptor_free(self); }
2841         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2842         LDKSocketDescriptor* operator &() { return &self; }
2843         LDKSocketDescriptor* operator ->() { return &self; }
2844         const LDKSocketDescriptor* operator &() const { return &self; }
2845         const LDKSocketDescriptor* operator ->() const { return &self; }
2846         /**
2847          *  Attempts to send some data from the given slice to the peer.
2848          * 
2849          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2850          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2851          *  called and further write attempts may occur until that time.
2852          * 
2853          *  If the returned size is smaller than `data.len()`, a
2854          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2855          *  written. Additionally, until a `send_data` event completes fully, no further
2856          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2857          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2858          *  until then.
2859          * 
2860          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2861          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2862          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2863          *  `resume_read` of false carries no meaning, and should not cause any action.
2864          */
2865         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2866         /**
2867          *  Disconnect the socket pointed to by this SocketDescriptor.
2868          * 
2869          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2870          *  call (doing so is a noop).
2871          */
2872         inline void disconnect_socket();
2873         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2874         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2875         /**
2876          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2877          * This is used, for example, for inclusion of this object in a hash map.
2878          */
2879         inline uint64_t hash();
2880 };
2881 class PeerHandleError {
2882 private:
2883         LDKPeerHandleError self;
2884 public:
2885         PeerHandleError(const PeerHandleError&) = delete;
2886         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2887         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2888         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2889         ~PeerHandleError() { PeerHandleError_free(self); }
2890         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2891         LDKPeerHandleError* operator &() { return &self; }
2892         LDKPeerHandleError* operator ->() { return &self; }
2893         const LDKPeerHandleError* operator &() const { return &self; }
2894         const LDKPeerHandleError* operator ->() const { return &self; }
2895 };
2896 class PeerManager {
2897 private:
2898         LDKPeerManager self;
2899 public:
2900         PeerManager(const PeerManager&) = delete;
2901         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2902         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2903         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2904         ~PeerManager() { PeerManager_free(self); }
2905         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2906         LDKPeerManager* operator &() { return &self; }
2907         LDKPeerManager* operator ->() { return &self; }
2908         const LDKPeerManager* operator &() const { return &self; }
2909         const LDKPeerManager* operator ->() const { return &self; }
2910 };
2911 class RapidGossipSync {
2912 private:
2913         LDKRapidGossipSync self;
2914 public:
2915         RapidGossipSync(const RapidGossipSync&) = delete;
2916         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
2917         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
2918         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
2919         ~RapidGossipSync() { RapidGossipSync_free(self); }
2920         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
2921         LDKRapidGossipSync* operator &() { return &self; }
2922         LDKRapidGossipSync* operator ->() { return &self; }
2923         const LDKRapidGossipSync* operator &() const { return &self; }
2924         const LDKRapidGossipSync* operator ->() const { return &self; }
2925 };
2926 class Persister {
2927 private:
2928         LDKPersister self;
2929 public:
2930         Persister(const Persister&) = delete;
2931         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
2932         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
2933         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
2934         ~Persister() { Persister_free(self); }
2935         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
2936         LDKPersister* operator &() { return &self; }
2937         LDKPersister* operator ->() { return &self; }
2938         const LDKPersister* operator &() const { return &self; }
2939         const LDKPersister* operator ->() const { return &self; }
2940         /**
2941          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
2942          */
2943         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
2944         /**
2945          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
2946          */
2947         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
2948         /**
2949          *  Persist the given [`MultiThreadedLockableScore`] to disk, returning an error if persistence failed.
2950          */
2951         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer);
2952 };
2953 class DecodeError {
2954 private:
2955         LDKDecodeError self;
2956 public:
2957         DecodeError(const DecodeError&) = delete;
2958         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
2959         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
2960         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
2961         ~DecodeError() { DecodeError_free(self); }
2962         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
2963         LDKDecodeError* operator &() { return &self; }
2964         LDKDecodeError* operator ->() { return &self; }
2965         const LDKDecodeError* operator &() const { return &self; }
2966         const LDKDecodeError* operator ->() const { return &self; }
2967 };
2968 class Init {
2969 private:
2970         LDKInit self;
2971 public:
2972         Init(const Init&) = delete;
2973         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
2974         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
2975         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
2976         ~Init() { Init_free(self); }
2977         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
2978         LDKInit* operator &() { return &self; }
2979         LDKInit* operator ->() { return &self; }
2980         const LDKInit* operator &() const { return &self; }
2981         const LDKInit* operator ->() const { return &self; }
2982 };
2983 class ErrorMessage {
2984 private:
2985         LDKErrorMessage self;
2986 public:
2987         ErrorMessage(const ErrorMessage&) = delete;
2988         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
2989         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
2990         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
2991         ~ErrorMessage() { ErrorMessage_free(self); }
2992         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
2993         LDKErrorMessage* operator &() { return &self; }
2994         LDKErrorMessage* operator ->() { return &self; }
2995         const LDKErrorMessage* operator &() const { return &self; }
2996         const LDKErrorMessage* operator ->() const { return &self; }
2997 };
2998 class WarningMessage {
2999 private:
3000         LDKWarningMessage self;
3001 public:
3002         WarningMessage(const WarningMessage&) = delete;
3003         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3004         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3005         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3006         ~WarningMessage() { WarningMessage_free(self); }
3007         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3008         LDKWarningMessage* operator &() { return &self; }
3009         LDKWarningMessage* operator ->() { return &self; }
3010         const LDKWarningMessage* operator &() const { return &self; }
3011         const LDKWarningMessage* operator ->() const { return &self; }
3012 };
3013 class Ping {
3014 private:
3015         LDKPing self;
3016 public:
3017         Ping(const Ping&) = delete;
3018         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3019         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3020         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3021         ~Ping() { Ping_free(self); }
3022         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3023         LDKPing* operator &() { return &self; }
3024         LDKPing* operator ->() { return &self; }
3025         const LDKPing* operator &() const { return &self; }
3026         const LDKPing* operator ->() const { return &self; }
3027 };
3028 class Pong {
3029 private:
3030         LDKPong self;
3031 public:
3032         Pong(const Pong&) = delete;
3033         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3034         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3035         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3036         ~Pong() { Pong_free(self); }
3037         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3038         LDKPong* operator &() { return &self; }
3039         LDKPong* operator ->() { return &self; }
3040         const LDKPong* operator &() const { return &self; }
3041         const LDKPong* operator ->() const { return &self; }
3042 };
3043 class OpenChannel {
3044 private:
3045         LDKOpenChannel self;
3046 public:
3047         OpenChannel(const OpenChannel&) = delete;
3048         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3049         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3050         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3051         ~OpenChannel() { OpenChannel_free(self); }
3052         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3053         LDKOpenChannel* operator &() { return &self; }
3054         LDKOpenChannel* operator ->() { return &self; }
3055         const LDKOpenChannel* operator &() const { return &self; }
3056         const LDKOpenChannel* operator ->() const { return &self; }
3057 };
3058 class AcceptChannel {
3059 private:
3060         LDKAcceptChannel self;
3061 public:
3062         AcceptChannel(const AcceptChannel&) = delete;
3063         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3064         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3065         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3066         ~AcceptChannel() { AcceptChannel_free(self); }
3067         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3068         LDKAcceptChannel* operator &() { return &self; }
3069         LDKAcceptChannel* operator ->() { return &self; }
3070         const LDKAcceptChannel* operator &() const { return &self; }
3071         const LDKAcceptChannel* operator ->() const { return &self; }
3072 };
3073 class FundingCreated {
3074 private:
3075         LDKFundingCreated self;
3076 public:
3077         FundingCreated(const FundingCreated&) = delete;
3078         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3079         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3080         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3081         ~FundingCreated() { FundingCreated_free(self); }
3082         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3083         LDKFundingCreated* operator &() { return &self; }
3084         LDKFundingCreated* operator ->() { return &self; }
3085         const LDKFundingCreated* operator &() const { return &self; }
3086         const LDKFundingCreated* operator ->() const { return &self; }
3087 };
3088 class FundingSigned {
3089 private:
3090         LDKFundingSigned self;
3091 public:
3092         FundingSigned(const FundingSigned&) = delete;
3093         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3094         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3095         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3096         ~FundingSigned() { FundingSigned_free(self); }
3097         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3098         LDKFundingSigned* operator &() { return &self; }
3099         LDKFundingSigned* operator ->() { return &self; }
3100         const LDKFundingSigned* operator &() const { return &self; }
3101         const LDKFundingSigned* operator ->() const { return &self; }
3102 };
3103 class ChannelReady {
3104 private:
3105         LDKChannelReady self;
3106 public:
3107         ChannelReady(const ChannelReady&) = delete;
3108         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3109         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3110         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3111         ~ChannelReady() { ChannelReady_free(self); }
3112         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3113         LDKChannelReady* operator &() { return &self; }
3114         LDKChannelReady* operator ->() { return &self; }
3115         const LDKChannelReady* operator &() const { return &self; }
3116         const LDKChannelReady* operator ->() const { return &self; }
3117 };
3118 class Shutdown {
3119 private:
3120         LDKShutdown self;
3121 public:
3122         Shutdown(const Shutdown&) = delete;
3123         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3124         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3125         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3126         ~Shutdown() { Shutdown_free(self); }
3127         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3128         LDKShutdown* operator &() { return &self; }
3129         LDKShutdown* operator ->() { return &self; }
3130         const LDKShutdown* operator &() const { return &self; }
3131         const LDKShutdown* operator ->() const { return &self; }
3132 };
3133 class ClosingSignedFeeRange {
3134 private:
3135         LDKClosingSignedFeeRange self;
3136 public:
3137         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3138         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3139         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3140         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3141         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3142         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3143         LDKClosingSignedFeeRange* operator &() { return &self; }
3144         LDKClosingSignedFeeRange* operator ->() { return &self; }
3145         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3146         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3147 };
3148 class ClosingSigned {
3149 private:
3150         LDKClosingSigned self;
3151 public:
3152         ClosingSigned(const ClosingSigned&) = delete;
3153         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3154         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3155         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3156         ~ClosingSigned() { ClosingSigned_free(self); }
3157         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3158         LDKClosingSigned* operator &() { return &self; }
3159         LDKClosingSigned* operator ->() { return &self; }
3160         const LDKClosingSigned* operator &() const { return &self; }
3161         const LDKClosingSigned* operator ->() const { return &self; }
3162 };
3163 class UpdateAddHTLC {
3164 private:
3165         LDKUpdateAddHTLC self;
3166 public:
3167         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3168         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3169         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3170         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3171         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3172         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3173         LDKUpdateAddHTLC* operator &() { return &self; }
3174         LDKUpdateAddHTLC* operator ->() { return &self; }
3175         const LDKUpdateAddHTLC* operator &() const { return &self; }
3176         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3177 };
3178 class UpdateFulfillHTLC {
3179 private:
3180         LDKUpdateFulfillHTLC self;
3181 public:
3182         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3183         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3184         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3185         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3186         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3187         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3188         LDKUpdateFulfillHTLC* operator &() { return &self; }
3189         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3190         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3191         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3192 };
3193 class UpdateFailHTLC {
3194 private:
3195         LDKUpdateFailHTLC self;
3196 public:
3197         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3198         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3199         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3200         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3201         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3202         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3203         LDKUpdateFailHTLC* operator &() { return &self; }
3204         LDKUpdateFailHTLC* operator ->() { return &self; }
3205         const LDKUpdateFailHTLC* operator &() const { return &self; }
3206         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3207 };
3208 class UpdateFailMalformedHTLC {
3209 private:
3210         LDKUpdateFailMalformedHTLC self;
3211 public:
3212         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3213         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3214         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3215         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3216         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3217         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3218         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3219         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3220         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3221         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3222 };
3223 class CommitmentSigned {
3224 private:
3225         LDKCommitmentSigned self;
3226 public:
3227         CommitmentSigned(const CommitmentSigned&) = delete;
3228         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3229         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3230         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3231         ~CommitmentSigned() { CommitmentSigned_free(self); }
3232         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3233         LDKCommitmentSigned* operator &() { return &self; }
3234         LDKCommitmentSigned* operator ->() { return &self; }
3235         const LDKCommitmentSigned* operator &() const { return &self; }
3236         const LDKCommitmentSigned* operator ->() const { return &self; }
3237 };
3238 class RevokeAndACK {
3239 private:
3240         LDKRevokeAndACK self;
3241 public:
3242         RevokeAndACK(const RevokeAndACK&) = delete;
3243         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3244         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3245         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3246         ~RevokeAndACK() { RevokeAndACK_free(self); }
3247         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3248         LDKRevokeAndACK* operator &() { return &self; }
3249         LDKRevokeAndACK* operator ->() { return &self; }
3250         const LDKRevokeAndACK* operator &() const { return &self; }
3251         const LDKRevokeAndACK* operator ->() const { return &self; }
3252 };
3253 class UpdateFee {
3254 private:
3255         LDKUpdateFee self;
3256 public:
3257         UpdateFee(const UpdateFee&) = delete;
3258         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3259         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3260         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3261         ~UpdateFee() { UpdateFee_free(self); }
3262         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3263         LDKUpdateFee* operator &() { return &self; }
3264         LDKUpdateFee* operator ->() { return &self; }
3265         const LDKUpdateFee* operator &() const { return &self; }
3266         const LDKUpdateFee* operator ->() const { return &self; }
3267 };
3268 class DataLossProtect {
3269 private:
3270         LDKDataLossProtect self;
3271 public:
3272         DataLossProtect(const DataLossProtect&) = delete;
3273         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3274         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3275         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3276         ~DataLossProtect() { DataLossProtect_free(self); }
3277         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3278         LDKDataLossProtect* operator &() { return &self; }
3279         LDKDataLossProtect* operator ->() { return &self; }
3280         const LDKDataLossProtect* operator &() const { return &self; }
3281         const LDKDataLossProtect* operator ->() const { return &self; }
3282 };
3283 class ChannelReestablish {
3284 private:
3285         LDKChannelReestablish self;
3286 public:
3287         ChannelReestablish(const ChannelReestablish&) = delete;
3288         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3289         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3290         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3291         ~ChannelReestablish() { ChannelReestablish_free(self); }
3292         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3293         LDKChannelReestablish* operator &() { return &self; }
3294         LDKChannelReestablish* operator ->() { return &self; }
3295         const LDKChannelReestablish* operator &() const { return &self; }
3296         const LDKChannelReestablish* operator ->() const { return &self; }
3297 };
3298 class AnnouncementSignatures {
3299 private:
3300         LDKAnnouncementSignatures self;
3301 public:
3302         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3303         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3304         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3305         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3306         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3307         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3308         LDKAnnouncementSignatures* operator &() { return &self; }
3309         LDKAnnouncementSignatures* operator ->() { return &self; }
3310         const LDKAnnouncementSignatures* operator &() const { return &self; }
3311         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3312 };
3313 class NetAddress {
3314 private:
3315         LDKNetAddress self;
3316 public:
3317         NetAddress(const NetAddress&) = delete;
3318         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3319         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3320         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3321         ~NetAddress() { NetAddress_free(self); }
3322         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3323         LDKNetAddress* operator &() { return &self; }
3324         LDKNetAddress* operator ->() { return &self; }
3325         const LDKNetAddress* operator &() const { return &self; }
3326         const LDKNetAddress* operator ->() const { return &self; }
3327 };
3328 class UnsignedNodeAnnouncement {
3329 private:
3330         LDKUnsignedNodeAnnouncement self;
3331 public:
3332         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3333         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3334         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3335         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3336         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3337         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3338         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3339         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3340         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3341         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3342 };
3343 class NodeAnnouncement {
3344 private:
3345         LDKNodeAnnouncement self;
3346 public:
3347         NodeAnnouncement(const NodeAnnouncement&) = delete;
3348         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3349         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3350         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3351         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3352         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3353         LDKNodeAnnouncement* operator &() { return &self; }
3354         LDKNodeAnnouncement* operator ->() { return &self; }
3355         const LDKNodeAnnouncement* operator &() const { return &self; }
3356         const LDKNodeAnnouncement* operator ->() const { return &self; }
3357 };
3358 class UnsignedChannelAnnouncement {
3359 private:
3360         LDKUnsignedChannelAnnouncement self;
3361 public:
3362         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3363         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3364         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3365         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3366         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3367         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3368         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3369         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3370         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3371         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3372 };
3373 class ChannelAnnouncement {
3374 private:
3375         LDKChannelAnnouncement self;
3376 public:
3377         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3378         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3379         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3380         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3381         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3382         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3383         LDKChannelAnnouncement* operator &() { return &self; }
3384         LDKChannelAnnouncement* operator ->() { return &self; }
3385         const LDKChannelAnnouncement* operator &() const { return &self; }
3386         const LDKChannelAnnouncement* operator ->() const { return &self; }
3387 };
3388 class UnsignedChannelUpdate {
3389 private:
3390         LDKUnsignedChannelUpdate self;
3391 public:
3392         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3393         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3394         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3395         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3396         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3397         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3398         LDKUnsignedChannelUpdate* operator &() { return &self; }
3399         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3400         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3401         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3402 };
3403 class ChannelUpdate {
3404 private:
3405         LDKChannelUpdate self;
3406 public:
3407         ChannelUpdate(const ChannelUpdate&) = delete;
3408         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3409         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3410         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3411         ~ChannelUpdate() { ChannelUpdate_free(self); }
3412         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3413         LDKChannelUpdate* operator &() { return &self; }
3414         LDKChannelUpdate* operator ->() { return &self; }
3415         const LDKChannelUpdate* operator &() const { return &self; }
3416         const LDKChannelUpdate* operator ->() const { return &self; }
3417 };
3418 class QueryChannelRange {
3419 private:
3420         LDKQueryChannelRange self;
3421 public:
3422         QueryChannelRange(const QueryChannelRange&) = delete;
3423         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3424         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3425         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3426         ~QueryChannelRange() { QueryChannelRange_free(self); }
3427         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3428         LDKQueryChannelRange* operator &() { return &self; }
3429         LDKQueryChannelRange* operator ->() { return &self; }
3430         const LDKQueryChannelRange* operator &() const { return &self; }
3431         const LDKQueryChannelRange* operator ->() const { return &self; }
3432 };
3433 class ReplyChannelRange {
3434 private:
3435         LDKReplyChannelRange self;
3436 public:
3437         ReplyChannelRange(const ReplyChannelRange&) = delete;
3438         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3439         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3440         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3441         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3442         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3443         LDKReplyChannelRange* operator &() { return &self; }
3444         LDKReplyChannelRange* operator ->() { return &self; }
3445         const LDKReplyChannelRange* operator &() const { return &self; }
3446         const LDKReplyChannelRange* operator ->() const { return &self; }
3447 };
3448 class QueryShortChannelIds {
3449 private:
3450         LDKQueryShortChannelIds self;
3451 public:
3452         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3453         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3454         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3455         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3456         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3457         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3458         LDKQueryShortChannelIds* operator &() { return &self; }
3459         LDKQueryShortChannelIds* operator ->() { return &self; }
3460         const LDKQueryShortChannelIds* operator &() const { return &self; }
3461         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3462 };
3463 class ReplyShortChannelIdsEnd {
3464 private:
3465         LDKReplyShortChannelIdsEnd self;
3466 public:
3467         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3468         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3469         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3470         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3471         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3472         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3473         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3474         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3475         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3476         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3477 };
3478 class GossipTimestampFilter {
3479 private:
3480         LDKGossipTimestampFilter self;
3481 public:
3482         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3483         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3484         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3485         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3486         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3487         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3488         LDKGossipTimestampFilter* operator &() { return &self; }
3489         LDKGossipTimestampFilter* operator ->() { return &self; }
3490         const LDKGossipTimestampFilter* operator &() const { return &self; }
3491         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3492 };
3493 class ErrorAction {
3494 private:
3495         LDKErrorAction self;
3496 public:
3497         ErrorAction(const ErrorAction&) = delete;
3498         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3499         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3500         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3501         ~ErrorAction() { ErrorAction_free(self); }
3502         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3503         LDKErrorAction* operator &() { return &self; }
3504         LDKErrorAction* operator ->() { return &self; }
3505         const LDKErrorAction* operator &() const { return &self; }
3506         const LDKErrorAction* operator ->() const { return &self; }
3507 };
3508 class LightningError {
3509 private:
3510         LDKLightningError self;
3511 public:
3512         LightningError(const LightningError&) = delete;
3513         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3514         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3515         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3516         ~LightningError() { LightningError_free(self); }
3517         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3518         LDKLightningError* operator &() { return &self; }
3519         LDKLightningError* operator ->() { return &self; }
3520         const LDKLightningError* operator &() const { return &self; }
3521         const LDKLightningError* operator ->() const { return &self; }
3522 };
3523 class CommitmentUpdate {
3524 private:
3525         LDKCommitmentUpdate self;
3526 public:
3527         CommitmentUpdate(const CommitmentUpdate&) = delete;
3528         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3529         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3530         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3531         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3532         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3533         LDKCommitmentUpdate* operator &() { return &self; }
3534         LDKCommitmentUpdate* operator ->() { return &self; }
3535         const LDKCommitmentUpdate* operator &() const { return &self; }
3536         const LDKCommitmentUpdate* operator ->() const { return &self; }
3537 };
3538 class ChannelMessageHandler {
3539 private:
3540         LDKChannelMessageHandler self;
3541 public:
3542         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3543         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3544         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3545         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3546         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3547         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3548         LDKChannelMessageHandler* operator &() { return &self; }
3549         LDKChannelMessageHandler* operator ->() { return &self; }
3550         const LDKChannelMessageHandler* operator &() const { return &self; }
3551         const LDKChannelMessageHandler* operator ->() const { return &self; }
3552         /**
3553          *  Handle an incoming open_channel message from the given peer.
3554          */
3555         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
3556         /**
3557          *  Handle an incoming accept_channel message from the given peer.
3558          */
3559         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
3560         /**
3561          *  Handle an incoming funding_created message from the given peer.
3562          */
3563         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3564         /**
3565          *  Handle an incoming funding_signed message from the given peer.
3566          */
3567         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3568         /**
3569          *  Handle an incoming channel_ready message from the given peer.
3570          */
3571         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
3572         /**
3573          *  Handle an incoming shutdown message from the given peer.
3574          */
3575         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3576         /**
3577          *  Handle an incoming closing_signed message from the given peer.
3578          */
3579         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3580         /**
3581          *  Handle an incoming update_add_htlc message from the given peer.
3582          */
3583         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3584         /**
3585          *  Handle an incoming update_fulfill_htlc message from the given peer.
3586          */
3587         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3588         /**
3589          *  Handle an incoming update_fail_htlc message from the given peer.
3590          */
3591         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3592         /**
3593          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3594          */
3595         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3596         /**
3597          *  Handle an incoming commitment_signed message from the given peer.
3598          */
3599         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3600         /**
3601          *  Handle an incoming revoke_and_ack message from the given peer.
3602          */
3603         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3604         /**
3605          *  Handle an incoming update_fee message from the given peer.
3606          */
3607         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3608         /**
3609          *  Handle an incoming announcement_signatures message from the given peer.
3610          */
3611         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3612         /**
3613          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3614          *  is believed to be possible in the future (eg they're sending us messages we don't
3615          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3616          *  and any outstanding channels should be failed.
3617          */
3618         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3619         /**
3620          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3621          */
3622         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3623         /**
3624          *  Handle an incoming channel_reestablish message from the given peer.
3625          */
3626         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3627         /**
3628          *  Handle an incoming channel update from the given peer.
3629          */
3630         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3631         /**
3632          *  Handle an incoming error message from the given peer.
3633          */
3634         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3635 };
3636 class RoutingMessageHandler {
3637 private:
3638         LDKRoutingMessageHandler self;
3639 public:
3640         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3641         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3642         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3643         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3644         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3645         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3646         LDKRoutingMessageHandler* operator &() { return &self; }
3647         LDKRoutingMessageHandler* operator ->() { return &self; }
3648         const LDKRoutingMessageHandler* operator &() const { return &self; }
3649         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3650         /**
3651          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3652          *  false or returning an Err otherwise.
3653          */
3654         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3655         /**
3656          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3657          *  or returning an Err otherwise.
3658          */
3659         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3660         /**
3661          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3662          *  false or returning an Err otherwise.
3663          */
3664         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3665         /**
3666          *  Gets a subset of the channel announcements and updates required to dump our routing table
3667          *  to a remote node, starting at the short_channel_id indicated by starting_point and
3668          *  including the batch_amount entries immediately higher in numerical value than starting_point.
3669          */
3670         inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount);
3671         /**
3672          *  Gets a subset of the node announcements required to dump our routing table to a remote node,
3673          *  starting at the node *after* the provided publickey and including batch_amount entries
3674          *  immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
3675          *  If None is provided for starting_point, we start at the first node.
3676          * 
3677          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3678          */
3679         inline LDK::CVec_NodeAnnouncementZ get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount);
3680         /**
3681          *  Called when a connection is established with a peer. This can be used to
3682          *  perform routing table synchronization using a strategy defined by the
3683          *  implementor.
3684          */
3685         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
3686         /**
3687          *  Handles the reply of a query we initiated to learn about channels
3688          *  for a given range of blocks. We can expect to receive one or more
3689          *  replies to a single query.
3690          */
3691         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
3692         /**
3693          *  Handles the reply of a query we initiated asking for routing gossip
3694          *  messages for a list of channels. We should receive this message when
3695          *  a node has completed its best effort to send us the pertaining routing
3696          *  gossip messages.
3697          */
3698         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
3699         /**
3700          *  Handles when a peer asks us to send a list of short_channel_ids
3701          *  for the requested range of blocks.
3702          */
3703         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
3704         /**
3705          *  Handles when a peer asks us to send routing gossip messages for a
3706          *  list of short_channel_ids.
3707          */
3708         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
3709 };
3710 class GraphSyncError {
3711 private:
3712         LDKGraphSyncError self;
3713 public:
3714         GraphSyncError(const GraphSyncError&) = delete;
3715         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
3716         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
3717         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
3718         ~GraphSyncError() { GraphSyncError_free(self); }
3719         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
3720         LDKGraphSyncError* operator &() { return &self; }
3721         LDKGraphSyncError* operator ->() { return &self; }
3722         const LDKGraphSyncError* operator &() const { return &self; }
3723         const LDKGraphSyncError* operator ->() const { return &self; }
3724 };
3725 class DefaultRouter {
3726 private:
3727         LDKDefaultRouter self;
3728 public:
3729         DefaultRouter(const DefaultRouter&) = delete;
3730         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
3731         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
3732         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
3733         ~DefaultRouter() { DefaultRouter_free(self); }
3734         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
3735         LDKDefaultRouter* operator &() { return &self; }
3736         LDKDefaultRouter* operator ->() { return &self; }
3737         const LDKDefaultRouter* operator &() const { return &self; }
3738         const LDKDefaultRouter* operator ->() const { return &self; }
3739 };
3740 class Level {
3741 private:
3742         LDKLevel self;
3743 public:
3744         Level(const Level&) = delete;
3745         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
3746         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
3747         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
3748         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
3749         LDKLevel* operator &() { return &self; }
3750         LDKLevel* operator ->() { return &self; }
3751         const LDKLevel* operator &() const { return &self; }
3752         const LDKLevel* operator ->() const { return &self; }
3753 };
3754 class Record {
3755 private:
3756         LDKRecord self;
3757 public:
3758         Record(const Record&) = delete;
3759         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
3760         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
3761         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
3762         ~Record() { Record_free(self); }
3763         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
3764         LDKRecord* operator &() { return &self; }
3765         LDKRecord* operator ->() { return &self; }
3766         const LDKRecord* operator &() const { return &self; }
3767         const LDKRecord* operator ->() const { return &self; }
3768 };
3769 class Logger {
3770 private:
3771         LDKLogger self;
3772 public:
3773         Logger(const Logger&) = delete;
3774         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
3775         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
3776         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
3777         ~Logger() { Logger_free(self); }
3778         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
3779         LDKLogger* operator &() { return &self; }
3780         LDKLogger* operator ->() { return &self; }
3781         const LDKLogger* operator &() const { return &self; }
3782         const LDKLogger* operator ->() const { return &self; }
3783         /**
3784          *  Logs the `Record`
3785          */
3786         inline void log(const struct LDKRecord *NONNULL_PTR record);
3787 };
3788 class MonitorUpdateId {
3789 private:
3790         LDKMonitorUpdateId self;
3791 public:
3792         MonitorUpdateId(const MonitorUpdateId&) = delete;
3793         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
3794         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
3795         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
3796         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
3797         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
3798         LDKMonitorUpdateId* operator &() { return &self; }
3799         LDKMonitorUpdateId* operator ->() { return &self; }
3800         const LDKMonitorUpdateId* operator &() const { return &self; }
3801         const LDKMonitorUpdateId* operator ->() const { return &self; }
3802 };
3803 class Persist {
3804 private:
3805         LDKPersist self;
3806 public:
3807         Persist(const Persist&) = delete;
3808         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
3809         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
3810         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
3811         ~Persist() { Persist_free(self); }
3812         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
3813         LDKPersist* operator &() { return &self; }
3814         LDKPersist* operator ->() { return &self; }
3815         const LDKPersist* operator &() const { return &self; }
3816         const LDKPersist* operator ->() const { return &self; }
3817         /**
3818          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
3819          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
3820          * 
3821          *  The data can be stored any way you want, but the identifier provided by LDK is the
3822          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
3823          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
3824          * 
3825          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3826          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3827          * 
3828          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
3829          *  and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3830          * 
3831          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3832          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3833          */
3834         inline LDK::CResult_NoneChannelMonitorUpdateErrZ persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
3835         /**
3836          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
3837          *  update.
3838          * 
3839          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
3840          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
3841          *  details.
3842          * 
3843          *  During blockchain synchronization operations, this may be called with no
3844          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
3845          *  Note that after the full [`ChannelMonitor`] is persisted any previous
3846          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
3847          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
3848          * 
3849          *  If an implementer chooses to persist the updates only, they need to make
3850          *  sure that all the updates are applied to the `ChannelMonitors` *before*
3851          *  the set of channel monitors is given to the `ChannelManager`
3852          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
3853          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
3854          *  persisted, then there is no need to persist individual updates.
3855          * 
3856          *  Note that there could be a performance tradeoff between persisting complete
3857          *  channel monitors on every update vs. persisting only updates and applying
3858          *  them in batches. The size of each monitor grows `O(number of state updates)`
3859          *  whereas updates are small and `O(1)`.
3860          * 
3861          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3862          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3863          * 
3864          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
3865          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
3866          *  [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3867          * 
3868          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3869          * 
3870          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
3871          */
3872         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);
3873 };
3874 class LockedChannelMonitor {
3875 private:
3876         LDKLockedChannelMonitor self;
3877 public:
3878         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
3879         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
3880         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
3881         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
3882         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
3883         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
3884         LDKLockedChannelMonitor* operator &() { return &self; }
3885         LDKLockedChannelMonitor* operator ->() { return &self; }
3886         const LDKLockedChannelMonitor* operator &() const { return &self; }
3887         const LDKLockedChannelMonitor* operator ->() const { return &self; }
3888 };
3889 class ChainMonitor {
3890 private:
3891         LDKChainMonitor self;
3892 public:
3893         ChainMonitor(const ChainMonitor&) = delete;
3894         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
3895         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
3896         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
3897         ~ChainMonitor() { ChainMonitor_free(self); }
3898         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
3899         LDKChainMonitor* operator &() { return &self; }
3900         LDKChainMonitor* operator ->() { return &self; }
3901         const LDKChainMonitor* operator &() const { return &self; }
3902         const LDKChainMonitor* operator ->() const { return &self; }
3903 };
3904 class CVec_SpendableOutputDescriptorZ {
3905 private:
3906         LDKCVec_SpendableOutputDescriptorZ self;
3907 public:
3908         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
3909         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
3910         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
3911         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
3912         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
3913         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
3914         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
3915         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
3916         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
3917         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
3918 };
3919 class CResult_LockedChannelMonitorNoneZ {
3920 private:
3921         LDKCResult_LockedChannelMonitorNoneZ self;
3922 public:
3923         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
3924         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
3925         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
3926         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
3927         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
3928         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
3929         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
3930         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
3931         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
3932         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
3933 };
3934 class CResult_PhantomRouteHintsDecodeErrorZ {
3935 private:
3936         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
3937 public:
3938         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
3939         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
3940         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
3941         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
3942         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
3943         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
3944         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
3945         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
3946         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
3947         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
3948 };
3949 class COption_C2Tuple_u64u64ZZ {
3950 private:
3951         LDKCOption_C2Tuple_u64u64ZZ self;
3952 public:
3953         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
3954         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
3955         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
3956         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
3957         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
3958         COption_C2Tuple_u64u64ZZ& operator=(COption_C2Tuple_u64u64ZZ&& o) { COption_C2Tuple_u64u64ZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); return *this; }
3959         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
3960         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
3961         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
3962         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
3963 };
3964 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
3965 private:
3966         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
3967 public:
3968         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
3969         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3970         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3971         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
3972         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
3973         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; }
3974         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
3975         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
3976         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
3977         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
3978 };
3979 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3980 private:
3981         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
3982 public:
3983         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
3984         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
3985         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)); }
3986         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
3987         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
3988         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; }
3989         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
3990         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
3991         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
3992         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
3993 };
3994 class CResult_HTLCUpdateDecodeErrorZ {
3995 private:
3996         LDKCResult_HTLCUpdateDecodeErrorZ self;
3997 public:
3998         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
3999         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
4000         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
4001         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
4002         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
4003         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
4004         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
4005         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
4006         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
4007         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
4008 };
4009 class C2Tuple_SignatureCVec_SignatureZZ {
4010 private:
4011         LDKC2Tuple_SignatureCVec_SignatureZZ self;
4012 public:
4013         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
4014         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
4015         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
4016         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
4017         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
4018         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; }
4019         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
4020         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
4021         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
4022         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
4023 };
4024 class CVec_C2Tuple_u32TxOutZZ {
4025 private:
4026         LDKCVec_C2Tuple_u32TxOutZZ self;
4027 public:
4028         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4029         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4030         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4031         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4032         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4033         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; }
4034         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4035         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4036         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4037         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4038 };
4039 class CResult_ChannelInfoDecodeErrorZ {
4040 private:
4041         LDKCResult_ChannelInfoDecodeErrorZ self;
4042 public:
4043         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4044         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4045         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4046         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4047         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4048         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4049         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4050         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4051         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4052         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4053 };
4054 class CResult_FundingCreatedDecodeErrorZ {
4055 private:
4056         LDKCResult_FundingCreatedDecodeErrorZ self;
4057 public:
4058         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4059         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4060         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4061         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4062         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4063         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4064         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4065         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4066         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4067         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4068 };
4069 class CResult_ChannelAnnouncementDecodeErrorZ {
4070 private:
4071         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
4072 public:
4073         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
4074         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
4075         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
4076         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
4077         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
4078         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
4079         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
4080         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
4081         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
4082         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4083 };
4084 class CVec_OutPointZ {
4085 private:
4086         LDKCVec_OutPointZ self;
4087 public:
4088         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
4089         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
4090         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
4091         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
4092         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
4093         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
4094         LDKCVec_OutPointZ* operator &() { return &self; }
4095         LDKCVec_OutPointZ* operator ->() { return &self; }
4096         const LDKCVec_OutPointZ* operator &() const { return &self; }
4097         const LDKCVec_OutPointZ* operator ->() const { return &self; }
4098 };
4099 class CResult_PositiveTimestampCreationErrorZ {
4100 private:
4101         LDKCResult_PositiveTimestampCreationErrorZ self;
4102 public:
4103         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
4104         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
4105         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
4106         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
4107         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
4108         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
4109         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
4110         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
4111         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
4112         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
4113 };
4114 class CResult_CVec_u8ZPeerHandleErrorZ {
4115 private:
4116         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4117 public:
4118         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4119         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4120         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4121         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4122         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4123         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; }
4124         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4125         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4126         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4127         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4128 };
4129 class CResult_InvoiceFeaturesDecodeErrorZ {
4130 private:
4131         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
4132 public:
4133         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
4134         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
4135         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
4136         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
4137         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
4138         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
4139         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
4140         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
4141         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
4142         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
4143 };
4144 class COption_NetworkUpdateZ {
4145 private:
4146         LDKCOption_NetworkUpdateZ self;
4147 public:
4148         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4149         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4150         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4151         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4152         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4153         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4154         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4155         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4156         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4157         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4158 };
4159 class COption_u64Z {
4160 private:
4161         LDKCOption_u64Z self;
4162 public:
4163         COption_u64Z(const COption_u64Z&) = delete;
4164         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4165         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4166         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4167         ~COption_u64Z() { COption_u64Z_free(self); }
4168         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4169         LDKCOption_u64Z* operator &() { return &self; }
4170         LDKCOption_u64Z* operator ->() { return &self; }
4171         const LDKCOption_u64Z* operator &() const { return &self; }
4172         const LDKCOption_u64Z* operator ->() const { return &self; }
4173 };
4174 class CResult_TxOutAccessErrorZ {
4175 private:
4176         LDKCResult_TxOutAccessErrorZ self;
4177 public:
4178         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
4179         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
4180         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
4181         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
4182         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
4183         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
4184         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
4185         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
4186         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
4187         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
4188 };
4189 class CResult_TrustedClosingTransactionNoneZ {
4190 private:
4191         LDKCResult_TrustedClosingTransactionNoneZ self;
4192 public:
4193         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
4194         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
4195         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
4196         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
4197         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
4198         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
4199         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
4200         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
4201         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
4202         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
4203 };
4204 class CResult_PaymentPreimageAPIErrorZ {
4205 private:
4206         LDKCResult_PaymentPreimageAPIErrorZ self;
4207 public:
4208         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4209         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4210         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4211         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4212         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4213         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4214         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4215         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4216         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4217         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4218 };
4219 class CResult_ChannelMonitorUpdateDecodeErrorZ {
4220 private:
4221         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
4222 public:
4223         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
4224         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
4225         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
4226         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
4227         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
4228         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
4229         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
4230         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
4231         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
4232         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
4233 };
4234 class CResult_RouteHintDecodeErrorZ {
4235 private:
4236         LDKCResult_RouteHintDecodeErrorZ self;
4237 public:
4238         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4239         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4240         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4241         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4242         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4243         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4244         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4245         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4246         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4247         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4248 };
4249 class C2Tuple_PublicKeyTypeZ {
4250 private:
4251         LDKC2Tuple_PublicKeyTypeZ self;
4252 public:
4253         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
4254         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
4255         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
4256         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
4257         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
4258         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
4259         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
4260         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
4261         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
4262         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
4263 };
4264 class CResult_NetAddressDecodeErrorZ {
4265 private:
4266         LDKCResult_NetAddressDecodeErrorZ self;
4267 public:
4268         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
4269         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
4270         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
4271         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
4272         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
4273         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
4274         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
4275         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
4276         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
4277         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
4278 };
4279 class CResult_ChannelReestablishDecodeErrorZ {
4280 private:
4281         LDKCResult_ChannelReestablishDecodeErrorZ self;
4282 public:
4283         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
4284         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
4285         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
4286         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
4287         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
4288         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
4289         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
4290         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
4291         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
4292         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
4293 };
4294 class CResult_CommitmentSignedDecodeErrorZ {
4295 private:
4296         LDKCResult_CommitmentSignedDecodeErrorZ self;
4297 public:
4298         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4299         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4300         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4301         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4302         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4303         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4304         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4305         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4306         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4307         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4308 };
4309 class CVec_UpdateAddHTLCZ {
4310 private:
4311         LDKCVec_UpdateAddHTLCZ self;
4312 public:
4313         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4314         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4315         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4316         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4317         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4318         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4319         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4320         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4321         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4322         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4323 };
4324 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
4325 private:
4326         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
4327 public:
4328         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
4329         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4330         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4331         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
4332         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
4333         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
4334         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4335         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4336         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4337         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4338 };
4339 class COption_u32Z {
4340 private:
4341         LDKCOption_u32Z self;
4342 public:
4343         COption_u32Z(const COption_u32Z&) = delete;
4344         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4345         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4346         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4347         ~COption_u32Z() { COption_u32Z_free(self); }
4348         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4349         LDKCOption_u32Z* operator &() { return &self; }
4350         LDKCOption_u32Z* operator ->() { return &self; }
4351         const LDKCOption_u32Z* operator &() const { return &self; }
4352         const LDKCOption_u32Z* operator ->() const { return &self; }
4353 };
4354 class CResult_InitFeaturesDecodeErrorZ {
4355 private:
4356         LDKCResult_InitFeaturesDecodeErrorZ self;
4357 public:
4358         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
4359         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
4360         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
4361         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
4362         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
4363         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
4364         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
4365         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
4366         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
4367         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
4368 };
4369 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4370 private:
4371         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4372 public:
4373         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4374         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4375         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4376         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4377         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4378         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4379         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4380         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4381         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4382         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4383 };
4384 class CResult_PaymentIdPaymentSendFailureZ {
4385 private:
4386         LDKCResult_PaymentIdPaymentSendFailureZ self;
4387 public:
4388         CResult_PaymentIdPaymentSendFailureZ(const CResult_PaymentIdPaymentSendFailureZ&) = delete;
4389         CResult_PaymentIdPaymentSendFailureZ(CResult_PaymentIdPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); }
4390         CResult_PaymentIdPaymentSendFailureZ(LDKCResult_PaymentIdPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); }
4391         operator LDKCResult_PaymentIdPaymentSendFailureZ() && { LDKCResult_PaymentIdPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); return res; }
4392         ~CResult_PaymentIdPaymentSendFailureZ() { CResult_PaymentIdPaymentSendFailureZ_free(self); }
4393         CResult_PaymentIdPaymentSendFailureZ& operator=(CResult_PaymentIdPaymentSendFailureZ&& o) { CResult_PaymentIdPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); return *this; }
4394         LDKCResult_PaymentIdPaymentSendFailureZ* operator &() { return &self; }
4395         LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() { return &self; }
4396         const LDKCResult_PaymentIdPaymentSendFailureZ* operator &() const { return &self; }
4397         const LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() const { return &self; }
4398 };
4399 class CResult_ReplyChannelRangeDecodeErrorZ {
4400 private:
4401         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
4402 public:
4403         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
4404         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
4405         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
4406         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
4407         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
4408         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
4409         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
4410         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
4411         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
4412         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4413 };
4414 class CResult_CommitmentTransactionDecodeErrorZ {
4415 private:
4416         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4417 public:
4418         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4419         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4420         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4421         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4422         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4423         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4424         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4425         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4426         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4427         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4428 };
4429 class COption_C2Tuple_usizeTransactionZZ {
4430 private:
4431         LDKCOption_C2Tuple_usizeTransactionZZ self;
4432 public:
4433         COption_C2Tuple_usizeTransactionZZ(const COption_C2Tuple_usizeTransactionZZ&) = delete;
4434         COption_C2Tuple_usizeTransactionZZ(COption_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); }
4435         COption_C2Tuple_usizeTransactionZZ(LDKCOption_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); }
4436         operator LDKCOption_C2Tuple_usizeTransactionZZ() && { LDKCOption_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); return res; }
4437         ~COption_C2Tuple_usizeTransactionZZ() { COption_C2Tuple_usizeTransactionZZ_free(self); }
4438         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; }
4439         LDKCOption_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
4440         LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
4441         const LDKCOption_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
4442         const LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
4443 };
4444 class CResult_TransactionNoneZ {
4445 private:
4446         LDKCResult_TransactionNoneZ self;
4447 public:
4448         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4449         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4450         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4451         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4452         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4453         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4454         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4455         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4456         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4457         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4458 };
4459 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4460 private:
4461         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4462 public:
4463         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4464         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4465         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4466         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4467         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4468         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4469         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4470         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4471         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4472         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4473 };
4474 class CResult_PingDecodeErrorZ {
4475 private:
4476         LDKCResult_PingDecodeErrorZ self;
4477 public:
4478         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
4479         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
4480         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
4481         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
4482         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
4483         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
4484         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
4485         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
4486         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
4487         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
4488 };
4489 class CResult_GossipTimestampFilterDecodeErrorZ {
4490 private:
4491         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4492 public:
4493         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4494         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4495         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4496         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4497         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4498         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4499         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4500         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4501         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4502         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4503 };
4504 class CResult_InvoiceSignOrCreationErrorZ {
4505 private:
4506         LDKCResult_InvoiceSignOrCreationErrorZ self;
4507 public:
4508         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
4509         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
4510         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
4511         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
4512         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
4513         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
4514         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
4515         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
4516         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
4517         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
4518 };
4519 class COption_FilterZ {
4520 private:
4521         LDKCOption_FilterZ self;
4522 public:
4523         COption_FilterZ(const COption_FilterZ&) = delete;
4524         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4525         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4526         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4527         ~COption_FilterZ() { COption_FilterZ_free(self); }
4528         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4529         LDKCOption_FilterZ* operator &() { return &self; }
4530         LDKCOption_FilterZ* operator ->() { return &self; }
4531         const LDKCOption_FilterZ* operator &() const { return &self; }
4532         const LDKCOption_FilterZ* operator ->() const { return &self; }
4533 };
4534 class CVec_TransactionOutputsZ {
4535 private:
4536         LDKCVec_TransactionOutputsZ self;
4537 public:
4538         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
4539         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
4540         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
4541         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
4542         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
4543         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
4544         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
4545         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
4546         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
4547         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
4548 };
4549 class CResult_ErrorMessageDecodeErrorZ {
4550 private:
4551         LDKCResult_ErrorMessageDecodeErrorZ self;
4552 public:
4553         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4554         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4555         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4556         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4557         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4558         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4559         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4560         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4561         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4562         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4563 };
4564 class CResult_OpenChannelDecodeErrorZ {
4565 private:
4566         LDKCResult_OpenChannelDecodeErrorZ self;
4567 public:
4568         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4569         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4570         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4571         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4572         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4573         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4574         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4575         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4576         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4577         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4578 };
4579 class CVec_CVec_u8ZZ {
4580 private:
4581         LDKCVec_CVec_u8ZZ self;
4582 public:
4583         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
4584         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
4585         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
4586         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
4587         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
4588         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; }
4589         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
4590         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
4591         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
4592         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
4593 };
4594 class CResult_SecretKeyErrorZ {
4595 private:
4596         LDKCResult_SecretKeyErrorZ self;
4597 public:
4598         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
4599         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
4600         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
4601         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
4602         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
4603         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
4604         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
4605         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
4606         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
4607         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
4608 };
4609 class CResult_ShutdownScriptDecodeErrorZ {
4610 private:
4611         LDKCResult_ShutdownScriptDecodeErrorZ self;
4612 public:
4613         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
4614         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
4615         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
4616         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
4617         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
4618         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
4619         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
4620         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
4621         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
4622         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
4623 };
4624 class CResult_ProbabilisticScorerDecodeErrorZ {
4625 private:
4626         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
4627 public:
4628         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
4629         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
4630         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
4631         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
4632         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
4633         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
4634         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
4635         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
4636         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
4637         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
4638 };
4639 class CResult_QueryChannelRangeDecodeErrorZ {
4640 private:
4641         LDKCResult_QueryChannelRangeDecodeErrorZ self;
4642 public:
4643         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
4644         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
4645         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
4646         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
4647         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
4648         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
4649         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
4650         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
4651         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
4652         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4653 };
4654 class CResult_TxCreationKeysDecodeErrorZ {
4655 private:
4656         LDKCResult_TxCreationKeysDecodeErrorZ self;
4657 public:
4658         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
4659         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
4660         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
4661         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
4662         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
4663         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
4664         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
4665         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
4666         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
4667         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
4668 };
4669 class C2Tuple_usizeTransactionZ {
4670 private:
4671         LDKC2Tuple_usizeTransactionZ self;
4672 public:
4673         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
4674         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
4675         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
4676         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
4677         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
4678         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
4679         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
4680         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
4681         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
4682         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
4683 };
4684 class CResult_ChannelFeaturesDecodeErrorZ {
4685 private:
4686         LDKCResult_ChannelFeaturesDecodeErrorZ self;
4687 public:
4688         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
4689         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
4690         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
4691         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
4692         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
4693         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
4694         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
4695         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
4696         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
4697         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
4698 };
4699 class CVec_ChannelMonitorZ {
4700 private:
4701         LDKCVec_ChannelMonitorZ self;
4702 public:
4703         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
4704         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
4705         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
4706         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
4707         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
4708         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
4709         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
4710         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
4711         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
4712         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
4713 };
4714 class CVec_TransactionZ {
4715 private:
4716         LDKCVec_TransactionZ self;
4717 public:
4718         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
4719         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
4720         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
4721         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
4722         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
4723         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
4724         LDKCVec_TransactionZ* operator &() { return &self; }
4725         LDKCVec_TransactionZ* operator ->() { return &self; }
4726         const LDKCVec_TransactionZ* operator &() const { return &self; }
4727         const LDKCVec_TransactionZ* operator ->() const { return &self; }
4728 };
4729 class CResult_ChannelReadyDecodeErrorZ {
4730 private:
4731         LDKCResult_ChannelReadyDecodeErrorZ self;
4732 public:
4733         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
4734         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
4735         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
4736         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
4737         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
4738         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
4739         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
4740         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
4741         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
4742         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
4743 };
4744 class CResult_RouteHopDecodeErrorZ {
4745 private:
4746         LDKCResult_RouteHopDecodeErrorZ self;
4747 public:
4748         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
4749         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
4750         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
4751         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
4752         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
4753         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
4754         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
4755         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
4756         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
4757         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
4758 };
4759 class CResult_UpdateFeeDecodeErrorZ {
4760 private:
4761         LDKCResult_UpdateFeeDecodeErrorZ self;
4762 public:
4763         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
4764         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
4765         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
4766         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
4767         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
4768         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
4769         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
4770         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
4771         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
4772         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
4773 };
4774 class CResult_NodeAnnouncementDecodeErrorZ {
4775 private:
4776         LDKCResult_NodeAnnouncementDecodeErrorZ self;
4777 public:
4778         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
4779         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
4780         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
4781         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
4782         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
4783         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
4784         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4785         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4786         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4787         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4788 };
4789 class CVec_BalanceZ {
4790 private:
4791         LDKCVec_BalanceZ self;
4792 public:
4793         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
4794         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
4795         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
4796         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
4797         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
4798         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
4799         LDKCVec_BalanceZ* operator &() { return &self; }
4800         LDKCVec_BalanceZ* operator ->() { return &self; }
4801         const LDKCVec_BalanceZ* operator &() const { return &self; }
4802         const LDKCVec_BalanceZ* operator ->() const { return &self; }
4803 };
4804 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
4805 private:
4806         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
4807 public:
4808         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4809         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4810         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4811         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4812         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4813         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4814         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4815         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4816         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4817         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4818 };
4819 class CResult_boolLightningErrorZ {
4820 private:
4821         LDKCResult_boolLightningErrorZ self;
4822 public:
4823         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4824         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4825         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4826         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4827         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4828         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4829         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4830         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4831         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4832         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4833 };
4834 class CResult_TxCreationKeysErrorZ {
4835 private:
4836         LDKCResult_TxCreationKeysErrorZ self;
4837 public:
4838         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
4839         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
4840         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
4841         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
4842         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
4843         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
4844         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
4845         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
4846         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
4847         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
4848 };
4849 class CResult_NodeIdDecodeErrorZ {
4850 private:
4851         LDKCResult_NodeIdDecodeErrorZ self;
4852 public:
4853         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
4854         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
4855         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
4856         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
4857         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
4858         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
4859         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
4860         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
4861         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
4862         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
4863 };
4864 class C2Tuple_BlockHashChannelMonitorZ {
4865 private:
4866         LDKC2Tuple_BlockHashChannelMonitorZ self;
4867 public:
4868         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
4869         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
4870         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
4871         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
4872         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
4873         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
4874         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
4875         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
4876         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
4877         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
4878 };
4879 class CResult_ShutdownScriptInvalidShutdownScriptZ {
4880 private:
4881         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
4882 public:
4883         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
4884         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
4885         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
4886         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
4887         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
4888         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
4889         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
4890         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
4891         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
4892         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
4893 };
4894 class CResult_NodeAnnouncementInfoDecodeErrorZ {
4895 private:
4896         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
4897 public:
4898         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
4899         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
4900         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
4901         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
4902         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
4903         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
4904         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
4905         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
4906         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
4907         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
4908 };
4909 class CResult_COption_NetworkUpdateZDecodeErrorZ {
4910 private:
4911         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
4912 public:
4913         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
4914         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
4915         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
4916         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
4917         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
4918         CResult_COption_NetworkUpdateZDecodeErrorZ& operator=(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); return *this; }
4919         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
4920         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
4921         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
4922         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
4923 };
4924 class CResult_RecoverableSignatureNoneZ {
4925 private:
4926         LDKCResult_RecoverableSignatureNoneZ self;
4927 public:
4928         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
4929         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
4930         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
4931         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
4932         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
4933         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
4934         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
4935         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
4936         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
4937         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
4938 };
4939 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
4940 private:
4941         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
4942 public:
4943         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
4944         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4945         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4946         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
4947         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
4948         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; }
4949         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
4950         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
4951         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
4952         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
4953 };
4954 class CVec_UpdateFailMalformedHTLCZ {
4955 private:
4956         LDKCVec_UpdateFailMalformedHTLCZ self;
4957 public:
4958         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
4959         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
4960         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
4961         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
4962         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
4963         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
4964         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
4965         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
4966         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
4967         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
4968 };
4969 class CResult_FundingSignedDecodeErrorZ {
4970 private:
4971         LDKCResult_FundingSignedDecodeErrorZ self;
4972 public:
4973         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
4974         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
4975         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
4976         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
4977         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
4978         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
4979         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
4980         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
4981         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
4982         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
4983 };
4984 class CResult_NetworkGraphDecodeErrorZ {
4985 private:
4986         LDKCResult_NetworkGraphDecodeErrorZ self;
4987 public:
4988         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
4989         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
4990         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
4991         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
4992         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
4993         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
4994         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
4995         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
4996         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
4997         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
4998 };
4999 class CVec_RouteHopZ {
5000 private:
5001         LDKCVec_RouteHopZ self;
5002 public:
5003         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5004         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5005         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5006         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5007         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5008         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5009         LDKCVec_RouteHopZ* operator &() { return &self; }
5010         LDKCVec_RouteHopZ* operator ->() { return &self; }
5011         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5012         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5013 };
5014 class CResult_NonePaymentSendFailureZ {
5015 private:
5016         LDKCResult_NonePaymentSendFailureZ self;
5017 public:
5018         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
5019         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
5020         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
5021         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
5022         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
5023         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
5024         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
5025         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
5026         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
5027         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
5028 };
5029 class CResult_NodeInfoDecodeErrorZ {
5030 private:
5031         LDKCResult_NodeInfoDecodeErrorZ self;
5032 public:
5033         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
5034         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
5035         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
5036         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
5037         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
5038         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
5039         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
5040         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
5041         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
5042         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
5043 };
5044 class CResult_RouteLightningErrorZ {
5045 private:
5046         LDKCResult_RouteLightningErrorZ self;
5047 public:
5048         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
5049         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
5050         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
5051         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
5052         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
5053         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
5054         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
5055         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
5056         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
5057         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
5058 };
5059 class CResult_ChannelPublicKeysDecodeErrorZ {
5060 private:
5061         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
5062 public:
5063         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
5064         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
5065         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
5066         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
5067         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
5068         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
5069         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
5070         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
5071         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
5072         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
5073 };
5074 class CVec_NodeIdZ {
5075 private:
5076         LDKCVec_NodeIdZ self;
5077 public:
5078         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
5079         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
5080         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
5081         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
5082         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
5083         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
5084         LDKCVec_NodeIdZ* operator &() { return &self; }
5085         LDKCVec_NodeIdZ* operator ->() { return &self; }
5086         const LDKCVec_NodeIdZ* operator &() const { return &self; }
5087         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
5088 };
5089 class CVec_u8Z {
5090 private:
5091         LDKCVec_u8Z self;
5092 public:
5093         CVec_u8Z(const CVec_u8Z&) = delete;
5094         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
5095         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
5096         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
5097         ~CVec_u8Z() { CVec_u8Z_free(self); }
5098         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
5099         LDKCVec_u8Z* operator &() { return &self; }
5100         LDKCVec_u8Z* operator ->() { return &self; }
5101         const LDKCVec_u8Z* operator &() const { return &self; }
5102         const LDKCVec_u8Z* operator ->() const { return &self; }
5103 };
5104 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5105 private:
5106         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5107 public:
5108         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5109         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5110         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5111         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5112         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5113         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; }
5114         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5115         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5116         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5117         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5118 };
5119 class CVec_ThirtyTwoBytesZ {
5120 private:
5121         LDKCVec_ThirtyTwoBytesZ self;
5122 public:
5123         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5124         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5125         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5126         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5127         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5128         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5129         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5130         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5131         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5132         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5133 };
5134 class CResult_ClosingSignedDecodeErrorZ {
5135 private:
5136         LDKCResult_ClosingSignedDecodeErrorZ self;
5137 public:
5138         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5139         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5140         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5141         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5142         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5143         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5144         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5145         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5146         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5147         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5148 };
5149 class CResult_HolderCommitmentTransactionDecodeErrorZ {
5150 private:
5151         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
5152 public:
5153         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
5154         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
5155         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
5156         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
5157         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
5158         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
5159         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5160         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5161         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5162         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5163 };
5164 class CVec_CResult_NoneAPIErrorZZ {
5165 private:
5166         LDKCVec_CResult_NoneAPIErrorZZ self;
5167 public:
5168         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5169         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5170         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5171         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5172         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5173         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; }
5174         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5175         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5176         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5177         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5178 };
5179 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5180 private:
5181         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5182 public:
5183         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5184         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5185         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5186         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5187         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5188         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5189         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5190         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5191         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5192         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5193 };
5194 class CResult_ChannelCounterpartyDecodeErrorZ {
5195 private:
5196         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
5197 public:
5198         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
5199         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
5200         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
5201         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
5202         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
5203         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
5204         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
5205         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
5206         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
5207         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
5208 };
5209 class CResult_WarningMessageDecodeErrorZ {
5210 private:
5211         LDKCResult_WarningMessageDecodeErrorZ self;
5212 public:
5213         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
5214         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
5215         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
5216         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
5217         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
5218         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
5219         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
5220         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
5221         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
5222         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
5223 };
5224 class CResult_SignatureNoneZ {
5225 private:
5226         LDKCResult_SignatureNoneZ self;
5227 public:
5228         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
5229         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
5230         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
5231         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
5232         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
5233         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
5234         LDKCResult_SignatureNoneZ* operator &() { return &self; }
5235         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
5236         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
5237         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
5238 };
5239 class CVec_RouteHintHopZ {
5240 private:
5241         LDKCVec_RouteHintHopZ self;
5242 public:
5243         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5244         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5245         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5246         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5247         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5248         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5249         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5250         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5251         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5252         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5253 };
5254 class CResult_SecretKeyNoneZ {
5255 private:
5256         LDKCResult_SecretKeyNoneZ self;
5257 public:
5258         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
5259         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
5260         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
5261         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
5262         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
5263         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
5264         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
5265         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
5266         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
5267         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
5268 };
5269 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5270 private:
5271         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5272 public:
5273         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5274         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5275         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5276         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5277         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5278         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ& operator=(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return *this; }
5279         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5280         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5281         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5282         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5283 };
5284 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5285 private:
5286         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
5287 public:
5288         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
5289         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5290         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5291         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
5292         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
5293         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; }
5294         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
5295         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
5296         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
5297         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
5298 };
5299 class CResult_PaymentParametersDecodeErrorZ {
5300 private:
5301         LDKCResult_PaymentParametersDecodeErrorZ self;
5302 public:
5303         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5304         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5305         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5306         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5307         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5308         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5309         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5310         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5311         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5312         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5313 };
5314 class CResult_PaymentPurposeDecodeErrorZ {
5315 private:
5316         LDKCResult_PaymentPurposeDecodeErrorZ self;
5317 public:
5318         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
5319         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
5320         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
5321         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
5322         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
5323         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
5324         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
5325         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
5326         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
5327         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
5328 };
5329 class CResult_InitDecodeErrorZ {
5330 private:
5331         LDKCResult_InitDecodeErrorZ self;
5332 public:
5333         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
5334         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
5335         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
5336         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
5337         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
5338         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
5339         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
5340         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
5341         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
5342         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
5343 };
5344 class CResult_OutPointDecodeErrorZ {
5345 private:
5346         LDKCResult_OutPointDecodeErrorZ self;
5347 public:
5348         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
5349         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
5350         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
5351         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
5352         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
5353         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
5354         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
5355         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
5356         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
5357         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
5358 };
5359 class CVec_ChannelDetailsZ {
5360 private:
5361         LDKCVec_ChannelDetailsZ self;
5362 public:
5363         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
5364         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
5365         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
5366         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
5367         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
5368         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
5369         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
5370         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
5371         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
5372         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
5373 };
5374 class CResult_SignDecodeErrorZ {
5375 private:
5376         LDKCResult_SignDecodeErrorZ self;
5377 public:
5378         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5379         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5380         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5381         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5382         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5383         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5384         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5385         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5386         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5387         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5388 };
5389 class C2Tuple_OutPointCVec_MonitorEventZZ {
5390 private:
5391         LDKC2Tuple_OutPointCVec_MonitorEventZZ self;
5392 public:
5393         C2Tuple_OutPointCVec_MonitorEventZZ(const C2Tuple_OutPointCVec_MonitorEventZZ&) = delete;
5394         C2Tuple_OutPointCVec_MonitorEventZZ(C2Tuple_OutPointCVec_MonitorEventZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorEventZZ)); }
5395         C2Tuple_OutPointCVec_MonitorEventZZ(LDKC2Tuple_OutPointCVec_MonitorEventZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorEventZZ)); }
5396         operator LDKC2Tuple_OutPointCVec_MonitorEventZZ() && { LDKC2Tuple_OutPointCVec_MonitorEventZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorEventZZ)); return res; }
5397         ~C2Tuple_OutPointCVec_MonitorEventZZ() { C2Tuple_OutPointCVec_MonitorEventZZ_free(self); }
5398         C2Tuple_OutPointCVec_MonitorEventZZ& operator=(C2Tuple_OutPointCVec_MonitorEventZZ&& o) { C2Tuple_OutPointCVec_MonitorEventZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorEventZZ)); return *this; }
5399         LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator &() { return &self; }
5400         LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator ->() { return &self; }
5401         const LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator &() const { return &self; }
5402         const LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator ->() const { return &self; }
5403 };
5404 class CVec_MessageSendEventZ {
5405 private:
5406         LDKCVec_MessageSendEventZ self;
5407 public:
5408         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
5409         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
5410         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
5411         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
5412         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
5413         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
5414         LDKCVec_MessageSendEventZ* operator &() { return &self; }
5415         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
5416         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
5417         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
5418 };
5419 class COption_NetAddressZ {
5420 private:
5421         LDKCOption_NetAddressZ self;
5422 public:
5423         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
5424         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
5425         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
5426         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
5427         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
5428         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
5429         LDKCOption_NetAddressZ* operator &() { return &self; }
5430         LDKCOption_NetAddressZ* operator ->() { return &self; }
5431         const LDKCOption_NetAddressZ* operator &() const { return &self; }
5432         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
5433 };
5434 class C2Tuple_OutPointScriptZ {
5435 private:
5436         LDKC2Tuple_OutPointScriptZ self;
5437 public:
5438         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
5439         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
5440         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
5441         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
5442         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
5443         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
5444         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
5445         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
5446         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
5447         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
5448 };
5449 class CResult_RouteHintHopDecodeErrorZ {
5450 private:
5451         LDKCResult_RouteHintHopDecodeErrorZ self;
5452 public:
5453         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
5454         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
5455         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
5456         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
5457         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
5458         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
5459         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
5460         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
5461         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
5462         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
5463 };
5464 class CResult_C2Tuple_SignatureSignatureZNoneZ {
5465 private:
5466         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
5467 public:
5468         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
5469         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
5470         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
5471         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
5472         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
5473         CResult_C2Tuple_SignatureSignatureZNoneZ& operator=(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); return *this; }
5474         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
5475         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
5476         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
5477         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
5478 };
5479 class CVec_NodeAnnouncementZ {
5480 private:
5481         LDKCVec_NodeAnnouncementZ self;
5482 public:
5483         CVec_NodeAnnouncementZ(const CVec_NodeAnnouncementZ&) = delete;
5484         CVec_NodeAnnouncementZ(CVec_NodeAnnouncementZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); }
5485         CVec_NodeAnnouncementZ(LDKCVec_NodeAnnouncementZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); }
5486         operator LDKCVec_NodeAnnouncementZ() && { LDKCVec_NodeAnnouncementZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); return res; }
5487         ~CVec_NodeAnnouncementZ() { CVec_NodeAnnouncementZ_free(self); }
5488         CVec_NodeAnnouncementZ& operator=(CVec_NodeAnnouncementZ&& o) { CVec_NodeAnnouncementZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); return *this; }
5489         LDKCVec_NodeAnnouncementZ* operator &() { return &self; }
5490         LDKCVec_NodeAnnouncementZ* operator ->() { return &self; }
5491         const LDKCVec_NodeAnnouncementZ* operator &() const { return &self; }
5492         const LDKCVec_NodeAnnouncementZ* operator ->() const { return &self; }
5493 };
5494 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
5495 private:
5496         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
5497 public:
5498         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
5499         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5500         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5501         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
5502         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
5503         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
5504         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
5505         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
5506         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
5507         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
5508 };
5509 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5510 private:
5511         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5512 public:
5513         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5514         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5515         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5516         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5517         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5518         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5519         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5520         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5521         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5522         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5523 };
5524 class CVec_TxidZ {
5525 private:
5526         LDKCVec_TxidZ self;
5527 public:
5528         CVec_TxidZ(const CVec_TxidZ&) = delete;
5529         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
5530         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
5531         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
5532         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
5533         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
5534         LDKCVec_TxidZ* operator &() { return &self; }
5535         LDKCVec_TxidZ* operator ->() { return &self; }
5536         const LDKCVec_TxidZ* operator &() const { return &self; }
5537         const LDKCVec_TxidZ* operator ->() const { return &self; }
5538 };
5539 class COption_AccessZ {
5540 private:
5541         LDKCOption_AccessZ self;
5542 public:
5543         COption_AccessZ(const COption_AccessZ&) = delete;
5544         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
5545         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
5546         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
5547         ~COption_AccessZ() { COption_AccessZ_free(self); }
5548         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
5549         LDKCOption_AccessZ* operator &() { return &self; }
5550         LDKCOption_AccessZ* operator ->() { return &self; }
5551         const LDKCOption_AccessZ* operator &() const { return &self; }
5552         const LDKCOption_AccessZ* operator ->() const { return &self; }
5553 };
5554 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
5555 private:
5556         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
5557 public:
5558         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
5559         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5560         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5561         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
5562         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
5563         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; }
5564         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
5565         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
5566         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
5567         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
5568 };
5569 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5570 private:
5571         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5572 public:
5573         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5574         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5575         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5576         operator LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5577         ~CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5578         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; }
5579         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5580         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5581         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5582         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5583 };
5584 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5585 private:
5586         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5587 public:
5588         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5589         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5590         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5591         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5592         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5593         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; }
5594         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5595         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5596         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5597         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5598 };
5599 class CResult_CVec_CVec_u8ZZNoneZ {
5600 private:
5601         LDKCResult_CVec_CVec_u8ZZNoneZ self;
5602 public:
5603         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
5604         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
5605         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
5606         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
5607         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
5608         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; }
5609         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
5610         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
5611         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
5612         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
5613 };
5614 class C2Tuple_SignatureSignatureZ {
5615 private:
5616         LDKC2Tuple_SignatureSignatureZ self;
5617 public:
5618         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
5619         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
5620         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
5621         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
5622         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
5623         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
5624         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
5625         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
5626         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
5627         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
5628 };
5629 class C2Tuple_PaymentHashPaymentSecretZ {
5630 private:
5631         LDKC2Tuple_PaymentHashPaymentSecretZ self;
5632 public:
5633         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
5634         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
5635         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
5636         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
5637         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
5638         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
5639         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
5640         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
5641         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
5642         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
5643 };
5644 class C2Tuple_BlockHashChannelManagerZ {
5645 private:
5646         LDKC2Tuple_BlockHashChannelManagerZ self;
5647 public:
5648         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5649         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5650         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5651         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5652         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5653         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5654         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5655         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5656         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5657         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5658 };
5659 class CResult_ChannelTransactionParametersDecodeErrorZ {
5660 private:
5661         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5662 public:
5663         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5664         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5665         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5666         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5667         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5668         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5669         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5670         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5671         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5672         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5673 };
5674 class CResult_AcceptChannelDecodeErrorZ {
5675 private:
5676         LDKCResult_AcceptChannelDecodeErrorZ self;
5677 public:
5678         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
5679         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
5680         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
5681         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
5682         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
5683         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
5684         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
5685         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
5686         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
5687         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
5688 };
5689 class CVec_SignatureZ {
5690 private:
5691         LDKCVec_SignatureZ self;
5692 public:
5693         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
5694         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
5695         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
5696         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
5697         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
5698         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
5699         LDKCVec_SignatureZ* operator &() { return &self; }
5700         LDKCVec_SignatureZ* operator ->() { return &self; }
5701         const LDKCVec_SignatureZ* operator &() const { return &self; }
5702         const LDKCVec_SignatureZ* operator ->() const { return &self; }
5703 };
5704 class CVec_u64Z {
5705 private:
5706         LDKCVec_u64Z self;
5707 public:
5708         CVec_u64Z(const CVec_u64Z&) = delete;
5709         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
5710         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
5711         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
5712         ~CVec_u64Z() { CVec_u64Z_free(self); }
5713         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
5714         LDKCVec_u64Z* operator &() { return &self; }
5715         LDKCVec_u64Z* operator ->() { return &self; }
5716         const LDKCVec_u64Z* operator &() const { return &self; }
5717         const LDKCVec_u64Z* operator ->() const { return &self; }
5718 };
5719 class CResult_PongDecodeErrorZ {
5720 private:
5721         LDKCResult_PongDecodeErrorZ self;
5722 public:
5723         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5724         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5725         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5726         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5727         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5728         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5729         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5730         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5731         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5732         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5733 };
5734 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5735 private:
5736         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5737 public:
5738         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5739         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5740         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5741         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5742         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5743         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5744         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5745         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5746         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5747         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5748 };
5749 class C2Tuple_PaymentHashPaymentIdZ {
5750 private:
5751         LDKC2Tuple_PaymentHashPaymentIdZ self;
5752 public:
5753         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5754         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5755         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5756         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5757         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5758         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5759         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5760         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5761         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5762         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5763 };
5764 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5765 private:
5766         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5767 public:
5768         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5769         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5770         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5771         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5772         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5773         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ& operator=(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return *this; }
5774         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5775         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5776         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5777         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5778 };
5779 class CResult_NoneErrorZ {
5780 private:
5781         LDKCResult_NoneErrorZ self;
5782 public:
5783         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5784         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5785         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5786         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5787         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5788         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5789         LDKCResult_NoneErrorZ* operator &() { return &self; }
5790         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5791         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5792         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5793 };
5794 class CResult_StringErrorZ {
5795 private:
5796         LDKCResult_StringErrorZ self;
5797 public:
5798         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
5799         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
5800         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
5801         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
5802         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
5803         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
5804         LDKCResult_StringErrorZ* operator &() { return &self; }
5805         LDKCResult_StringErrorZ* operator ->() { return &self; }
5806         const LDKCResult_StringErrorZ* operator &() const { return &self; }
5807         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
5808 };
5809 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
5810 private:
5811         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
5812 public:
5813         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
5814         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5815         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5816         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
5817         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
5818         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; }
5819         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
5820         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
5821         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
5822         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
5823 };
5824 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5825 private:
5826         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
5827 public:
5828         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
5829         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5830         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5831         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
5832         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
5833         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; }
5834         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
5835         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
5836         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
5837         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
5838 };
5839 class COption_EventZ {
5840 private:
5841         LDKCOption_EventZ self;
5842 public:
5843         COption_EventZ(const COption_EventZ&) = delete;
5844         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
5845         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
5846         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
5847         ~COption_EventZ() { COption_EventZ_free(self); }
5848         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
5849         LDKCOption_EventZ* operator &() { return &self; }
5850         LDKCOption_EventZ* operator ->() { return &self; }
5851         const LDKCOption_EventZ* operator &() const { return &self; }
5852         const LDKCOption_EventZ* operator ->() const { return &self; }
5853 };
5854 class CResult_ChannelTypeFeaturesDecodeErrorZ {
5855 private:
5856         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
5857 public:
5858         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
5859         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
5860         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
5861         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
5862         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
5863         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
5864         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
5865         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
5866         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
5867         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
5868 };
5869 class CResult_SiPrefixParseErrorZ {
5870 private:
5871         LDKCResult_SiPrefixParseErrorZ self;
5872 public:
5873         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5874         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5875         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5876         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5877         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5878         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5879         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5880         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5881         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5882         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
5883 };
5884 class CVec_RouteHintZ {
5885 private:
5886         LDKCVec_RouteHintZ self;
5887 public:
5888         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
5889         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
5890         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
5891         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
5892         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
5893         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
5894         LDKCVec_RouteHintZ* operator &() { return &self; }
5895         LDKCVec_RouteHintZ* operator ->() { return &self; }
5896         const LDKCVec_RouteHintZ* operator &() const { return &self; }
5897         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
5898 };
5899 class COption_u16Z {
5900 private:
5901         LDKCOption_u16Z self;
5902 public:
5903         COption_u16Z(const COption_u16Z&) = delete;
5904         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
5905         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
5906         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
5907         ~COption_u16Z() { COption_u16Z_free(self); }
5908         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
5909         LDKCOption_u16Z* operator &() { return &self; }
5910         LDKCOption_u16Z* operator ->() { return &self; }
5911         const LDKCOption_u16Z* operator &() const { return &self; }
5912         const LDKCOption_u16Z* operator ->() const { return &self; }
5913 };
5914 class CVec_CVec_RouteHopZZ {
5915 private:
5916         LDKCVec_CVec_RouteHopZZ self;
5917 public:
5918         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
5919         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
5920         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
5921         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
5922         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
5923         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; }
5924         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
5925         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
5926         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
5927         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
5928 };
5929 class CResult_TrustedCommitmentTransactionNoneZ {
5930 private:
5931         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5932 public:
5933         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5934         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5935         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5936         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5937         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5938         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5939         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5940         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5941         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5942         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
5943 };
5944 class CResult_FixedPenaltyScorerDecodeErrorZ {
5945 private:
5946         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
5947 public:
5948         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
5949         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
5950         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
5951         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
5952         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
5953         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
5954         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
5955         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
5956         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
5957         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
5958 };
5959 class CResult_NoneLightningErrorZ {
5960 private:
5961         LDKCResult_NoneLightningErrorZ self;
5962 public:
5963         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
5964         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
5965         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
5966         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
5967         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
5968         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
5969         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
5970         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
5971         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
5972         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
5973 };
5974 class CResult_NonePeerHandleErrorZ {
5975 private:
5976         LDKCResult_NonePeerHandleErrorZ self;
5977 public:
5978         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
5979         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
5980         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
5981         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
5982         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
5983         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
5984         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
5985         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
5986         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
5987         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
5988 };
5989 class CResult_COption_EventZDecodeErrorZ {
5990 private:
5991         LDKCResult_COption_EventZDecodeErrorZ self;
5992 public:
5993         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
5994         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
5995         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
5996         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
5997         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
5998         CResult_COption_EventZDecodeErrorZ& operator=(CResult_COption_EventZDecodeErrorZ&& o) { CResult_COption_EventZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); return *this; }
5999         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
6000         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
6001         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
6002         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
6003 };
6004 class CResult_CVec_SignatureZNoneZ {
6005 private:
6006         LDKCResult_CVec_SignatureZNoneZ self;
6007 public:
6008         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
6009         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
6010         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
6011         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
6012         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
6013         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; }
6014         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
6015         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
6016         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
6017         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
6018 };
6019 class COption_CVec_NetAddressZZ {
6020 private:
6021         LDKCOption_CVec_NetAddressZZ self;
6022 public:
6023         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
6024         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
6025         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
6026         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
6027         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
6028         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; }
6029         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
6030         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
6031         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
6032         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
6033 };
6034 class CResult__u832APIErrorZ {
6035 private:
6036         LDKCResult__u832APIErrorZ self;
6037 public:
6038         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
6039         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
6040         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
6041         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
6042         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
6043         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
6044         LDKCResult__u832APIErrorZ* operator &() { return &self; }
6045         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
6046         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
6047         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
6048 };
6049 class CResult_PaymentIdPaymentErrorZ {
6050 private:
6051         LDKCResult_PaymentIdPaymentErrorZ self;
6052 public:
6053         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
6054         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
6055         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
6056         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
6057         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
6058         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
6059         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
6060         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
6061         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
6062         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
6063 };
6064 class CResult_DescriptionCreationErrorZ {
6065 private:
6066         LDKCResult_DescriptionCreationErrorZ self;
6067 public:
6068         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
6069         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
6070         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
6071         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
6072         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
6073         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
6074         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
6075         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
6076         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
6077         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
6078 };
6079 class CResult_RoutingFeesDecodeErrorZ {
6080 private:
6081         LDKCResult_RoutingFeesDecodeErrorZ self;
6082 public:
6083         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
6084         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
6085         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
6086         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
6087         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
6088         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
6089         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
6090         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
6091         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
6092         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
6093 };
6094 class CResult_PayeePubKeyErrorZ {
6095 private:
6096         LDKCResult_PayeePubKeyErrorZ self;
6097 public:
6098         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
6099         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
6100         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
6101         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
6102         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
6103         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
6104         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
6105         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
6106         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
6107         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
6108 };
6109 class CResult_COption_MonitorEventZDecodeErrorZ {
6110 private:
6111         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
6112 public:
6113         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
6114         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
6115         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
6116         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
6117         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
6118         CResult_COption_MonitorEventZDecodeErrorZ& operator=(CResult_COption_MonitorEventZDecodeErrorZ&& o) { CResult_COption_MonitorEventZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); return *this; }
6119         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
6120         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
6121         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
6122         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
6123 };
6124 class CVec_C2Tuple_PublicKeyTypeZZ {
6125 private:
6126         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
6127 public:
6128         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
6129         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
6130         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
6131         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
6132         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
6133         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; }
6134         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
6135         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
6136         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
6137         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
6138 };
6139 class CResult_u32GraphSyncErrorZ {
6140 private:
6141         LDKCResult_u32GraphSyncErrorZ self;
6142 public:
6143         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
6144         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
6145         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
6146         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
6147         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
6148         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
6149         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
6150         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
6151         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
6152         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
6153 };
6154 class CResult_InvoiceSemanticErrorZ {
6155 private:
6156         LDKCResult_InvoiceSemanticErrorZ self;
6157 public:
6158         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
6159         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
6160         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
6161         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
6162         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
6163         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
6164         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
6165         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
6166         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
6167         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
6168 };
6169 class CResult_UpdateAddHTLCDecodeErrorZ {
6170 private:
6171         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
6172 public:
6173         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
6174         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
6175         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
6176         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
6177         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
6178         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
6179         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
6180         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
6181         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
6182         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
6183 };
6184 class CResult_QueryShortChannelIdsDecodeErrorZ {
6185 private:
6186         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
6187 public:
6188         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
6189         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
6190         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
6191         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
6192         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
6193         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
6194         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
6195         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
6196         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
6197         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
6198 };
6199 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
6200 private:
6201         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
6202 public:
6203         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
6204         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6205         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6206         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
6207         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
6208         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
6209         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6210         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6211         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6212         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6213 };
6214 class CResult_NoneAPIErrorZ {
6215 private:
6216         LDKCResult_NoneAPIErrorZ self;
6217 public:
6218         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
6219         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
6220         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
6221         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
6222         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
6223         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
6224         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
6225         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
6226         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
6227         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
6228 };
6229 class CVec_NetAddressZ {
6230 private:
6231         LDKCVec_NetAddressZ self;
6232 public:
6233         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
6234         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
6235         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
6236         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
6237         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
6238         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
6239         LDKCVec_NetAddressZ* operator &() { return &self; }
6240         LDKCVec_NetAddressZ* operator ->() { return &self; }
6241         const LDKCVec_NetAddressZ* operator &() const { return &self; }
6242         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
6243 };
6244 class CResult_ChannelDetailsDecodeErrorZ {
6245 private:
6246         LDKCResult_ChannelDetailsDecodeErrorZ self;
6247 public:
6248         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
6249         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
6250         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
6251         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
6252         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
6253         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
6254         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
6255         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
6256         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
6257         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
6258 };
6259 class CVec_PublicKeyZ {
6260 private:
6261         LDKCVec_PublicKeyZ self;
6262 public:
6263         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
6264         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
6265         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
6266         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
6267         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
6268         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
6269         LDKCVec_PublicKeyZ* operator &() { return &self; }
6270         LDKCVec_PublicKeyZ* operator ->() { return &self; }
6271         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
6272         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
6273 };
6274 class CVec_C2Tuple_usizeTransactionZZ {
6275 private:
6276         LDKCVec_C2Tuple_usizeTransactionZZ self;
6277 public:
6278         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
6279         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
6280         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
6281         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
6282         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
6283         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; }
6284         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
6285         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
6286         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
6287         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
6288 };
6289 class CVec_PhantomRouteHintsZ {
6290 private:
6291         LDKCVec_PhantomRouteHintsZ self;
6292 public:
6293         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
6294         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
6295         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
6296         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
6297         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
6298         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
6299         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
6300         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
6301         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
6302         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
6303 };
6304 class COption_MonitorEventZ {
6305 private:
6306         LDKCOption_MonitorEventZ self;
6307 public:
6308         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6309         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6310         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6311         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6312         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6313         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6314         LDKCOption_MonitorEventZ* operator &() { return &self; }
6315         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6316         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6317         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6318 };
6319 class C2Tuple_u64u64Z {
6320 private:
6321         LDKC2Tuple_u64u64Z self;
6322 public:
6323         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
6324         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
6325         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
6326         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
6327         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
6328         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
6329         LDKC2Tuple_u64u64Z* operator &() { return &self; }
6330         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
6331         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
6332         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
6333 };
6334 class COption_TypeZ {
6335 private:
6336         LDKCOption_TypeZ self;
6337 public:
6338         COption_TypeZ(const COption_TypeZ&) = delete;
6339         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6340         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6341         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6342         ~COption_TypeZ() { COption_TypeZ_free(self); }
6343         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6344         LDKCOption_TypeZ* operator &() { return &self; }
6345         LDKCOption_TypeZ* operator ->() { return &self; }
6346         const LDKCOption_TypeZ* operator &() const { return &self; }
6347         const LDKCOption_TypeZ* operator ->() const { return &self; }
6348 };
6349 class CResult_COption_TypeZDecodeErrorZ {
6350 private:
6351         LDKCResult_COption_TypeZDecodeErrorZ self;
6352 public:
6353         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6354         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6355         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6356         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6357         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6358         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; }
6359         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6360         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6361         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6362         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6363 };
6364 class C2Tuple_u32TxOutZ {
6365 private:
6366         LDKC2Tuple_u32TxOutZ self;
6367 public:
6368         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
6369         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
6370         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
6371         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
6372         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
6373         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
6374         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
6375         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
6376         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
6377         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
6378 };
6379 class CResult_UpdateFailHTLCDecodeErrorZ {
6380 private:
6381         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6382 public:
6383         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6384         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6385         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6386         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6387         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6388         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6389         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6390         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6391         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6392         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6393 };
6394 class CResult_InvoiceParseOrSemanticErrorZ {
6395 private:
6396         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6397 public:
6398         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6399         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6400         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6401         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6402         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6403         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6404         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6405         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6406         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6407         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6408 };
6409 class CResult_PaymentSecretNoneZ {
6410 private:
6411         LDKCResult_PaymentSecretNoneZ self;
6412 public:
6413         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
6414         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
6415         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
6416         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
6417         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
6418         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
6419         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
6420         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
6421         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
6422         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
6423 };
6424 class CResult_ChannelConfigDecodeErrorZ {
6425 private:
6426         LDKCResult_ChannelConfigDecodeErrorZ self;
6427 public:
6428         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
6429         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
6430         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
6431         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
6432         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
6433         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
6434         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
6435         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
6436         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
6437         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
6438 };
6439 class CVec_PrivateRouteZ {
6440 private:
6441         LDKCVec_PrivateRouteZ self;
6442 public:
6443         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
6444         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
6445         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
6446         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
6447         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
6448         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
6449         LDKCVec_PrivateRouteZ* operator &() { return &self; }
6450         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
6451         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
6452         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
6453 };
6454 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6455 private:
6456         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6457 public:
6458         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6459         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6460         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6461         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6462         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6463         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6464         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6465         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6466         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6467         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6468 };
6469 class CResult_RevokeAndACKDecodeErrorZ {
6470 private:
6471         LDKCResult_RevokeAndACKDecodeErrorZ self;
6472 public:
6473         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6474         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6475         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6476         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6477         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6478         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6479         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6480         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6481         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6482         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6483 };
6484 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6485 private:
6486         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6487 public:
6488         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6489         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6490         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6491         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6492         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6493         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6494         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6495         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6496         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6497         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6498 };
6499 class CResult_ShutdownDecodeErrorZ {
6500 private:
6501         LDKCResult_ShutdownDecodeErrorZ self;
6502 public:
6503         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
6504         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
6505         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
6506         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
6507         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
6508         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
6509         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
6510         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
6511         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
6512         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
6513 };
6514 class CVec_EventZ {
6515 private:
6516         LDKCVec_EventZ self;
6517 public:
6518         CVec_EventZ(const CVec_EventZ&) = delete;
6519         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6520         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6521         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6522         ~CVec_EventZ() { CVec_EventZ_free(self); }
6523         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6524         LDKCVec_EventZ* operator &() { return &self; }
6525         LDKCVec_EventZ* operator ->() { return &self; }
6526         const LDKCVec_EventZ* operator &() const { return &self; }
6527         const LDKCVec_EventZ* operator ->() const { return &self; }
6528 };
6529 class CResult_NoneSemanticErrorZ {
6530 private:
6531         LDKCResult_NoneSemanticErrorZ self;
6532 public:
6533         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6534         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6535         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6536         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6537         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6538         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6539         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6540         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6541         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6542         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6543 };
6544 class CVec_MonitorEventZ {
6545 private:
6546         LDKCVec_MonitorEventZ self;
6547 public:
6548         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
6549         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
6550         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
6551         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
6552         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
6553         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
6554         LDKCVec_MonitorEventZ* operator &() { return &self; }
6555         LDKCVec_MonitorEventZ* operator ->() { return &self; }
6556         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
6557         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
6558 };
6559 class CVec_PaymentPreimageZ {
6560 private:
6561         LDKCVec_PaymentPreimageZ self;
6562 public:
6563         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
6564         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
6565         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
6566         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
6567         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
6568         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
6569         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
6570         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
6571         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
6572         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
6573 };
6574 class CVec_C2Tuple_u32ScriptZZ {
6575 private:
6576         LDKCVec_C2Tuple_u32ScriptZZ self;
6577 public:
6578         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6579         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6580         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6581         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6582         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6583         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; }
6584         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6585         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6586         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6587         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6588 };
6589 class CResult_NoneChannelMonitorUpdateErrZ {
6590 private:
6591         LDKCResult_NoneChannelMonitorUpdateErrZ self;
6592 public:
6593         CResult_NoneChannelMonitorUpdateErrZ(const CResult_NoneChannelMonitorUpdateErrZ&) = delete;
6594         CResult_NoneChannelMonitorUpdateErrZ(CResult_NoneChannelMonitorUpdateErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); }
6595         CResult_NoneChannelMonitorUpdateErrZ(LDKCResult_NoneChannelMonitorUpdateErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); }
6596         operator LDKCResult_NoneChannelMonitorUpdateErrZ() && { LDKCResult_NoneChannelMonitorUpdateErrZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); return res; }
6597         ~CResult_NoneChannelMonitorUpdateErrZ() { CResult_NoneChannelMonitorUpdateErrZ_free(self); }
6598         CResult_NoneChannelMonitorUpdateErrZ& operator=(CResult_NoneChannelMonitorUpdateErrZ&& o) { CResult_NoneChannelMonitorUpdateErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); return *this; }
6599         LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() { return &self; }
6600         LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() { return &self; }
6601         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() const { return &self; }
6602         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() const { return &self; }
6603 };
6604 class CResult_COption_ClosureReasonZDecodeErrorZ {
6605 private:
6606         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6607 public:
6608         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6609         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6610         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6611         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6612         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6613         CResult_COption_ClosureReasonZDecodeErrorZ& operator=(CResult_COption_ClosureReasonZDecodeErrorZ&& o) { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); return *this; }
6614         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6615         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6616         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6617         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6618 };
6619 class CResult_PublicKeyErrorZ {
6620 private:
6621         LDKCResult_PublicKeyErrorZ self;
6622 public:
6623         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
6624         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
6625         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
6626         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
6627         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
6628         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
6629         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
6630         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
6631         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
6632         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
6633 };
6634 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6635 private:
6636         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6637 public:
6638         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6639         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6640         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6641         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6642         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6643         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6644         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6645         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6646         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6647         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6648 };
6649 class CResult_NoneNoneZ {
6650 private:
6651         LDKCResult_NoneNoneZ self;
6652 public:
6653         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
6654         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
6655         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
6656         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
6657         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
6658         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
6659         LDKCResult_NoneNoneZ* operator &() { return &self; }
6660         LDKCResult_NoneNoneZ* operator ->() { return &self; }
6661         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
6662         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
6663 };
6664 class CResult_RouteParametersDecodeErrorZ {
6665 private:
6666         LDKCResult_RouteParametersDecodeErrorZ self;
6667 public:
6668         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6669         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6670         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6671         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6672         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6673         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6674         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6675         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6676         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6677         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6678 };
6679 class COption_ClosureReasonZ {
6680 private:
6681         LDKCOption_ClosureReasonZ self;
6682 public:
6683         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
6684         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
6685         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
6686         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
6687         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
6688         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
6689         LDKCOption_ClosureReasonZ* operator &() { return &self; }
6690         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
6691         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
6692         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
6693 };
6694 class CResult_NodeAliasDecodeErrorZ {
6695 private:
6696         LDKCResult_NodeAliasDecodeErrorZ self;
6697 public:
6698         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
6699         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
6700         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
6701         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
6702         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
6703         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
6704         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
6705         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
6706         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
6707         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
6708 };
6709 class CVec_APIErrorZ {
6710 private:
6711         LDKCVec_APIErrorZ self;
6712 public:
6713         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
6714         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
6715         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
6716         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
6717         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
6718         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
6719         LDKCVec_APIErrorZ* operator &() { return &self; }
6720         LDKCVec_APIErrorZ* operator ->() { return &self; }
6721         const LDKCVec_APIErrorZ* operator &() const { return &self; }
6722         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
6723 };
6724 class CResult_PrivateRouteCreationErrorZ {
6725 private:
6726         LDKCResult_PrivateRouteCreationErrorZ self;
6727 public:
6728         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6729         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6730         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6731         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6732         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6733         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6734         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6735         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6736         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6737         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6738 };
6739 class CResult_boolPeerHandleErrorZ {
6740 private:
6741         LDKCResult_boolPeerHandleErrorZ self;
6742 public:
6743         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
6744         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
6745         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
6746         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
6747         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
6748         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
6749         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
6750         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
6751         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
6752         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
6753 };
6754 class CVec_UpdateFulfillHTLCZ {
6755 private:
6756         LDKCVec_UpdateFulfillHTLCZ self;
6757 public:
6758         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6759         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6760         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6761         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6762         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6763         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6764         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6765         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6766         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6767         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6768 };
6769 class CResult_AnnouncementSignaturesDecodeErrorZ {
6770 private:
6771         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6772 public:
6773         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6774         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6775         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6776         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6777         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6778         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6779         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6780         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6781         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6782         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6783 };
6784 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6785 private:
6786         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6787 public:
6788         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6789         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6790         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6791         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6792         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6793         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6794         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6795         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6796         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6797         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6798 };
6799 class CResult_ChannelUpdateDecodeErrorZ {
6800 private:
6801         LDKCResult_ChannelUpdateDecodeErrorZ self;
6802 public:
6803         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
6804         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
6805         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
6806         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
6807         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
6808         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
6809         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
6810         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6811         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6812         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6813 };
6814 class CResult_NodeFeaturesDecodeErrorZ {
6815 private:
6816         LDKCResult_NodeFeaturesDecodeErrorZ self;
6817 public:
6818         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6819         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6820         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6821         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6822         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6823         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6824         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6825         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6826         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6827         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6828 };
6829 class CVec_u5Z {
6830 private:
6831         LDKCVec_u5Z self;
6832 public:
6833         CVec_u5Z(const CVec_u5Z&) = delete;
6834         CVec_u5Z(CVec_u5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u5Z)); }
6835         CVec_u5Z(LDKCVec_u5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u5Z)); }
6836         operator LDKCVec_u5Z() && { LDKCVec_u5Z res = self; memset(&self, 0, sizeof(LDKCVec_u5Z)); return res; }
6837         ~CVec_u5Z() { CVec_u5Z_free(self); }
6838         CVec_u5Z& operator=(CVec_u5Z&& o) { CVec_u5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u5Z)); return *this; }
6839         LDKCVec_u5Z* operator &() { return &self; }
6840         LDKCVec_u5Z* operator ->() { return &self; }
6841         const LDKCVec_u5Z* operator &() const { return &self; }
6842         const LDKCVec_u5Z* operator ->() const { return &self; }
6843 };
6844 class CResult_InMemorySignerDecodeErrorZ {
6845 private:
6846         LDKCResult_InMemorySignerDecodeErrorZ self;
6847 public:
6848         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6849         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6850         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6851         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6852         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6853         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6854         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6855         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6856         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6857         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6858 };
6859 class CResult_PaymentSecretAPIErrorZ {
6860 private:
6861         LDKCResult_PaymentSecretAPIErrorZ self;
6862 public:
6863         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
6864         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
6865         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
6866         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
6867         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
6868         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
6869         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
6870         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
6871         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
6872         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
6873 };
6874 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
6875 private:
6876         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
6877 public:
6878         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
6879         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6880         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6881         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
6882         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
6883         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
6884         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
6885         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
6886         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
6887         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
6888 };
6889 class CResult_SignedRawInvoiceParseErrorZ {
6890 private:
6891         LDKCResult_SignedRawInvoiceParseErrorZ self;
6892 public:
6893         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
6894         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
6895         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
6896         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
6897         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
6898         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
6899         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
6900         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
6901         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
6902         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
6903 };
6904 class C2Tuple_u32ScriptZ {
6905 private:
6906         LDKC2Tuple_u32ScriptZ self;
6907 public:
6908         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
6909         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
6910         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
6911         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
6912         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
6913         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
6914         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
6915         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
6916         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
6917         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
6918 };
6919 class CResult_RouteDecodeErrorZ {
6920 private:
6921         LDKCResult_RouteDecodeErrorZ self;
6922 public:
6923         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
6924         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
6925         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
6926         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
6927         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
6928         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
6929         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
6930         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
6931         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
6932         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
6933 };
6934 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6935 private:
6936         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6937 public:
6938         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6939         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6940         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6941         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6942         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6943         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6944         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6945         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6946         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6947         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6948 };
6949 class COption_NoneZ {
6950 private:
6951         LDKCOption_NoneZ self;
6952 public:
6953         COption_NoneZ(const COption_NoneZ&) = delete;
6954         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
6955         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
6956         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
6957         ~COption_NoneZ() { COption_NoneZ_free(self); }
6958         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
6959         LDKCOption_NoneZ* operator &() { return &self; }
6960         LDKCOption_NoneZ* operator ->() { return &self; }
6961         const LDKCOption_NoneZ* operator &() const { return &self; }
6962         const LDKCOption_NoneZ* operator ->() const { return &self; }
6963 };
6964 class CVec_TxOutZ {
6965 private:
6966         LDKCVec_TxOutZ self;
6967 public:
6968         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6969         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6970         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6971         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6972         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6973         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6974         LDKCVec_TxOutZ* operator &() { return &self; }
6975         LDKCVec_TxOutZ* operator ->() { return &self; }
6976         const LDKCVec_TxOutZ* operator &() const { return &self; }
6977         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6978 };
6979 class CResult_ChannelUpdateInfoDecodeErrorZ {
6980 private:
6981         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6982 public:
6983         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6984         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6985         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6986         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6987         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6988         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6989         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6990         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6991         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6992         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6993 };
6994 class CVec_C2Tuple_OutPointCVec_MonitorEventZZZ {
6995 private:
6996         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ self;
6997 public:
6998         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(const CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&) = delete;
6999         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); }
7000         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); }
7001         operator LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); return res; }
7002         ~CVec_C2Tuple_OutPointCVec_MonitorEventZZZ() { CVec_C2Tuple_OutPointCVec_MonitorEventZZZ_free(self); }
7003         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ& operator=(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& o) { CVec_C2Tuple_OutPointCVec_MonitorEventZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); return *this; }
7004         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator &() { return &self; }
7005         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator ->() { return &self; }
7006         const LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator &() const { return &self; }
7007         const LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator ->() const { return &self; }
7008 };
7009 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
7010 private:
7011         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
7012 public:
7013         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
7014         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7015         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7016         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
7017         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
7018         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; }
7019         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
7020         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
7021         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
7022         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
7023 };
7024 class CVec_UpdateFailHTLCZ {
7025 private:
7026         LDKCVec_UpdateFailHTLCZ self;
7027 public:
7028         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
7029         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
7030         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
7031         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
7032         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
7033         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
7034         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
7035         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
7036         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
7037         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
7038 };
7039 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
7040 private:
7041         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
7042 public:
7043         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
7044         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7045         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7046         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
7047         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
7048         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
7049         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
7050         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
7051         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
7052         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
7053 };
7054
7055 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
7056         (self.broadcast_transaction)(self.this_arg, tx);
7057 }
7058 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
7059         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
7060         return ret;
7061 }
7062 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
7063         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
7064         return ret;
7065 }
7066 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
7067         (self.process_pending_events)(self.this_arg, handler);
7068 }
7069 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
7070         (self.handle_event)(self.this_arg, event);
7071 }
7072 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
7073         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
7074         return ret;
7075 }
7076 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7077         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
7078 }
7079 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
7080         (self.block_connected)(self.this_arg, block, height);
7081 }
7082 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
7083         (self.block_disconnected)(self.this_arg, header, height);
7084 }
7085 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7086         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
7087 }
7088 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
7089         (self.transaction_unconfirmed)(self.this_arg, txid);
7090 }
7091 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
7092         (self.best_block_updated)(self.this_arg, header, height);
7093 }
7094 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
7095         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
7096         return ret;
7097 }
7098 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
7099         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
7100         return ret;
7101 }
7102 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
7103         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_channel)(self.this_arg, funding_txo, update);
7104         return ret;
7105 }
7106 inline LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ Watch::release_pending_monitor_events() {
7107         LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ ret = (self.release_pending_monitor_events)(self.this_arg);
7108         return ret;
7109 }
7110 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
7111         (self.register_tx)(self.this_arg, txid, script_pubkey);
7112 }
7113 inline LDK::COption_C2Tuple_usizeTransactionZZ Filter::register_output(struct LDKWatchedOutput output) {
7114         LDK::COption_C2Tuple_usizeTransactionZZ ret = (self.register_output)(self.this_arg, output);
7115         return ret;
7116 }
7117 inline uint64_t Score::channel_penalty_msat(uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, struct LDKChannelUsage usage) {
7118         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
7119         return ret;
7120 }
7121 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7122         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
7123 }
7124 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
7125         (self.payment_path_successful)(self.this_arg, path);
7126 }
7127 inline LDK::Score LockableScore::lock() {
7128         LDK::Score ret = (self.lock)(self.this_arg);
7129         return ret;
7130 }
7131 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
7132         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
7133         return ret;
7134 }
7135 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
7136         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
7137         return ret;
7138 }
7139 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7140         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
7141         return ret;
7142 }
7143 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
7144         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
7145         return ret;
7146 }
7147 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7148         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
7149         return ret;
7150 }
7151 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
7152         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
7153         return ret;
7154 }
7155 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
7156         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
7157         return ret;
7158 }
7159 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]) {
7160         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
7161         return ret;
7162 }
7163 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) {
7164         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
7165         return ret;
7166 }
7167 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) {
7168         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
7169         return ret;
7170 }
7171 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
7172         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
7173         return ret;
7174 }
7175 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
7176         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
7177         return ret;
7178 }
7179 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
7180         (self.ready_channel)(self.this_arg, channel_parameters);
7181 }
7182 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
7183         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
7184         return ret;
7185 }
7186 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
7187         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
7188         return ret;
7189 }
7190 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
7191         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
7192         return ret;
7193 }
7194 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
7195         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
7196         return ret;
7197 }
7198 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
7199         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
7200         return ret;
7201 }
7202 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
7203         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
7204         return ret;
7205 }
7206 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient) {
7207         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
7208         return ret;
7209 }
7210 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
7211         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
7212         return ret;
7213 }
7214 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
7215         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
7216         return ret;
7217 }
7218 inline uint16_t Type::type_id() {
7219         uint16_t ret = (self.type_id)(self.this_arg);
7220         return ret;
7221 }
7222 inline LDK::Str Type::debug_str() {
7223         LDK::Str ret = (self.debug_str)(self.this_arg);
7224         return ret;
7225 }
7226 inline LDKPublicKey Payer::node_id() {
7227         LDKPublicKey ret = (self.node_id)(self.this_arg);
7228         return ret;
7229 }
7230 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
7231         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
7232         return ret;
7233 }
7234 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret) {
7235         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret);
7236         return ret;
7237 }
7238 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage) {
7239         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage);
7240         return ret;
7241 }
7242 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
7243         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
7244         return ret;
7245 }
7246 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
7247         (self.abandon_payment)(self.this_arg, payment_id);
7248 }
7249 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer) {
7250         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, payment_hash, first_hops, scorer);
7251         return ret;
7252 }
7253 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
7254         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
7255         return ret;
7256 }
7257 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
7258         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
7259         return ret;
7260 }
7261 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
7262         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
7263         return ret;
7264 }
7265 inline void SocketDescriptor::disconnect_socket() {
7266         (self.disconnect_socket)(self.this_arg);
7267 }
7268 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
7269         bool ret = (self.eq)(self.this_arg, other_arg);
7270         return ret;
7271 }
7272 inline uint64_t SocketDescriptor::hash() {
7273         uint64_t ret = (self.hash)(self.this_arg);
7274         return ret;
7275 }
7276 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
7277         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
7278         return ret;
7279 }
7280 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
7281         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
7282         return ret;
7283 }
7284 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer) {
7285         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
7286         return ret;
7287 }
7288 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
7289         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
7290 }
7291 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
7292         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
7293 }
7294 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
7295         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
7296 }
7297 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
7298         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
7299 }
7300 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
7301         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
7302 }
7303 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
7304         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
7305 }
7306 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
7307         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
7308 }
7309 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
7310         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
7311 }
7312 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
7313         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
7314 }
7315 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
7316         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
7317 }
7318 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
7319         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
7320 }
7321 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
7322         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
7323 }
7324 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
7325         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
7326 }
7327 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
7328         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
7329 }
7330 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
7331         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
7332 }
7333 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
7334         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
7335 }
7336 inline void ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
7337         (self.peer_connected)(self.this_arg, their_node_id, msg);
7338 }
7339 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
7340         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
7341 }
7342 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
7343         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
7344 }
7345 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
7346         (self.handle_error)(self.this_arg, their_node_id, msg);
7347 }
7348 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
7349         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
7350         return ret;
7351 }
7352 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
7353         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
7354         return ret;
7355 }
7356 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
7357         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
7358         return ret;
7359 }
7360 inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount) {
7361         LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcements)(self.this_arg, starting_point, batch_amount);
7362         return ret;
7363 }
7364 inline LDK::CVec_NodeAnnouncementZ RoutingMessageHandler::get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount) {
7365         LDK::CVec_NodeAnnouncementZ ret = (self.get_next_node_announcements)(self.this_arg, starting_point, batch_amount);
7366         return ret;
7367 }
7368 inline void RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
7369         (self.peer_connected)(self.this_arg, their_node_id, init);
7370 }
7371 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
7372         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
7373         return ret;
7374 }
7375 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
7376         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
7377         return ret;
7378 }
7379 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
7380         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
7381         return ret;
7382 }
7383 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
7384         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
7385         return ret;
7386 }
7387 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
7388         (self.log)(self.this_arg, record);
7389 }
7390 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
7391         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
7392         return ret;
7393 }
7394 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) {
7395         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
7396         return ret;
7397 }
7398 }