Update auto-generated bindings
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class BlindedRoute;
6 class BlindedHop;
7 class CounterpartyCommitmentSecrets;
8 class TxCreationKeys;
9 class ChannelPublicKeys;
10 class HTLCOutputInCommitment;
11 class ChannelTransactionParameters;
12 class CounterpartyChannelTransactionParameters;
13 class DirectedChannelTransactionParameters;
14 class HolderCommitmentTransaction;
15 class BuiltCommitmentTransaction;
16 class ClosingTransaction;
17 class TrustedClosingTransaction;
18 class CommitmentTransaction;
19 class TrustedCommitmentTransaction;
20 class ShutdownScript;
21 class InvalidShutdownScript;
22 class BackgroundProcessor;
23 class GossipSync;
24 class RouteHop;
25 class Route;
26 class RouteParameters;
27 class PaymentParameters;
28 class RouteHint;
29 class RouteHintHop;
30 class BroadcasterInterface;
31 class ConfirmationTarget;
32 class FeeEstimator;
33 class PaymentPurpose;
34 class ClosureReason;
35 class HTLCDestination;
36 class Event;
37 class MessageSendEvent;
38 class MessageSendEventsProvider;
39 class OnionMessageProvider;
40 class EventsProvider;
41 class EventHandler;
42 class BestBlock;
43 class AccessError;
44 class Access;
45 class Listen;
46 class Confirm;
47 class ChannelMonitorUpdateStatus;
48 class Watch;
49 class Filter;
50 class WatchedOutput;
51 class Score;
52 class LockableScore;
53 class WriteableScore;
54 class MultiThreadedLockableScore;
55 class MultiThreadedScoreLock;
56 class ChannelUsage;
57 class FixedPenaltyScorer;
58 class ProbabilisticScorer;
59 class ProbabilisticScoringParameters;
60 class InitFeatures;
61 class NodeFeatures;
62 class ChannelFeatures;
63 class InvoiceFeatures;
64 class ChannelTypeFeatures;
65 class CustomOnionMessageContents;
66 class NodeId;
67 class NetworkGraph;
68 class ReadOnlyNetworkGraph;
69 class NetworkUpdate;
70 class P2PGossipSync;
71 class ChannelUpdateInfo;
72 class ChannelInfo;
73 class DirectedChannelInfo;
74 class EffectiveCapacity;
75 class RoutingFees;
76 class NodeAnnouncementInfo;
77 class NodeAlias;
78 class NodeInfo;
79 class DelayedPaymentOutputDescriptor;
80 class StaticPaymentOutputDescriptor;
81 class SpendableOutputDescriptor;
82 class BaseSign;
83 class Sign;
84 class Recipient;
85 class KeysInterface;
86 class InMemorySigner;
87 class KeysManager;
88 class PhantomKeysManager;
89 class FilesystemPersister;
90 class ChannelManager;
91 class ChainParameters;
92 class CounterpartyForwardingInfo;
93 class ChannelCounterparty;
94 class ChannelDetails;
95 class PaymentSendFailure;
96 class PhantomRouteHints;
97 class ChannelManagerReadArgs;
98 class ChannelHandshakeConfig;
99 class ChannelHandshakeLimits;
100 class ChannelConfig;
101 class UserConfig;
102 class APIError;
103 class BigSize;
104 class Hostname;
105 class OutPoint;
106 class CustomMessageReader;
107 class Type;
108 class InvoicePayer;
109 class Payer;
110 class Router;
111 class Retry;
112 class PaymentError;
113 class InFlightHtlcs;
114 class ParseError;
115 class ParseOrSemanticError;
116 class Invoice;
117 class SignedRawInvoice;
118 class RawInvoice;
119 class RawDataPart;
120 class PositiveTimestamp;
121 class SiPrefix;
122 class Currency;
123 class Sha256;
124 class Description;
125 class PayeePubKey;
126 class ExpiryTime;
127 class MinFinalCltvExpiry;
128 class Fallback;
129 class InvoiceSignature;
130 class PrivateRoute;
131 class CreationError;
132 class SemanticError;
133 class SignOrCreationError;
134 class ChannelMonitorUpdate;
135 class MonitorEvent;
136 class HTLCUpdate;
137 class Balance;
138 class ChannelMonitor;
139 class ExpandedKey;
140 class CustomMessageHandler;
141 class IgnoringMessageHandler;
142 class ErroringMessageHandler;
143 class MessageHandler;
144 class SocketDescriptor;
145 class PeerHandleError;
146 class PeerManager;
147 class OnionMessenger;
148 class Destination;
149 class SendError;
150 class CustomOnionMessageHandler;
151 class RapidGossipSync;
152 class Persister;
153 class DecodeError;
154 class Init;
155 class ErrorMessage;
156 class WarningMessage;
157 class Ping;
158 class Pong;
159 class OpenChannel;
160 class AcceptChannel;
161 class FundingCreated;
162 class FundingSigned;
163 class ChannelReady;
164 class Shutdown;
165 class ClosingSignedFeeRange;
166 class ClosingSigned;
167 class UpdateAddHTLC;
168 class OnionMessage;
169 class UpdateFulfillHTLC;
170 class UpdateFailHTLC;
171 class UpdateFailMalformedHTLC;
172 class CommitmentSigned;
173 class RevokeAndACK;
174 class UpdateFee;
175 class DataLossProtect;
176 class ChannelReestablish;
177 class AnnouncementSignatures;
178 class NetAddress;
179 class UnsignedNodeAnnouncement;
180 class NodeAnnouncement;
181 class UnsignedChannelAnnouncement;
182 class ChannelAnnouncement;
183 class UnsignedChannelUpdate;
184 class ChannelUpdate;
185 class QueryChannelRange;
186 class ReplyChannelRange;
187 class QueryShortChannelIds;
188 class ReplyShortChannelIdsEnd;
189 class GossipTimestampFilter;
190 class ErrorAction;
191 class LightningError;
192 class CommitmentUpdate;
193 class ChannelMessageHandler;
194 class RoutingMessageHandler;
195 class OnionMessageHandler;
196 class GraphSyncError;
197 class DefaultRouter;
198 class Level;
199 class Record;
200 class Logger;
201 class FutureCallback;
202 class Future;
203 class MonitorUpdateId;
204 class Persist;
205 class LockedChannelMonitor;
206 class ChainMonitor;
207 class CVec_SpendableOutputDescriptorZ;
208 class CResult_LockedChannelMonitorNoneZ;
209 class CResult_PhantomRouteHintsDecodeErrorZ;
210 class COption_C2Tuple_u64u64ZZ;
211 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
212 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
213 class CResult_HTLCUpdateDecodeErrorZ;
214 class C2Tuple_SignatureCVec_SignatureZZ;
215 class CVec_C2Tuple_u32TxOutZZ;
216 class CResult_ChannelInfoDecodeErrorZ;
217 class COption_WriteableScoreZ;
218 class CResult_NoneSendErrorZ;
219 class CResult_FundingCreatedDecodeErrorZ;
220 class CResult_ChannelAnnouncementDecodeErrorZ;
221 class CResult_PositiveTimestampCreationErrorZ;
222 class CVec_OutPointZ;
223 class CResult_CVec_u8ZPeerHandleErrorZ;
224 class CResult_InvoiceFeaturesDecodeErrorZ;
225 class COption_NetworkUpdateZ;
226 class COption_u64Z;
227 class CResult_TxOutAccessErrorZ;
228 class CResult_TrustedClosingTransactionNoneZ;
229 class CResult_PaymentPreimageAPIErrorZ;
230 class CResult_ChannelMonitorUpdateDecodeErrorZ;
231 class CResult_RouteHintDecodeErrorZ;
232 class C2Tuple_PublicKeyTypeZ;
233 class CResult_NetAddressDecodeErrorZ;
234 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
235 class CResult_ChannelReestablishDecodeErrorZ;
236 class CVec_UpdateAddHTLCZ;
237 class CResult_CommitmentSignedDecodeErrorZ;
238 class COption_u32Z;
239 class CResult_InitFeaturesDecodeErrorZ;
240 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
241 class CResult_PublicKeyNoneZ;
242 class CResult_PaymentIdPaymentSendFailureZ;
243 class CResult_CommitmentTransactionDecodeErrorZ;
244 class CResult_TransactionNoneZ;
245 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
246 class CResult_OnionMessageDecodeErrorZ;
247 class CResult_PingDecodeErrorZ;
248 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
249 class CResult_ReplyChannelRangeDecodeErrorZ;
250 class CResult_GossipTimestampFilterDecodeErrorZ;
251 class CVec_TransactionOutputsZ;
252 class CResult_ErrorMessageDecodeErrorZ;
253 class CResult_OpenChannelDecodeErrorZ;
254 class CVec_CVec_u8ZZ;
255 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ;
256 class CResult_SecretKeyErrorZ;
257 class CResult_ShutdownScriptDecodeErrorZ;
258 class CResult_ProbabilisticScorerDecodeErrorZ;
259 class CResult_QueryChannelRangeDecodeErrorZ;
260 class CResult_TxCreationKeysDecodeErrorZ;
261 class C2Tuple_usizeTransactionZ;
262 class CResult_ChannelFeaturesDecodeErrorZ;
263 class CVec_ChannelMonitorZ;
264 class CVec_TransactionZ;
265 class CResult_ChannelReadyDecodeErrorZ;
266 class CResult_RouteHopDecodeErrorZ;
267 class CResult_UpdateFeeDecodeErrorZ;
268 class CResult_NodeAnnouncementDecodeErrorZ;
269 class CVec_BalanceZ;
270 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
271 class CResult_boolLightningErrorZ;
272 class CResult_TxCreationKeysErrorZ;
273 class COption_HTLCDestinationZ;
274 class CResult_NodeIdDecodeErrorZ;
275 class CResult_ShutdownScriptInvalidShutdownScriptZ;
276 class CResult_NodeAnnouncementInfoDecodeErrorZ;
277 class CResult_COption_NetworkUpdateZDecodeErrorZ;
278 class CResult_RecoverableSignatureNoneZ;
279 class C2Tuple_BlockHashChannelMonitorZ;
280 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
281 class CVec_UpdateFailMalformedHTLCZ;
282 class CResult_FundingSignedDecodeErrorZ;
283 class CResult_NetworkGraphDecodeErrorZ;
284 class CResult_InvoiceSignOrCreationErrorZ;
285 class CVec_RouteHopZ;
286 class COption_FilterZ;
287 class COption_CustomOnionMessageContentsZ;
288 class CResult_NodeInfoDecodeErrorZ;
289 class CVec_NodeIdZ;
290 class CResult_RouteLightningErrorZ;
291 class CResult_ChannelPublicKeysDecodeErrorZ;
292 class CVec_u8Z;
293 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
294 class CResult_NonePaymentSendFailureZ;
295 class CVec_ThirtyTwoBytesZ;
296 class CResult_ClosingSignedDecodeErrorZ;
297 class CVec_CResult_NoneAPIErrorZZ;
298 class CResult_HolderCommitmentTransactionDecodeErrorZ;
299 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
300 class CResult_ChannelCounterpartyDecodeErrorZ;
301 class CResult_WarningMessageDecodeErrorZ;
302 class CResult_SignatureNoneZ;
303 class CVec_RouteHintHopZ;
304 class CResult_SecretKeyNoneZ;
305 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
306 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
307 class CResult_PaymentParametersDecodeErrorZ;
308 class CResult_PaymentPurposeDecodeErrorZ;
309 class CResult_InitDecodeErrorZ;
310 class CResult_OutPointDecodeErrorZ;
311 class CResult_BlindedRouteDecodeErrorZ;
312 class CVec_ChannelDetailsZ;
313 class CVec_MessageSendEventZ;
314 class CResult_SignDecodeErrorZ;
315 class COption_NetAddressZ;
316 class C2Tuple_OutPointScriptZ;
317 class CResult_RouteHintHopDecodeErrorZ;
318 class CResult_C2Tuple_SignatureSignatureZNoneZ;
319 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
320 class CResult_SharedSecretNoneZ;
321 class CVec_TxidZ;
322 class COption_AccessZ;
323 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
324 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
325 class CResult_PongDecodeErrorZ;
326 class CResult_CVec_CVec_u8ZZNoneZ;
327 class C2Tuple_SignatureSignatureZ;
328 class C2Tuple_PaymentHashPaymentSecretZ;
329 class C2Tuple_BlockHashChannelManagerZ;
330 class CResult_ChannelTransactionParametersDecodeErrorZ;
331 class CResult_AcceptChannelDecodeErrorZ;
332 class CVec_SignatureZ;
333 class CVec_u64Z;
334 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
335 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
336 class C2Tuple_PaymentHashPaymentIdZ;
337 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
338 class CResult_NoneErrorZ;
339 class CResult_COption_HTLCDestinationZDecodeErrorZ;
340 class CResult_InFlightHtlcsDecodeErrorZ;
341 class CResult_StringErrorZ;
342 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
343 class COption_EventZ;
344 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
345 class CResult_ChannelTypeFeaturesDecodeErrorZ;
346 class CResult_SiPrefixParseErrorZ;
347 class CVec_RouteHintZ;
348 class COption_u16Z;
349 class CResult_BlindedHopDecodeErrorZ;
350 class CVec_CVec_RouteHopZZ;
351 class CResult_TrustedCommitmentTransactionNoneZ;
352 class CResult_FixedPenaltyScorerDecodeErrorZ;
353 class CResult_NoneLightningErrorZ;
354 class CResult_NonePeerHandleErrorZ;
355 class CResult_COption_EventZDecodeErrorZ;
356 class CResult_CVec_SignatureZNoneZ;
357 class COption_CVec_NetAddressZZ;
358 class CResult__u832APIErrorZ;
359 class CResult_PaymentIdPaymentErrorZ;
360 class CResult_DescriptionCreationErrorZ;
361 class CResult_RoutingFeesDecodeErrorZ;
362 class CResult_PayeePubKeyErrorZ;
363 class CResult_COption_MonitorEventZDecodeErrorZ;
364 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
365 class CVec_C2Tuple_PublicKeyTypeZZ;
366 class CResult_InvoiceSemanticErrorZ;
367 class CResult_u32GraphSyncErrorZ;
368 class CResult_UpdateAddHTLCDecodeErrorZ;
369 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
370 class CResult_NoneAPIErrorZ;
371 class CVec_NetAddressZ;
372 class CResult_ChannelDetailsDecodeErrorZ;
373 class CVec_PublicKeyZ;
374 class CVec_C2Tuple_usizeTransactionZZ;
375 class CResult_QueryShortChannelIdsDecodeErrorZ;
376 class CVec_PhantomRouteHintsZ;
377 class COption_MonitorEventZ;
378 class C2Tuple_u64u64Z;
379 class COption_TypeZ;
380 class CResult_COption_TypeZDecodeErrorZ;
381 class C2Tuple_u32TxOutZ;
382 class CResult_UpdateFailHTLCDecodeErrorZ;
383 class CResult_InvoiceParseOrSemanticErrorZ;
384 class CResult_PaymentSecretNoneZ;
385 class CResult_ChannelConfigDecodeErrorZ;
386 class CVec_PrivateRouteZ;
387 class CResult_SpendableOutputDescriptorDecodeErrorZ;
388 class CResult_RevokeAndACKDecodeErrorZ;
389 class CResult_UnsignedChannelUpdateDecodeErrorZ;
390 class CResult_ShutdownDecodeErrorZ;
391 class CVec_EventZ;
392 class CResult_NoneSemanticErrorZ;
393 class CVec_MonitorEventZ;
394 class CVec_PaymentPreimageZ;
395 class CVec_C2Tuple_u32ScriptZZ;
396 class CResult_COption_ClosureReasonZDecodeErrorZ;
397 class CResult_PublicKeyErrorZ;
398 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
399 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
400 class CResult_NoneNoneZ;
401 class CResult_RouteParametersDecodeErrorZ;
402 class COption_ClosureReasonZ;
403 class CResult_NodeAliasDecodeErrorZ;
404 class CVec_APIErrorZ;
405 class CResult_PrivateRouteCreationErrorZ;
406 class CResult_boolPeerHandleErrorZ;
407 class CVec_UpdateFulfillHTLCZ;
408 class CResult_BlindedRouteNoneZ;
409 class CResult_AnnouncementSignaturesDecodeErrorZ;
410 class CResult_UpdateFulfillHTLCDecodeErrorZ;
411 class CResult_ChannelUpdateDecodeErrorZ;
412 class CResult_NodeFeaturesDecodeErrorZ;
413 class CVec_u5Z;
414 class CResult_InMemorySignerDecodeErrorZ;
415 class CResult_PaymentSecretAPIErrorZ;
416 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
417 class COption_ScalarZ;
418 class CResult_SignedRawInvoiceParseErrorZ;
419 class CResult_RouteDecodeErrorZ;
420 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
421 class COption_NoneZ;
422 class CVec_TxOutZ;
423 class CResult_ChannelUpdateInfoDecodeErrorZ;
424 class C2Tuple_u32ScriptZ;
425 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
426 class CVec_UpdateFailHTLCZ;
427 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
428
429 class Str {
430 private:
431         LDKStr self;
432 public:
433         Str(const Str&) = delete;
434         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
435         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
436         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
437         ~Str() { Str_free(self); }
438         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
439         LDKStr* operator &() { return &self; }
440         LDKStr* operator ->() { return &self; }
441         const LDKStr* operator &() const { return &self; }
442         const LDKStr* operator ->() const { return &self; }
443 };
444 class BlindedRoute {
445 private:
446         LDKBlindedRoute self;
447 public:
448         BlindedRoute(const BlindedRoute&) = delete;
449         BlindedRoute(BlindedRoute&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedRoute)); }
450         BlindedRoute(LDKBlindedRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedRoute)); }
451         operator LDKBlindedRoute() && { LDKBlindedRoute res = self; memset(&self, 0, sizeof(LDKBlindedRoute)); return res; }
452         ~BlindedRoute() { BlindedRoute_free(self); }
453         BlindedRoute& operator=(BlindedRoute&& o) { BlindedRoute_free(self); self = o.self; memset(&o, 0, sizeof(BlindedRoute)); return *this; }
454         LDKBlindedRoute* operator &() { return &self; }
455         LDKBlindedRoute* operator ->() { return &self; }
456         const LDKBlindedRoute* operator &() const { return &self; }
457         const LDKBlindedRoute* operator ->() const { return &self; }
458 };
459 class BlindedHop {
460 private:
461         LDKBlindedHop self;
462 public:
463         BlindedHop(const BlindedHop&) = delete;
464         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
465         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
466         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
467         ~BlindedHop() { BlindedHop_free(self); }
468         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
469         LDKBlindedHop* operator &() { return &self; }
470         LDKBlindedHop* operator ->() { return &self; }
471         const LDKBlindedHop* operator &() const { return &self; }
472         const LDKBlindedHop* operator ->() const { return &self; }
473 };
474 class CounterpartyCommitmentSecrets {
475 private:
476         LDKCounterpartyCommitmentSecrets self;
477 public:
478         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
479         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
480         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
481         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
482         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
483         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
484         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
485         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
486         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
487         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
488 };
489 class TxCreationKeys {
490 private:
491         LDKTxCreationKeys self;
492 public:
493         TxCreationKeys(const TxCreationKeys&) = delete;
494         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
495         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
496         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
497         ~TxCreationKeys() { TxCreationKeys_free(self); }
498         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
499         LDKTxCreationKeys* operator &() { return &self; }
500         LDKTxCreationKeys* operator ->() { return &self; }
501         const LDKTxCreationKeys* operator &() const { return &self; }
502         const LDKTxCreationKeys* operator ->() const { return &self; }
503 };
504 class ChannelPublicKeys {
505 private:
506         LDKChannelPublicKeys self;
507 public:
508         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
509         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
510         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
511         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
512         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
513         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
514         LDKChannelPublicKeys* operator &() { return &self; }
515         LDKChannelPublicKeys* operator ->() { return &self; }
516         const LDKChannelPublicKeys* operator &() const { return &self; }
517         const LDKChannelPublicKeys* operator ->() const { return &self; }
518 };
519 class HTLCOutputInCommitment {
520 private:
521         LDKHTLCOutputInCommitment self;
522 public:
523         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
524         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
525         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
526         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
527         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
528         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
529         LDKHTLCOutputInCommitment* operator &() { return &self; }
530         LDKHTLCOutputInCommitment* operator ->() { return &self; }
531         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
532         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
533 };
534 class ChannelTransactionParameters {
535 private:
536         LDKChannelTransactionParameters self;
537 public:
538         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
539         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
540         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
541         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
542         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
543         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
544         LDKChannelTransactionParameters* operator &() { return &self; }
545         LDKChannelTransactionParameters* operator ->() { return &self; }
546         const LDKChannelTransactionParameters* operator &() const { return &self; }
547         const LDKChannelTransactionParameters* operator ->() const { return &self; }
548 };
549 class CounterpartyChannelTransactionParameters {
550 private:
551         LDKCounterpartyChannelTransactionParameters self;
552 public:
553         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
554         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
555         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
556         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
557         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
558         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
559         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
560         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
561         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
562         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
563 };
564 class DirectedChannelTransactionParameters {
565 private:
566         LDKDirectedChannelTransactionParameters self;
567 public:
568         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
569         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
570         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
571         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
572         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
573         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
574         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
575         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
576         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
577         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
578 };
579 class HolderCommitmentTransaction {
580 private:
581         LDKHolderCommitmentTransaction self;
582 public:
583         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
584         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
585         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
586         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
587         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
588         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
589         LDKHolderCommitmentTransaction* operator &() { return &self; }
590         LDKHolderCommitmentTransaction* operator ->() { return &self; }
591         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
592         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
593 };
594 class BuiltCommitmentTransaction {
595 private:
596         LDKBuiltCommitmentTransaction self;
597 public:
598         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
599         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
600         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
601         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
602         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
603         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
604         LDKBuiltCommitmentTransaction* operator &() { return &self; }
605         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
606         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
607         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
608 };
609 class ClosingTransaction {
610 private:
611         LDKClosingTransaction self;
612 public:
613         ClosingTransaction(const ClosingTransaction&) = delete;
614         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
615         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
616         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
617         ~ClosingTransaction() { ClosingTransaction_free(self); }
618         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
619         LDKClosingTransaction* operator &() { return &self; }
620         LDKClosingTransaction* operator ->() { return &self; }
621         const LDKClosingTransaction* operator &() const { return &self; }
622         const LDKClosingTransaction* operator ->() const { return &self; }
623 };
624 class TrustedClosingTransaction {
625 private:
626         LDKTrustedClosingTransaction self;
627 public:
628         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
629         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
630         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
631         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
632         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
633         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
634         LDKTrustedClosingTransaction* operator &() { return &self; }
635         LDKTrustedClosingTransaction* operator ->() { return &self; }
636         const LDKTrustedClosingTransaction* operator &() const { return &self; }
637         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
638 };
639 class CommitmentTransaction {
640 private:
641         LDKCommitmentTransaction self;
642 public:
643         CommitmentTransaction(const CommitmentTransaction&) = delete;
644         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
645         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
646         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
647         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
648         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
649         LDKCommitmentTransaction* operator &() { return &self; }
650         LDKCommitmentTransaction* operator ->() { return &self; }
651         const LDKCommitmentTransaction* operator &() const { return &self; }
652         const LDKCommitmentTransaction* operator ->() const { return &self; }
653 };
654 class TrustedCommitmentTransaction {
655 private:
656         LDKTrustedCommitmentTransaction self;
657 public:
658         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
659         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
660         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
661         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
662         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
663         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
664         LDKTrustedCommitmentTransaction* operator &() { return &self; }
665         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
666         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
667         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
668 };
669 class ShutdownScript {
670 private:
671         LDKShutdownScript self;
672 public:
673         ShutdownScript(const ShutdownScript&) = delete;
674         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
675         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
676         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
677         ~ShutdownScript() { ShutdownScript_free(self); }
678         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
679         LDKShutdownScript* operator &() { return &self; }
680         LDKShutdownScript* operator ->() { return &self; }
681         const LDKShutdownScript* operator &() const { return &self; }
682         const LDKShutdownScript* operator ->() const { return &self; }
683 };
684 class InvalidShutdownScript {
685 private:
686         LDKInvalidShutdownScript self;
687 public:
688         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
689         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
690         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
691         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
692         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
693         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
694         LDKInvalidShutdownScript* operator &() { return &self; }
695         LDKInvalidShutdownScript* operator ->() { return &self; }
696         const LDKInvalidShutdownScript* operator &() const { return &self; }
697         const LDKInvalidShutdownScript* operator ->() const { return &self; }
698 };
699 class BackgroundProcessor {
700 private:
701         LDKBackgroundProcessor self;
702 public:
703         BackgroundProcessor(const BackgroundProcessor&) = delete;
704         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
705         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
706         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
707         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
708         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
709         LDKBackgroundProcessor* operator &() { return &self; }
710         LDKBackgroundProcessor* operator ->() { return &self; }
711         const LDKBackgroundProcessor* operator &() const { return &self; }
712         const LDKBackgroundProcessor* operator ->() const { return &self; }
713 };
714 class GossipSync {
715 private:
716         LDKGossipSync self;
717 public:
718         GossipSync(const GossipSync&) = delete;
719         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
720         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
721         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
722         ~GossipSync() { GossipSync_free(self); }
723         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
724         LDKGossipSync* operator &() { return &self; }
725         LDKGossipSync* operator ->() { return &self; }
726         const LDKGossipSync* operator &() const { return &self; }
727         const LDKGossipSync* operator ->() const { return &self; }
728 };
729 class RouteHop {
730 private:
731         LDKRouteHop self;
732 public:
733         RouteHop(const RouteHop&) = delete;
734         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
735         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
736         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
737         ~RouteHop() { RouteHop_free(self); }
738         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
739         LDKRouteHop* operator &() { return &self; }
740         LDKRouteHop* operator ->() { return &self; }
741         const LDKRouteHop* operator &() const { return &self; }
742         const LDKRouteHop* operator ->() const { return &self; }
743 };
744 class Route {
745 private:
746         LDKRoute self;
747 public:
748         Route(const Route&) = delete;
749         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
750         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
751         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
752         ~Route() { Route_free(self); }
753         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
754         LDKRoute* operator &() { return &self; }
755         LDKRoute* operator ->() { return &self; }
756         const LDKRoute* operator &() const { return &self; }
757         const LDKRoute* operator ->() const { return &self; }
758 };
759 class RouteParameters {
760 private:
761         LDKRouteParameters self;
762 public:
763         RouteParameters(const RouteParameters&) = delete;
764         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
765         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
766         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
767         ~RouteParameters() { RouteParameters_free(self); }
768         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
769         LDKRouteParameters* operator &() { return &self; }
770         LDKRouteParameters* operator ->() { return &self; }
771         const LDKRouteParameters* operator &() const { return &self; }
772         const LDKRouteParameters* operator ->() const { return &self; }
773 };
774 class PaymentParameters {
775 private:
776         LDKPaymentParameters self;
777 public:
778         PaymentParameters(const PaymentParameters&) = delete;
779         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
780         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
781         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
782         ~PaymentParameters() { PaymentParameters_free(self); }
783         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
784         LDKPaymentParameters* operator &() { return &self; }
785         LDKPaymentParameters* operator ->() { return &self; }
786         const LDKPaymentParameters* operator &() const { return &self; }
787         const LDKPaymentParameters* operator ->() const { return &self; }
788 };
789 class RouteHint {
790 private:
791         LDKRouteHint self;
792 public:
793         RouteHint(const RouteHint&) = delete;
794         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
795         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
796         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
797         ~RouteHint() { RouteHint_free(self); }
798         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
799         LDKRouteHint* operator &() { return &self; }
800         LDKRouteHint* operator ->() { return &self; }
801         const LDKRouteHint* operator &() const { return &self; }
802         const LDKRouteHint* operator ->() const { return &self; }
803 };
804 class RouteHintHop {
805 private:
806         LDKRouteHintHop self;
807 public:
808         RouteHintHop(const RouteHintHop&) = delete;
809         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
810         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
811         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
812         ~RouteHintHop() { RouteHintHop_free(self); }
813         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
814         LDKRouteHintHop* operator &() { return &self; }
815         LDKRouteHintHop* operator ->() { return &self; }
816         const LDKRouteHintHop* operator &() const { return &self; }
817         const LDKRouteHintHop* operator ->() const { return &self; }
818 };
819 class BroadcasterInterface {
820 private:
821         LDKBroadcasterInterface self;
822 public:
823         BroadcasterInterface(const BroadcasterInterface&) = delete;
824         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
825         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
826         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
827         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
828         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
829         LDKBroadcasterInterface* operator &() { return &self; }
830         LDKBroadcasterInterface* operator ->() { return &self; }
831         const LDKBroadcasterInterface* operator &() const { return &self; }
832         const LDKBroadcasterInterface* operator ->() const { return &self; }
833         /**
834          *  Sends a transaction out to (hopefully) be mined.
835          */
836         inline void broadcast_transaction(struct LDKTransaction tx);
837 };
838 class ConfirmationTarget {
839 private:
840         LDKConfirmationTarget self;
841 public:
842         ConfirmationTarget(const ConfirmationTarget&) = delete;
843         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
844         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
845         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
846         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
847         LDKConfirmationTarget* operator &() { return &self; }
848         LDKConfirmationTarget* operator ->() { return &self; }
849         const LDKConfirmationTarget* operator &() const { return &self; }
850         const LDKConfirmationTarget* operator ->() const { return &self; }
851 };
852 class FeeEstimator {
853 private:
854         LDKFeeEstimator self;
855 public:
856         FeeEstimator(const FeeEstimator&) = delete;
857         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
858         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
859         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
860         ~FeeEstimator() { FeeEstimator_free(self); }
861         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
862         LDKFeeEstimator* operator &() { return &self; }
863         LDKFeeEstimator* operator ->() { return &self; }
864         const LDKFeeEstimator* operator &() const { return &self; }
865         const LDKFeeEstimator* operator ->() const { return &self; }
866         /**
867          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
868          * 
869          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
870          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
871          * 
872          *  The following unit conversions can be used to convert to sats/KW:
873          *   * satoshis-per-byte * 250
874          *   * satoshis-per-kbyte / 4
875          */
876         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
877 };
878 class PaymentPurpose {
879 private:
880         LDKPaymentPurpose self;
881 public:
882         PaymentPurpose(const PaymentPurpose&) = delete;
883         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
884         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
885         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
886         ~PaymentPurpose() { PaymentPurpose_free(self); }
887         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
888         LDKPaymentPurpose* operator &() { return &self; }
889         LDKPaymentPurpose* operator ->() { return &self; }
890         const LDKPaymentPurpose* operator &() const { return &self; }
891         const LDKPaymentPurpose* operator ->() const { return &self; }
892 };
893 class ClosureReason {
894 private:
895         LDKClosureReason self;
896 public:
897         ClosureReason(const ClosureReason&) = delete;
898         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
899         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
900         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
901         ~ClosureReason() { ClosureReason_free(self); }
902         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
903         LDKClosureReason* operator &() { return &self; }
904         LDKClosureReason* operator ->() { return &self; }
905         const LDKClosureReason* operator &() const { return &self; }
906         const LDKClosureReason* operator ->() const { return &self; }
907 };
908 class HTLCDestination {
909 private:
910         LDKHTLCDestination self;
911 public:
912         HTLCDestination(const HTLCDestination&) = delete;
913         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
914         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
915         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
916         ~HTLCDestination() { HTLCDestination_free(self); }
917         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
918         LDKHTLCDestination* operator &() { return &self; }
919         LDKHTLCDestination* operator ->() { return &self; }
920         const LDKHTLCDestination* operator &() const { return &self; }
921         const LDKHTLCDestination* operator ->() const { return &self; }
922 };
923 class Event {
924 private:
925         LDKEvent self;
926 public:
927         Event(const Event&) = delete;
928         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
929         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
930         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
931         ~Event() { Event_free(self); }
932         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
933         LDKEvent* operator &() { return &self; }
934         LDKEvent* operator ->() { return &self; }
935         const LDKEvent* operator &() const { return &self; }
936         const LDKEvent* operator ->() const { return &self; }
937 };
938 class MessageSendEvent {
939 private:
940         LDKMessageSendEvent self;
941 public:
942         MessageSendEvent(const MessageSendEvent&) = delete;
943         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
944         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
945         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
946         ~MessageSendEvent() { MessageSendEvent_free(self); }
947         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
948         LDKMessageSendEvent* operator &() { return &self; }
949         LDKMessageSendEvent* operator ->() { return &self; }
950         const LDKMessageSendEvent* operator &() const { return &self; }
951         const LDKMessageSendEvent* operator ->() const { return &self; }
952 };
953 class MessageSendEventsProvider {
954 private:
955         LDKMessageSendEventsProvider self;
956 public:
957         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
958         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
959         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
960         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
961         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
962         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
963         LDKMessageSendEventsProvider* operator &() { return &self; }
964         LDKMessageSendEventsProvider* operator ->() { return &self; }
965         const LDKMessageSendEventsProvider* operator &() const { return &self; }
966         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
967         /**
968          *  Gets the list of pending events which were generated by previous actions, clearing the list
969          *  in the process.
970          */
971         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
972 };
973 class OnionMessageProvider {
974 private:
975         LDKOnionMessageProvider self;
976 public:
977         OnionMessageProvider(const OnionMessageProvider&) = delete;
978         OnionMessageProvider(OnionMessageProvider&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageProvider)); }
979         OnionMessageProvider(LDKOnionMessageProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageProvider)); }
980         operator LDKOnionMessageProvider() && { LDKOnionMessageProvider res = self; memset(&self, 0, sizeof(LDKOnionMessageProvider)); return res; }
981         ~OnionMessageProvider() { OnionMessageProvider_free(self); }
982         OnionMessageProvider& operator=(OnionMessageProvider&& o) { OnionMessageProvider_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageProvider)); return *this; }
983         LDKOnionMessageProvider* operator &() { return &self; }
984         LDKOnionMessageProvider* operator ->() { return &self; }
985         const LDKOnionMessageProvider* operator &() const { return &self; }
986         const LDKOnionMessageProvider* operator ->() const { return &self; }
987         /**
988          *  Gets the next pending onion message for the peer with the given node id.
989          * 
990          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
991          */
992         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
993 };
994 class EventsProvider {
995 private:
996         LDKEventsProvider self;
997 public:
998         EventsProvider(const EventsProvider&) = delete;
999         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1000         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1001         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1002         ~EventsProvider() { EventsProvider_free(self); }
1003         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1004         LDKEventsProvider* operator &() { return &self; }
1005         LDKEventsProvider* operator ->() { return &self; }
1006         const LDKEventsProvider* operator &() const { return &self; }
1007         const LDKEventsProvider* operator ->() const { return &self; }
1008         /**
1009          *  Processes any events generated since the last call using the given event handler.
1010          * 
1011          *  See the trait-level documentation for requirements.
1012          */
1013         inline void process_pending_events(struct LDKEventHandler handler);
1014 };
1015 class EventHandler {
1016 private:
1017         LDKEventHandler self;
1018 public:
1019         EventHandler(const EventHandler&) = delete;
1020         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1021         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1022         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1023         ~EventHandler() { EventHandler_free(self); }
1024         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1025         LDKEventHandler* operator &() { return &self; }
1026         LDKEventHandler* operator ->() { return &self; }
1027         const LDKEventHandler* operator &() const { return &self; }
1028         const LDKEventHandler* operator ->() const { return &self; }
1029         /**
1030          *  Handles the given [`Event`].
1031          * 
1032          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1033          */
1034         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
1035 };
1036 class BestBlock {
1037 private:
1038         LDKBestBlock self;
1039 public:
1040         BestBlock(const BestBlock&) = delete;
1041         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1042         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1043         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1044         ~BestBlock() { BestBlock_free(self); }
1045         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1046         LDKBestBlock* operator &() { return &self; }
1047         LDKBestBlock* operator ->() { return &self; }
1048         const LDKBestBlock* operator &() const { return &self; }
1049         const LDKBestBlock* operator ->() const { return &self; }
1050 };
1051 class AccessError {
1052 private:
1053         LDKAccessError self;
1054 public:
1055         AccessError(const AccessError&) = delete;
1056         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
1057         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
1058         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
1059         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
1060         LDKAccessError* operator &() { return &self; }
1061         LDKAccessError* operator ->() { return &self; }
1062         const LDKAccessError* operator &() const { return &self; }
1063         const LDKAccessError* operator ->() const { return &self; }
1064 };
1065 class Access {
1066 private:
1067         LDKAccess self;
1068 public:
1069         Access(const Access&) = delete;
1070         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
1071         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
1072         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
1073         ~Access() { Access_free(self); }
1074         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
1075         LDKAccess* operator &() { return &self; }
1076         LDKAccess* operator ->() { return &self; }
1077         const LDKAccess* operator &() const { return &self; }
1078         const LDKAccess* operator ->() const { return &self; }
1079         /**
1080          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
1081          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
1082          *  is unknown.
1083          * 
1084          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
1085          */
1086         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
1087 };
1088 class Listen {
1089 private:
1090         LDKListen self;
1091 public:
1092         Listen(const Listen&) = delete;
1093         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1094         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1095         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1096         ~Listen() { Listen_free(self); }
1097         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1098         LDKListen* operator &() { return &self; }
1099         LDKListen* operator ->() { return &self; }
1100         const LDKListen* operator &() const { return &self; }
1101         const LDKListen* operator ->() const { return &self; }
1102         /**
1103          *  Notifies the listener that a block was added at the given height, with the transaction data
1104          *  possibly filtered.
1105          */
1106         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1107         /**
1108          *  Notifies the listener that a block was added at the given height.
1109          */
1110         inline void block_connected(struct LDKu8slice block, uint32_t height);
1111         /**
1112          *  Notifies the listener that a block was removed at the given height.
1113          */
1114         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1115 };
1116 class Confirm {
1117 private:
1118         LDKConfirm self;
1119 public:
1120         Confirm(const Confirm&) = delete;
1121         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1122         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1123         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1124         ~Confirm() { Confirm_free(self); }
1125         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1126         LDKConfirm* operator &() { return &self; }
1127         LDKConfirm* operator ->() { return &self; }
1128         const LDKConfirm* operator &() const { return &self; }
1129         const LDKConfirm* operator ->() const { return &self; }
1130         /**
1131          *  Processes transactions confirmed in a block with a given header and height.
1132          * 
1133          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
1134          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1135          *  appearing in the same block do not need to be included in the same call; instead, multiple
1136          *  calls with additional transactions may be made so long as they are made in [chain order].
1137          * 
1138          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1139          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1140          *  longer in the chain as of the last call to [`best_block_updated`].
1141          * 
1142          *  [chain order]: Confirm#order
1143          *  [`best_block_updated`]: Self::best_block_updated
1144          */
1145         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1146         /**
1147          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
1148          * 
1149          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
1150          *  reorganized out of the best chain. Once called, the given transaction will not be returned
1151          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
1152          * 
1153          *  [`get_relevant_txids`]: Self::get_relevant_txids
1154          *  [`transactions_confirmed`]: Self::transactions_confirmed
1155          */
1156         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1157         /**
1158          *  Processes an update to the best header connected at the given height.
1159          * 
1160          *  Should be called when a new header is available but may be skipped for intermediary blocks
1161          *  if they become available at the same time.
1162          */
1163         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1164         /**
1165          *  Returns transactions that should be monitored for reorganization out of the chain.
1166          * 
1167          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
1168          *  confirmations to be safe from a chain reorganization. Will not include any transactions
1169          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
1170          * 
1171          *  May be called to determine the subset of transactions that must still be monitored for
1172          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1173          *  other interface methods. Thus, this is useful to determine which transactions may need to be
1174          *  given to [`transaction_unconfirmed`].
1175          * 
1176          *  [`transactions_confirmed`]: Self::transactions_confirmed
1177          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1178          */
1179         inline LDK::CVec_TxidZ get_relevant_txids();
1180 };
1181 class ChannelMonitorUpdateStatus {
1182 private:
1183         LDKChannelMonitorUpdateStatus self;
1184 public:
1185         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
1186         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
1187         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
1188         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
1189         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
1190         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
1191         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
1192         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
1193         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
1194 };
1195 class Watch {
1196 private:
1197         LDKWatch self;
1198 public:
1199         Watch(const Watch&) = delete;
1200         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1201         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1202         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1203         ~Watch() { Watch_free(self); }
1204         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1205         LDKWatch* operator &() { return &self; }
1206         LDKWatch* operator ->() { return &self; }
1207         const LDKWatch* operator &() const { return &self; }
1208         const LDKWatch* operator ->() const { return &self; }
1209         /**
1210          *  Watches a channel identified by `funding_txo` using `monitor`.
1211          * 
1212          *  Implementations are responsible for watching the chain for the funding transaction along
1213          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1214          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1215          * 
1216          *  Note: this interface MUST error with [`ChannelMonitorUpdateStatus::PermanentFailure`] if
1217          *  the given `funding_txo` has previously been registered via `watch_channel`.
1218          * 
1219          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1220          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1221          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1222          */
1223         inline LDK::ChannelMonitorUpdateStatus watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1224         /**
1225          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1226          * 
1227          *  Implementations must call [`update_monitor`] with the given update. See
1228          *  [`ChannelMonitorUpdateStatus`] for invariants around returning an error.
1229          * 
1230          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1231          */
1232         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1233         /**
1234          *  Returns any monitor events since the last call. Subsequent calls must only return new
1235          *  events.
1236          * 
1237          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1238          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1239          *  to disk.
1240          * 
1241          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1242          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
1243          */
1244         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1245 };
1246 class Filter {
1247 private:
1248         LDKFilter self;
1249 public:
1250         Filter(const Filter&) = delete;
1251         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1252         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1253         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1254         ~Filter() { Filter_free(self); }
1255         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1256         LDKFilter* operator &() { return &self; }
1257         LDKFilter* operator ->() { return &self; }
1258         const LDKFilter* operator &() const { return &self; }
1259         const LDKFilter* operator ->() const { return &self; }
1260         /**
1261          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1262          *  a spending condition.
1263          */
1264         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1265         /**
1266          *  Registers interest in spends of a transaction output.
1267          * 
1268          *  Note that this method might be called during processing of a new block. You therefore need
1269          *  to ensure that also dependent output spents within an already connected block are correctly
1270          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
1271          *  registered mid-processing.
1272          */
1273         inline void register_output(struct LDKWatchedOutput output);
1274 };
1275 class WatchedOutput {
1276 private:
1277         LDKWatchedOutput self;
1278 public:
1279         WatchedOutput(const WatchedOutput&) = delete;
1280         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1281         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1282         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1283         ~WatchedOutput() { WatchedOutput_free(self); }
1284         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1285         LDKWatchedOutput* operator &() { return &self; }
1286         LDKWatchedOutput* operator ->() { return &self; }
1287         const LDKWatchedOutput* operator &() const { return &self; }
1288         const LDKWatchedOutput* operator ->() const { return &self; }
1289 };
1290 class Score {
1291 private:
1292         LDKScore self;
1293 public:
1294         Score(const Score&) = delete;
1295         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1296         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1297         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1298         ~Score() { Score_free(self); }
1299         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1300         LDKScore* operator &() { return &self; }
1301         LDKScore* operator ->() { return &self; }
1302         const LDKScore* operator &() const { return &self; }
1303         const LDKScore* operator ->() const { return &self; }
1304         /**
1305          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1306          *  given channel in the direction from `source` to `target`.
1307          * 
1308          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1309          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1310          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1311          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1312          *  Thus, implementations should be overflow-safe.
1313          */
1314         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);
1315         /**
1316          *  Handles updating channel penalties after failing to route through a channel.
1317          */
1318         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1319         /**
1320          *  Handles updating channel penalties after successfully routing along a path.
1321          */
1322         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1323         /**
1324          *  Handles updating channel penalties after a probe over the given path failed.
1325          */
1326         inline void probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1327         /**
1328          *  Handles updating channel penalties after a probe over the given path succeeded.
1329          */
1330         inline void probe_successful(struct LDKCVec_RouteHopZ path);
1331 };
1332 class LockableScore {
1333 private:
1334         LDKLockableScore self;
1335 public:
1336         LockableScore(const LockableScore&) = delete;
1337         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1338         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1339         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1340         ~LockableScore() { LockableScore_free(self); }
1341         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1342         LDKLockableScore* operator &() { return &self; }
1343         LDKLockableScore* operator ->() { return &self; }
1344         const LDKLockableScore* operator &() const { return &self; }
1345         const LDKLockableScore* operator ->() const { return &self; }
1346         /**
1347          *  Returns the locked scorer.
1348          */
1349         inline LDK::Score lock();
1350 };
1351 class WriteableScore {
1352 private:
1353         LDKWriteableScore self;
1354 public:
1355         WriteableScore(const WriteableScore&) = delete;
1356         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1357         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1358         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1359         ~WriteableScore() { WriteableScore_free(self); }
1360         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1361         LDKWriteableScore* operator &() { return &self; }
1362         LDKWriteableScore* operator ->() { return &self; }
1363         const LDKWriteableScore* operator &() const { return &self; }
1364         const LDKWriteableScore* operator ->() const { return &self; }
1365 };
1366 class MultiThreadedLockableScore {
1367 private:
1368         LDKMultiThreadedLockableScore self;
1369 public:
1370         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1371         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1372         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1373         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1374         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1375         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1376         LDKMultiThreadedLockableScore* operator &() { return &self; }
1377         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1378         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1379         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1380 };
1381 class MultiThreadedScoreLock {
1382 private:
1383         LDKMultiThreadedScoreLock self;
1384 public:
1385         MultiThreadedScoreLock(const MultiThreadedScoreLock&) = delete;
1386         MultiThreadedScoreLock(MultiThreadedScoreLock&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLock)); }
1387         MultiThreadedScoreLock(LDKMultiThreadedScoreLock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLock)); }
1388         operator LDKMultiThreadedScoreLock() && { LDKMultiThreadedScoreLock res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLock)); return res; }
1389         ~MultiThreadedScoreLock() { MultiThreadedScoreLock_free(self); }
1390         MultiThreadedScoreLock& operator=(MultiThreadedScoreLock&& o) { MultiThreadedScoreLock_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLock)); return *this; }
1391         LDKMultiThreadedScoreLock* operator &() { return &self; }
1392         LDKMultiThreadedScoreLock* operator ->() { return &self; }
1393         const LDKMultiThreadedScoreLock* operator &() const { return &self; }
1394         const LDKMultiThreadedScoreLock* operator ->() const { return &self; }
1395 };
1396 class ChannelUsage {
1397 private:
1398         LDKChannelUsage self;
1399 public:
1400         ChannelUsage(const ChannelUsage&) = delete;
1401         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1402         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1403         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1404         ~ChannelUsage() { ChannelUsage_free(self); }
1405         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1406         LDKChannelUsage* operator &() { return &self; }
1407         LDKChannelUsage* operator ->() { return &self; }
1408         const LDKChannelUsage* operator &() const { return &self; }
1409         const LDKChannelUsage* operator ->() const { return &self; }
1410 };
1411 class FixedPenaltyScorer {
1412 private:
1413         LDKFixedPenaltyScorer self;
1414 public:
1415         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1416         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1417         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1418         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1419         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1420         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1421         LDKFixedPenaltyScorer* operator &() { return &self; }
1422         LDKFixedPenaltyScorer* operator ->() { return &self; }
1423         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1424         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1425 };
1426 class ProbabilisticScorer {
1427 private:
1428         LDKProbabilisticScorer self;
1429 public:
1430         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1431         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1432         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1433         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1434         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1435         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1436         LDKProbabilisticScorer* operator &() { return &self; }
1437         LDKProbabilisticScorer* operator ->() { return &self; }
1438         const LDKProbabilisticScorer* operator &() const { return &self; }
1439         const LDKProbabilisticScorer* operator ->() const { return &self; }
1440 };
1441 class ProbabilisticScoringParameters {
1442 private:
1443         LDKProbabilisticScoringParameters self;
1444 public:
1445         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1446         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1447         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1448         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1449         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1450         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1451         LDKProbabilisticScoringParameters* operator &() { return &self; }
1452         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1453         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1454         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1455 };
1456 class InitFeatures {
1457 private:
1458         LDKInitFeatures self;
1459 public:
1460         InitFeatures(const InitFeatures&) = delete;
1461         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1462         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1463         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1464         ~InitFeatures() { InitFeatures_free(self); }
1465         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1466         LDKInitFeatures* operator &() { return &self; }
1467         LDKInitFeatures* operator ->() { return &self; }
1468         const LDKInitFeatures* operator &() const { return &self; }
1469         const LDKInitFeatures* operator ->() const { return &self; }
1470 };
1471 class NodeFeatures {
1472 private:
1473         LDKNodeFeatures self;
1474 public:
1475         NodeFeatures(const NodeFeatures&) = delete;
1476         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1477         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1478         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1479         ~NodeFeatures() { NodeFeatures_free(self); }
1480         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1481         LDKNodeFeatures* operator &() { return &self; }
1482         LDKNodeFeatures* operator ->() { return &self; }
1483         const LDKNodeFeatures* operator &() const { return &self; }
1484         const LDKNodeFeatures* operator ->() const { return &self; }
1485 };
1486 class ChannelFeatures {
1487 private:
1488         LDKChannelFeatures self;
1489 public:
1490         ChannelFeatures(const ChannelFeatures&) = delete;
1491         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1492         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1493         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1494         ~ChannelFeatures() { ChannelFeatures_free(self); }
1495         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1496         LDKChannelFeatures* operator &() { return &self; }
1497         LDKChannelFeatures* operator ->() { return &self; }
1498         const LDKChannelFeatures* operator &() const { return &self; }
1499         const LDKChannelFeatures* operator ->() const { return &self; }
1500 };
1501 class InvoiceFeatures {
1502 private:
1503         LDKInvoiceFeatures self;
1504 public:
1505         InvoiceFeatures(const InvoiceFeatures&) = delete;
1506         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1507         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1508         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1509         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1510         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1511         LDKInvoiceFeatures* operator &() { return &self; }
1512         LDKInvoiceFeatures* operator ->() { return &self; }
1513         const LDKInvoiceFeatures* operator &() const { return &self; }
1514         const LDKInvoiceFeatures* operator ->() const { return &self; }
1515 };
1516 class ChannelTypeFeatures {
1517 private:
1518         LDKChannelTypeFeatures self;
1519 public:
1520         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1521         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1522         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1523         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1524         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1525         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1526         LDKChannelTypeFeatures* operator &() { return &self; }
1527         LDKChannelTypeFeatures* operator ->() { return &self; }
1528         const LDKChannelTypeFeatures* operator &() const { return &self; }
1529         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1530 };
1531 class CustomOnionMessageContents {
1532 private:
1533         LDKCustomOnionMessageContents self;
1534 public:
1535         CustomOnionMessageContents(const CustomOnionMessageContents&) = delete;
1536         CustomOnionMessageContents(CustomOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageContents)); }
1537         CustomOnionMessageContents(LDKCustomOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageContents)); }
1538         operator LDKCustomOnionMessageContents() && { LDKCustomOnionMessageContents res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageContents)); return res; }
1539         ~CustomOnionMessageContents() { CustomOnionMessageContents_free(self); }
1540         CustomOnionMessageContents& operator=(CustomOnionMessageContents&& o) { CustomOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageContents)); return *this; }
1541         LDKCustomOnionMessageContents* operator &() { return &self; }
1542         LDKCustomOnionMessageContents* operator ->() { return &self; }
1543         const LDKCustomOnionMessageContents* operator &() const { return &self; }
1544         const LDKCustomOnionMessageContents* operator ->() const { return &self; }
1545         /**
1546          *  Returns the TLV type identifying the message contents. MUST be >= 64.
1547          */
1548         inline uint64_t tlv_type();
1549 };
1550 class NodeId {
1551 private:
1552         LDKNodeId self;
1553 public:
1554         NodeId(const NodeId&) = delete;
1555         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1556         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1557         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1558         ~NodeId() { NodeId_free(self); }
1559         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1560         LDKNodeId* operator &() { return &self; }
1561         LDKNodeId* operator ->() { return &self; }
1562         const LDKNodeId* operator &() const { return &self; }
1563         const LDKNodeId* operator ->() const { return &self; }
1564 };
1565 class NetworkGraph {
1566 private:
1567         LDKNetworkGraph self;
1568 public:
1569         NetworkGraph(const NetworkGraph&) = delete;
1570         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1571         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1572         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1573         ~NetworkGraph() { NetworkGraph_free(self); }
1574         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1575         LDKNetworkGraph* operator &() { return &self; }
1576         LDKNetworkGraph* operator ->() { return &self; }
1577         const LDKNetworkGraph* operator &() const { return &self; }
1578         const LDKNetworkGraph* operator ->() const { return &self; }
1579 };
1580 class ReadOnlyNetworkGraph {
1581 private:
1582         LDKReadOnlyNetworkGraph self;
1583 public:
1584         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1585         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1586         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1587         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1588         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1589         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1590         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1591         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1592         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1593         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1594 };
1595 class NetworkUpdate {
1596 private:
1597         LDKNetworkUpdate self;
1598 public:
1599         NetworkUpdate(const NetworkUpdate&) = delete;
1600         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1601         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1602         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1603         ~NetworkUpdate() { NetworkUpdate_free(self); }
1604         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1605         LDKNetworkUpdate* operator &() { return &self; }
1606         LDKNetworkUpdate* operator ->() { return &self; }
1607         const LDKNetworkUpdate* operator &() const { return &self; }
1608         const LDKNetworkUpdate* operator ->() const { return &self; }
1609 };
1610 class P2PGossipSync {
1611 private:
1612         LDKP2PGossipSync self;
1613 public:
1614         P2PGossipSync(const P2PGossipSync&) = delete;
1615         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1616         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1617         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1618         ~P2PGossipSync() { P2PGossipSync_free(self); }
1619         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1620         LDKP2PGossipSync* operator &() { return &self; }
1621         LDKP2PGossipSync* operator ->() { return &self; }
1622         const LDKP2PGossipSync* operator &() const { return &self; }
1623         const LDKP2PGossipSync* operator ->() const { return &self; }
1624 };
1625 class ChannelUpdateInfo {
1626 private:
1627         LDKChannelUpdateInfo self;
1628 public:
1629         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1630         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1631         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1632         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1633         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1634         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1635         LDKChannelUpdateInfo* operator &() { return &self; }
1636         LDKChannelUpdateInfo* operator ->() { return &self; }
1637         const LDKChannelUpdateInfo* operator &() const { return &self; }
1638         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1639 };
1640 class ChannelInfo {
1641 private:
1642         LDKChannelInfo self;
1643 public:
1644         ChannelInfo(const ChannelInfo&) = delete;
1645         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1646         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1647         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1648         ~ChannelInfo() { ChannelInfo_free(self); }
1649         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1650         LDKChannelInfo* operator &() { return &self; }
1651         LDKChannelInfo* operator ->() { return &self; }
1652         const LDKChannelInfo* operator &() const { return &self; }
1653         const LDKChannelInfo* operator ->() const { return &self; }
1654 };
1655 class DirectedChannelInfo {
1656 private:
1657         LDKDirectedChannelInfo self;
1658 public:
1659         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1660         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1661         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1662         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1663         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1664         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1665         LDKDirectedChannelInfo* operator &() { return &self; }
1666         LDKDirectedChannelInfo* operator ->() { return &self; }
1667         const LDKDirectedChannelInfo* operator &() const { return &self; }
1668         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1669 };
1670 class EffectiveCapacity {
1671 private:
1672         LDKEffectiveCapacity self;
1673 public:
1674         EffectiveCapacity(const EffectiveCapacity&) = delete;
1675         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1676         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1677         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1678         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1679         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1680         LDKEffectiveCapacity* operator &() { return &self; }
1681         LDKEffectiveCapacity* operator ->() { return &self; }
1682         const LDKEffectiveCapacity* operator &() const { return &self; }
1683         const LDKEffectiveCapacity* operator ->() const { return &self; }
1684 };
1685 class RoutingFees {
1686 private:
1687         LDKRoutingFees self;
1688 public:
1689         RoutingFees(const RoutingFees&) = delete;
1690         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1691         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1692         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1693         ~RoutingFees() { RoutingFees_free(self); }
1694         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1695         LDKRoutingFees* operator &() { return &self; }
1696         LDKRoutingFees* operator ->() { return &self; }
1697         const LDKRoutingFees* operator &() const { return &self; }
1698         const LDKRoutingFees* operator ->() const { return &self; }
1699 };
1700 class NodeAnnouncementInfo {
1701 private:
1702         LDKNodeAnnouncementInfo self;
1703 public:
1704         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1705         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1706         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1707         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1708         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1709         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1710         LDKNodeAnnouncementInfo* operator &() { return &self; }
1711         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1712         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1713         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1714 };
1715 class NodeAlias {
1716 private:
1717         LDKNodeAlias self;
1718 public:
1719         NodeAlias(const NodeAlias&) = delete;
1720         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
1721         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
1722         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
1723         ~NodeAlias() { NodeAlias_free(self); }
1724         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
1725         LDKNodeAlias* operator &() { return &self; }
1726         LDKNodeAlias* operator ->() { return &self; }
1727         const LDKNodeAlias* operator &() const { return &self; }
1728         const LDKNodeAlias* operator ->() const { return &self; }
1729 };
1730 class NodeInfo {
1731 private:
1732         LDKNodeInfo self;
1733 public:
1734         NodeInfo(const NodeInfo&) = delete;
1735         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1736         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1737         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1738         ~NodeInfo() { NodeInfo_free(self); }
1739         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1740         LDKNodeInfo* operator &() { return &self; }
1741         LDKNodeInfo* operator ->() { return &self; }
1742         const LDKNodeInfo* operator &() const { return &self; }
1743         const LDKNodeInfo* operator ->() const { return &self; }
1744 };
1745 class DelayedPaymentOutputDescriptor {
1746 private:
1747         LDKDelayedPaymentOutputDescriptor self;
1748 public:
1749         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1750         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1751         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1752         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1753         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1754         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1755         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1756         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1757         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1758         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1759 };
1760 class StaticPaymentOutputDescriptor {
1761 private:
1762         LDKStaticPaymentOutputDescriptor self;
1763 public:
1764         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1765         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1766         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1767         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1768         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1769         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1770         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1771         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1772         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1773         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1774 };
1775 class SpendableOutputDescriptor {
1776 private:
1777         LDKSpendableOutputDescriptor self;
1778 public:
1779         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1780         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1781         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1782         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1783         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1784         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1785         LDKSpendableOutputDescriptor* operator &() { return &self; }
1786         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1787         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1788         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1789 };
1790 class BaseSign {
1791 private:
1792         LDKBaseSign self;
1793 public:
1794         BaseSign(const BaseSign&) = delete;
1795         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1796         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1797         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1798         ~BaseSign() { BaseSign_free(self); }
1799         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1800         LDKBaseSign* operator &() { return &self; }
1801         LDKBaseSign* operator ->() { return &self; }
1802         const LDKBaseSign* operator &() const { return &self; }
1803         const LDKBaseSign* operator ->() const { return &self; }
1804         /**
1805          *  Gets the per-commitment point for a specific commitment number
1806          * 
1807          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1808          */
1809         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1810         /**
1811          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1812          * 
1813          *  An external signer implementation should error here if the commitment was already signed
1814          *  and should refuse to sign it in the future.
1815          * 
1816          *  May be called more than once for the same index.
1817          * 
1818          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1819          */
1820         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1821         /**
1822          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1823          * 
1824          *  This is required in order for the signer to make sure that releasing a commitment
1825          *  secret won't leave us without a broadcastable holder transaction.
1826          *  Policy checks should be implemented in this function, including checking the amount
1827          *  sent to us and checking the HTLCs.
1828          * 
1829          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1830          *  A validating signer should ensure that an HTLC output is removed only when the matching
1831          *  preimage is provided, or when the value to holder is restored.
1832          * 
1833          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1834          *  irrelevant or duplicate preimages.
1835          */
1836         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
1837         /**
1838          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1839          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1840          *  Sign object uniquely and lookup or re-derive its keys.
1841          */
1842         inline LDKThirtyTwoBytes channel_keys_id();
1843         /**
1844          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1845          * 
1846          *  Note that if signing fails or is rejected, the channel will be force-closed.
1847          * 
1848          *  Policy checks should be implemented in this function, including checking the amount
1849          *  sent to us and checking the HTLCs.
1850          * 
1851          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1852          *  A validating signer should ensure that an HTLC output is removed only when the matching
1853          *  preimage is provided, or when the value to holder is restored.
1854          * 
1855          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1856          *  irrelevant or duplicate preimages.
1857          */
1858         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
1859         /**
1860          *  Validate the counterparty's revocation.
1861          * 
1862          *  This is required in order for the signer to make sure that the state has moved
1863          *  forward and it is safe to sign the next counterparty commitment.
1864          */
1865         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1866         /**
1867          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1868          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1869          *  latest commitment_tx when we initiate a force-close.
1870          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1871          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1872          *  the latest.
1873          *  This may be called multiple times for the same transaction.
1874          * 
1875          *  An external signer implementation should check that the commitment has not been revoked.
1876          * 
1877          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1878          */
1879         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1880         /**
1881          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1882          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1883          * 
1884          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1885          *  similar, but only a signature for the input at index `input` should be signed for here.
1886          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1887          *  to an upcoming timelock expiration.
1888          * 
1889          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1890          * 
1891          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1892          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1893          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1894          *  so).
1895          */
1896         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]);
1897         /**
1898          *  Create a signature for the given input in a transaction spending a commitment transaction
1899          *  HTLC output when our counterparty broadcasts an old state.
1900          * 
1901          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1902          *  similar, but only a signature for the input at index `input` should be signed for here.
1903          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1904          *  to an upcoming timelock expiration.
1905          * 
1906          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1907          * 
1908          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1909          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1910          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1911          *  so).
1912          * 
1913          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1914          *  (which is committed to in the BIP 143 signatures).
1915          */
1916         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);
1917         /**
1918          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1919          *  transaction, either offered or received.
1920          * 
1921          *  Such a transaction may claim multiples offered outputs at same time if we know the
1922          *  preimage for each when we create it, but only the input at index `input` should be
1923          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1924          *  needed with regards to an upcoming timelock expiration.
1925          * 
1926          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1927          *  outputs.
1928          * 
1929          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1930          * 
1931          *  Per_commitment_point is the dynamic point corresponding to the channel state
1932          *  detected onchain. It has been generated by our counterparty and is used to derive
1933          *  channel state keys, which are then included in the witness script and committed to in the
1934          *  BIP 143 signature.
1935          */
1936         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);
1937         /**
1938          *  Create a signature for a (proposed) closing transaction.
1939          * 
1940          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1941          *  chosen to forgo their output as dust.
1942          */
1943         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1944         /**
1945          *  Computes the signature for a commitment transaction's anchor output used as an
1946          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
1947          */
1948         inline LDK::CResult_SignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
1949         /**
1950          *  Signs a channel announcement message with our funding key and our node secret key (aka
1951          *  node_id or network_key), proving it comes from one of the channel participants.
1952          * 
1953          *  The first returned signature should be from our node secret key, the second from our
1954          *  funding key.
1955          * 
1956          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1957          *  our counterparty may (though likely will not) close the channel on us for violating the
1958          *  protocol.
1959          */
1960         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1961         /**
1962          *  Set the counterparty static channel data, including basepoints,
1963          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1964          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1965          *  they MUST NOT be allowed to change to different values once set.
1966          * 
1967          *  channel_parameters.is_populated() MUST be true.
1968          * 
1969          *  We bind holder_selected_contest_delay late here for API convenience.
1970          * 
1971          *  Will be called before any signatures are applied.
1972          */
1973         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1974 };
1975 class Sign {
1976 private:
1977         LDKSign self;
1978 public:
1979         Sign(const Sign&) = delete;
1980         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1981         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1982         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1983         ~Sign() { Sign_free(self); }
1984         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1985         LDKSign* operator &() { return &self; }
1986         LDKSign* operator ->() { return &self; }
1987         const LDKSign* operator &() const { return &self; }
1988         const LDKSign* operator ->() const { return &self; }
1989 };
1990 class Recipient {
1991 private:
1992         LDKRecipient self;
1993 public:
1994         Recipient(const Recipient&) = delete;
1995         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1996         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1997         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1998         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1999         LDKRecipient* operator &() { return &self; }
2000         LDKRecipient* operator ->() { return &self; }
2001         const LDKRecipient* operator &() const { return &self; }
2002         const LDKRecipient* operator ->() const { return &self; }
2003 };
2004 class KeysInterface {
2005 private:
2006         LDKKeysInterface self;
2007 public:
2008         KeysInterface(const KeysInterface&) = delete;
2009         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
2010         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
2011         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
2012         ~KeysInterface() { KeysInterface_free(self); }
2013         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
2014         LDKKeysInterface* operator &() { return &self; }
2015         LDKKeysInterface* operator ->() { return &self; }
2016         const LDKKeysInterface* operator &() const { return &self; }
2017         const LDKKeysInterface* operator ->() const { return &self; }
2018         /**
2019          *  Get node secret key based on the provided [`Recipient`].
2020          * 
2021          *  The node_id/network_key is the public key that corresponds to this secret key.
2022          * 
2023          *  This method must return the same value each time it is called with a given `Recipient`
2024          *  parameter.
2025          * 
2026          *  Errors if the `Recipient` variant is not supported by the implementation.
2027          */
2028         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
2029         /**
2030          *  Get node id based on the provided [`Recipient`]. This public key corresponds to the secret in
2031          *  [`get_node_secret`].
2032          * 
2033          *  This method must return the same value each time it is called with a given `Recipient`
2034          *  parameter.
2035          * 
2036          *  Errors if the `Recipient` variant is not supported by the implementation.
2037          * 
2038          *  [`get_node_secret`]: KeysInterface::get_node_secret
2039          */
2040         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
2041         /**
2042          *  Gets the ECDH shared secret of our [`node secret`] and `other_key`, multiplying by `tweak` if
2043          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
2044          *  secret, though this is less efficient.
2045          * 
2046          *  Errors if the `Recipient` variant is not supported by the implementation.
2047          * 
2048          *  [`node secret`]: Self::get_node_secret
2049          */
2050         inline LDK::CResult_SharedSecretNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
2051         /**
2052          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
2053          * 
2054          *  This method should return a different value each time it is called, to avoid linking
2055          *  on-chain funds across channels as controlled to the same user.
2056          */
2057         inline LDK::CVec_u8Z get_destination_script();
2058         /**
2059          *  Get a script pubkey which we will send funds to when closing a channel.
2060          * 
2061          *  This method should return a different value each time it is called, to avoid linking
2062          *  on-chain funds across channels as controlled to the same user.
2063          */
2064         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
2065         /**
2066          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
2067          *  restarted with some stale data!
2068          * 
2069          *  This method must return a different value each time it is called.
2070          */
2071         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
2072         /**
2073          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
2074          *  onion packets and for temporary channel IDs. There is no requirement that these be
2075          *  persisted anywhere, though they must be unique across restarts.
2076          * 
2077          *  This method must return a different value each time it is called.
2078          */
2079         inline LDKThirtyTwoBytes get_secure_random_bytes();
2080         /**
2081          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
2082          *  This is only called during deserialization of other objects which contain
2083          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
2084          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
2085          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
2086          *  you've read all of the provided bytes to ensure no corruption occurred.
2087          */
2088         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
2089         /**
2090          *  Sign an invoice.
2091          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
2092          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
2093          *  blindly signing the hash.
2094          *  The hrp is ascii bytes, while the invoice data is base32.
2095          * 
2096          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
2097          * 
2098          *  Errors if the `Recipient` variant is not supported by the implementation.
2099          */
2100         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
2101         /**
2102          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
2103          * 
2104          *  If the implementor of this trait supports [phantom node payments], then every node that is
2105          *  intended to be included in the phantom invoice route hints must return the same value from
2106          *  this method.
2107          * 
2108          *  This method must return the same value each time it is called.
2109          * 
2110          *  [phantom node payments]: PhantomKeysManager
2111          */
2112         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
2113 };
2114 class InMemorySigner {
2115 private:
2116         LDKInMemorySigner self;
2117 public:
2118         InMemorySigner(const InMemorySigner&) = delete;
2119         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
2120         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
2121         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
2122         ~InMemorySigner() { InMemorySigner_free(self); }
2123         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
2124         LDKInMemorySigner* operator &() { return &self; }
2125         LDKInMemorySigner* operator ->() { return &self; }
2126         const LDKInMemorySigner* operator &() const { return &self; }
2127         const LDKInMemorySigner* operator ->() const { return &self; }
2128 };
2129 class KeysManager {
2130 private:
2131         LDKKeysManager self;
2132 public:
2133         KeysManager(const KeysManager&) = delete;
2134         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
2135         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
2136         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
2137         ~KeysManager() { KeysManager_free(self); }
2138         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
2139         LDKKeysManager* operator &() { return &self; }
2140         LDKKeysManager* operator ->() { return &self; }
2141         const LDKKeysManager* operator &() const { return &self; }
2142         const LDKKeysManager* operator ->() const { return &self; }
2143 };
2144 class PhantomKeysManager {
2145 private:
2146         LDKPhantomKeysManager self;
2147 public:
2148         PhantomKeysManager(const PhantomKeysManager&) = delete;
2149         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
2150         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
2151         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
2152         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
2153         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
2154         LDKPhantomKeysManager* operator &() { return &self; }
2155         LDKPhantomKeysManager* operator ->() { return &self; }
2156         const LDKPhantomKeysManager* operator &() const { return &self; }
2157         const LDKPhantomKeysManager* operator ->() const { return &self; }
2158 };
2159 class FilesystemPersister {
2160 private:
2161         LDKFilesystemPersister self;
2162 public:
2163         FilesystemPersister(const FilesystemPersister&) = delete;
2164         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
2165         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
2166         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
2167         ~FilesystemPersister() { FilesystemPersister_free(self); }
2168         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
2169         LDKFilesystemPersister* operator &() { return &self; }
2170         LDKFilesystemPersister* operator ->() { return &self; }
2171         const LDKFilesystemPersister* operator &() const { return &self; }
2172         const LDKFilesystemPersister* operator ->() const { return &self; }
2173 };
2174 class ChannelManager {
2175 private:
2176         LDKChannelManager self;
2177 public:
2178         ChannelManager(const ChannelManager&) = delete;
2179         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2180         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2181         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2182         ~ChannelManager() { ChannelManager_free(self); }
2183         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2184         LDKChannelManager* operator &() { return &self; }
2185         LDKChannelManager* operator ->() { return &self; }
2186         const LDKChannelManager* operator &() const { return &self; }
2187         const LDKChannelManager* operator ->() const { return &self; }
2188 };
2189 class ChainParameters {
2190 private:
2191         LDKChainParameters self;
2192 public:
2193         ChainParameters(const ChainParameters&) = delete;
2194         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2195         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2196         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2197         ~ChainParameters() { ChainParameters_free(self); }
2198         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2199         LDKChainParameters* operator &() { return &self; }
2200         LDKChainParameters* operator ->() { return &self; }
2201         const LDKChainParameters* operator &() const { return &self; }
2202         const LDKChainParameters* operator ->() const { return &self; }
2203 };
2204 class CounterpartyForwardingInfo {
2205 private:
2206         LDKCounterpartyForwardingInfo self;
2207 public:
2208         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2209         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2210         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2211         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2212         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2213         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2214         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2215         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2216         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2217         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2218 };
2219 class ChannelCounterparty {
2220 private:
2221         LDKChannelCounterparty self;
2222 public:
2223         ChannelCounterparty(const ChannelCounterparty&) = delete;
2224         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2225         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2226         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2227         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2228         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2229         LDKChannelCounterparty* operator &() { return &self; }
2230         LDKChannelCounterparty* operator ->() { return &self; }
2231         const LDKChannelCounterparty* operator &() const { return &self; }
2232         const LDKChannelCounterparty* operator ->() const { return &self; }
2233 };
2234 class ChannelDetails {
2235 private:
2236         LDKChannelDetails self;
2237 public:
2238         ChannelDetails(const ChannelDetails&) = delete;
2239         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2240         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2241         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2242         ~ChannelDetails() { ChannelDetails_free(self); }
2243         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2244         LDKChannelDetails* operator &() { return &self; }
2245         LDKChannelDetails* operator ->() { return &self; }
2246         const LDKChannelDetails* operator &() const { return &self; }
2247         const LDKChannelDetails* operator ->() const { return &self; }
2248 };
2249 class PaymentSendFailure {
2250 private:
2251         LDKPaymentSendFailure self;
2252 public:
2253         PaymentSendFailure(const PaymentSendFailure&) = delete;
2254         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
2255         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
2256         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
2257         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
2258         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
2259         LDKPaymentSendFailure* operator &() { return &self; }
2260         LDKPaymentSendFailure* operator ->() { return &self; }
2261         const LDKPaymentSendFailure* operator &() const { return &self; }
2262         const LDKPaymentSendFailure* operator ->() const { return &self; }
2263 };
2264 class PhantomRouteHints {
2265 private:
2266         LDKPhantomRouteHints self;
2267 public:
2268         PhantomRouteHints(const PhantomRouteHints&) = delete;
2269         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2270         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2271         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2272         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2273         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2274         LDKPhantomRouteHints* operator &() { return &self; }
2275         LDKPhantomRouteHints* operator ->() { return &self; }
2276         const LDKPhantomRouteHints* operator &() const { return &self; }
2277         const LDKPhantomRouteHints* operator ->() const { return &self; }
2278 };
2279 class ChannelManagerReadArgs {
2280 private:
2281         LDKChannelManagerReadArgs self;
2282 public:
2283         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2284         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2285         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2286         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2287         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2288         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2289         LDKChannelManagerReadArgs* operator &() { return &self; }
2290         LDKChannelManagerReadArgs* operator ->() { return &self; }
2291         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2292         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2293 };
2294 class ChannelHandshakeConfig {
2295 private:
2296         LDKChannelHandshakeConfig self;
2297 public:
2298         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2299         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2300         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2301         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2302         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2303         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2304         LDKChannelHandshakeConfig* operator &() { return &self; }
2305         LDKChannelHandshakeConfig* operator ->() { return &self; }
2306         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2307         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2308 };
2309 class ChannelHandshakeLimits {
2310 private:
2311         LDKChannelHandshakeLimits self;
2312 public:
2313         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2314         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2315         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2316         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2317         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2318         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2319         LDKChannelHandshakeLimits* operator &() { return &self; }
2320         LDKChannelHandshakeLimits* operator ->() { return &self; }
2321         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2322         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2323 };
2324 class ChannelConfig {
2325 private:
2326         LDKChannelConfig self;
2327 public:
2328         ChannelConfig(const ChannelConfig&) = delete;
2329         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2330         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2331         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2332         ~ChannelConfig() { ChannelConfig_free(self); }
2333         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2334         LDKChannelConfig* operator &() { return &self; }
2335         LDKChannelConfig* operator ->() { return &self; }
2336         const LDKChannelConfig* operator &() const { return &self; }
2337         const LDKChannelConfig* operator ->() const { return &self; }
2338 };
2339 class UserConfig {
2340 private:
2341         LDKUserConfig self;
2342 public:
2343         UserConfig(const UserConfig&) = delete;
2344         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2345         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2346         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2347         ~UserConfig() { UserConfig_free(self); }
2348         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2349         LDKUserConfig* operator &() { return &self; }
2350         LDKUserConfig* operator ->() { return &self; }
2351         const LDKUserConfig* operator &() const { return &self; }
2352         const LDKUserConfig* operator ->() const { return &self; }
2353 };
2354 class APIError {
2355 private:
2356         LDKAPIError self;
2357 public:
2358         APIError(const APIError&) = delete;
2359         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2360         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2361         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2362         ~APIError() { APIError_free(self); }
2363         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2364         LDKAPIError* operator &() { return &self; }
2365         LDKAPIError* operator ->() { return &self; }
2366         const LDKAPIError* operator &() const { return &self; }
2367         const LDKAPIError* operator ->() const { return &self; }
2368 };
2369 class BigSize {
2370 private:
2371         LDKBigSize self;
2372 public:
2373         BigSize(const BigSize&) = delete;
2374         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2375         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2376         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2377         ~BigSize() { BigSize_free(self); }
2378         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2379         LDKBigSize* operator &() { return &self; }
2380         LDKBigSize* operator ->() { return &self; }
2381         const LDKBigSize* operator &() const { return &self; }
2382         const LDKBigSize* operator ->() const { return &self; }
2383 };
2384 class Hostname {
2385 private:
2386         LDKHostname self;
2387 public:
2388         Hostname(const Hostname&) = delete;
2389         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
2390         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
2391         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
2392         ~Hostname() { Hostname_free(self); }
2393         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
2394         LDKHostname* operator &() { return &self; }
2395         LDKHostname* operator ->() { return &self; }
2396         const LDKHostname* operator &() const { return &self; }
2397         const LDKHostname* operator ->() const { return &self; }
2398 };
2399 class OutPoint {
2400 private:
2401         LDKOutPoint self;
2402 public:
2403         OutPoint(const OutPoint&) = delete;
2404         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2405         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2406         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2407         ~OutPoint() { OutPoint_free(self); }
2408         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2409         LDKOutPoint* operator &() { return &self; }
2410         LDKOutPoint* operator ->() { return &self; }
2411         const LDKOutPoint* operator &() const { return &self; }
2412         const LDKOutPoint* operator ->() const { return &self; }
2413 };
2414 class CustomMessageReader {
2415 private:
2416         LDKCustomMessageReader self;
2417 public:
2418         CustomMessageReader(const CustomMessageReader&) = delete;
2419         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2420         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2421         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2422         ~CustomMessageReader() { CustomMessageReader_free(self); }
2423         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2424         LDKCustomMessageReader* operator &() { return &self; }
2425         LDKCustomMessageReader* operator ->() { return &self; }
2426         const LDKCustomMessageReader* operator &() const { return &self; }
2427         const LDKCustomMessageReader* operator ->() const { return &self; }
2428         /**
2429          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2430          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2431          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2432          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2433          */
2434         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2435 };
2436 class Type {
2437 private:
2438         LDKType self;
2439 public:
2440         Type(const Type&) = delete;
2441         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2442         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2443         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2444         ~Type() { Type_free(self); }
2445         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2446         LDKType* operator &() { return &self; }
2447         LDKType* operator ->() { return &self; }
2448         const LDKType* operator &() const { return &self; }
2449         const LDKType* operator ->() const { return &self; }
2450         /**
2451          *  Returns the type identifying the message payload.
2452          */
2453         inline uint16_t type_id();
2454         /**
2455          * Return a human-readable "debug" string describing this object
2456          */
2457         inline LDK::Str debug_str();
2458 };
2459 class InvoicePayer {
2460 private:
2461         LDKInvoicePayer self;
2462 public:
2463         InvoicePayer(const InvoicePayer&) = delete;
2464         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2465         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2466         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2467         ~InvoicePayer() { InvoicePayer_free(self); }
2468         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2469         LDKInvoicePayer* operator &() { return &self; }
2470         LDKInvoicePayer* operator ->() { return &self; }
2471         const LDKInvoicePayer* operator &() const { return &self; }
2472         const LDKInvoicePayer* operator ->() const { return &self; }
2473 };
2474 class Payer {
2475 private:
2476         LDKPayer self;
2477 public:
2478         Payer(const Payer&) = delete;
2479         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2480         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2481         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2482         ~Payer() { Payer_free(self); }
2483         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2484         LDKPayer* operator &() { return &self; }
2485         LDKPayer* operator ->() { return &self; }
2486         const LDKPayer* operator &() const { return &self; }
2487         const LDKPayer* operator ->() const { return &self; }
2488         /**
2489          *  Returns the payer's node id.
2490          */
2491         inline LDKPublicKey node_id();
2492         /**
2493          *  Returns the payer's channels.
2494          */
2495         inline LDK::CVec_ChannelDetailsZ first_hops();
2496         /**
2497          *  Sends a payment over the Lightning Network using the given [`Route`].
2498          * 
2499          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2500          */
2501         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
2502         /**
2503          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2504          */
2505         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
2506         /**
2507          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2508          */
2509         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2510         /**
2511          *  Signals that no further retries for the given payment will occur.
2512          */
2513         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2514 };
2515 class Router {
2516 private:
2517         LDKRouter self;
2518 public:
2519         Router(const Router&) = delete;
2520         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
2521         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
2522         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
2523         ~Router() { Router_free(self); }
2524         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
2525         LDKRouter* operator &() { return &self; }
2526         LDKRouter* operator ->() { return &self; }
2527         const LDKRouter* operator &() const { return &self; }
2528         const LDKRouter* operator ->() const { return &self; }
2529         /**
2530          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
2531          * 
2532          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
2533          */
2534         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, struct LDKInFlightHtlcs inflight_htlcs);
2535         /**
2536          *  Lets the router know that payment through a specific path has failed.
2537          */
2538         inline void notify_payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
2539         /**
2540          *  Lets the router know that payment through a specific path was successful.
2541          */
2542         inline void notify_payment_path_successful(struct LDKCVec_RouteHopZ path);
2543         /**
2544          *  Lets the router know that a payment probe was successful.
2545          */
2546         inline void notify_payment_probe_successful(struct LDKCVec_RouteHopZ path);
2547         /**
2548          *  Lets the router know that a payment probe failed.
2549          */
2550         inline void notify_payment_probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
2551 };
2552 class Retry {
2553 private:
2554         LDKRetry self;
2555 public:
2556         Retry(const Retry&) = delete;
2557         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
2558         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
2559         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
2560         ~Retry() { Retry_free(self); }
2561         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
2562         LDKRetry* operator &() { return &self; }
2563         LDKRetry* operator ->() { return &self; }
2564         const LDKRetry* operator &() const { return &self; }
2565         const LDKRetry* operator ->() const { return &self; }
2566 };
2567 class PaymentError {
2568 private:
2569         LDKPaymentError self;
2570 public:
2571         PaymentError(const PaymentError&) = delete;
2572         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2573         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2574         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2575         ~PaymentError() { PaymentError_free(self); }
2576         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2577         LDKPaymentError* operator &() { return &self; }
2578         LDKPaymentError* operator ->() { return &self; }
2579         const LDKPaymentError* operator &() const { return &self; }
2580         const LDKPaymentError* operator ->() const { return &self; }
2581 };
2582 class InFlightHtlcs {
2583 private:
2584         LDKInFlightHtlcs self;
2585 public:
2586         InFlightHtlcs(const InFlightHtlcs&) = delete;
2587         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
2588         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
2589         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
2590         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
2591         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
2592         LDKInFlightHtlcs* operator &() { return &self; }
2593         LDKInFlightHtlcs* operator ->() { return &self; }
2594         const LDKInFlightHtlcs* operator &() const { return &self; }
2595         const LDKInFlightHtlcs* operator ->() const { return &self; }
2596 };
2597 class ParseError {
2598 private:
2599         LDKParseError self;
2600 public:
2601         ParseError(const ParseError&) = delete;
2602         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
2603         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
2604         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
2605         ~ParseError() { ParseError_free(self); }
2606         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
2607         LDKParseError* operator &() { return &self; }
2608         LDKParseError* operator ->() { return &self; }
2609         const LDKParseError* operator &() const { return &self; }
2610         const LDKParseError* operator ->() const { return &self; }
2611 };
2612 class ParseOrSemanticError {
2613 private:
2614         LDKParseOrSemanticError self;
2615 public:
2616         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
2617         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
2618         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
2619         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
2620         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
2621         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
2622         LDKParseOrSemanticError* operator &() { return &self; }
2623         LDKParseOrSemanticError* operator ->() { return &self; }
2624         const LDKParseOrSemanticError* operator &() const { return &self; }
2625         const LDKParseOrSemanticError* operator ->() const { return &self; }
2626 };
2627 class Invoice {
2628 private:
2629         LDKInvoice self;
2630 public:
2631         Invoice(const Invoice&) = delete;
2632         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
2633         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
2634         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
2635         ~Invoice() { Invoice_free(self); }
2636         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
2637         LDKInvoice* operator &() { return &self; }
2638         LDKInvoice* operator ->() { return &self; }
2639         const LDKInvoice* operator &() const { return &self; }
2640         const LDKInvoice* operator ->() const { return &self; }
2641 };
2642 class SignedRawInvoice {
2643 private:
2644         LDKSignedRawInvoice self;
2645 public:
2646         SignedRawInvoice(const SignedRawInvoice&) = delete;
2647         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
2648         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
2649         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
2650         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
2651         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
2652         LDKSignedRawInvoice* operator &() { return &self; }
2653         LDKSignedRawInvoice* operator ->() { return &self; }
2654         const LDKSignedRawInvoice* operator &() const { return &self; }
2655         const LDKSignedRawInvoice* operator ->() const { return &self; }
2656 };
2657 class RawInvoice {
2658 private:
2659         LDKRawInvoice self;
2660 public:
2661         RawInvoice(const RawInvoice&) = delete;
2662         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
2663         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
2664         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
2665         ~RawInvoice() { RawInvoice_free(self); }
2666         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
2667         LDKRawInvoice* operator &() { return &self; }
2668         LDKRawInvoice* operator ->() { return &self; }
2669         const LDKRawInvoice* operator &() const { return &self; }
2670         const LDKRawInvoice* operator ->() const { return &self; }
2671 };
2672 class RawDataPart {
2673 private:
2674         LDKRawDataPart self;
2675 public:
2676         RawDataPart(const RawDataPart&) = delete;
2677         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
2678         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
2679         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
2680         ~RawDataPart() { RawDataPart_free(self); }
2681         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
2682         LDKRawDataPart* operator &() { return &self; }
2683         LDKRawDataPart* operator ->() { return &self; }
2684         const LDKRawDataPart* operator &() const { return &self; }
2685         const LDKRawDataPart* operator ->() const { return &self; }
2686 };
2687 class PositiveTimestamp {
2688 private:
2689         LDKPositiveTimestamp self;
2690 public:
2691         PositiveTimestamp(const PositiveTimestamp&) = delete;
2692         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
2693         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
2694         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
2695         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
2696         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
2697         LDKPositiveTimestamp* operator &() { return &self; }
2698         LDKPositiveTimestamp* operator ->() { return &self; }
2699         const LDKPositiveTimestamp* operator &() const { return &self; }
2700         const LDKPositiveTimestamp* operator ->() const { return &self; }
2701 };
2702 class SiPrefix {
2703 private:
2704         LDKSiPrefix self;
2705 public:
2706         SiPrefix(const SiPrefix&) = delete;
2707         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
2708         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
2709         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
2710         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
2711         LDKSiPrefix* operator &() { return &self; }
2712         LDKSiPrefix* operator ->() { return &self; }
2713         const LDKSiPrefix* operator &() const { return &self; }
2714         const LDKSiPrefix* operator ->() const { return &self; }
2715 };
2716 class Currency {
2717 private:
2718         LDKCurrency self;
2719 public:
2720         Currency(const Currency&) = delete;
2721         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
2722         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
2723         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
2724         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
2725         LDKCurrency* operator &() { return &self; }
2726         LDKCurrency* operator ->() { return &self; }
2727         const LDKCurrency* operator &() const { return &self; }
2728         const LDKCurrency* operator ->() const { return &self; }
2729 };
2730 class Sha256 {
2731 private:
2732         LDKSha256 self;
2733 public:
2734         Sha256(const Sha256&) = delete;
2735         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
2736         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
2737         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
2738         ~Sha256() { Sha256_free(self); }
2739         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
2740         LDKSha256* operator &() { return &self; }
2741         LDKSha256* operator ->() { return &self; }
2742         const LDKSha256* operator &() const { return &self; }
2743         const LDKSha256* operator ->() const { return &self; }
2744 };
2745 class Description {
2746 private:
2747         LDKDescription self;
2748 public:
2749         Description(const Description&) = delete;
2750         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
2751         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
2752         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
2753         ~Description() { Description_free(self); }
2754         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
2755         LDKDescription* operator &() { return &self; }
2756         LDKDescription* operator ->() { return &self; }
2757         const LDKDescription* operator &() const { return &self; }
2758         const LDKDescription* operator ->() const { return &self; }
2759 };
2760 class PayeePubKey {
2761 private:
2762         LDKPayeePubKey self;
2763 public:
2764         PayeePubKey(const PayeePubKey&) = delete;
2765         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
2766         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
2767         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
2768         ~PayeePubKey() { PayeePubKey_free(self); }
2769         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
2770         LDKPayeePubKey* operator &() { return &self; }
2771         LDKPayeePubKey* operator ->() { return &self; }
2772         const LDKPayeePubKey* operator &() const { return &self; }
2773         const LDKPayeePubKey* operator ->() const { return &self; }
2774 };
2775 class ExpiryTime {
2776 private:
2777         LDKExpiryTime self;
2778 public:
2779         ExpiryTime(const ExpiryTime&) = delete;
2780         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
2781         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
2782         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
2783         ~ExpiryTime() { ExpiryTime_free(self); }
2784         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
2785         LDKExpiryTime* operator &() { return &self; }
2786         LDKExpiryTime* operator ->() { return &self; }
2787         const LDKExpiryTime* operator &() const { return &self; }
2788         const LDKExpiryTime* operator ->() const { return &self; }
2789 };
2790 class MinFinalCltvExpiry {
2791 private:
2792         LDKMinFinalCltvExpiry self;
2793 public:
2794         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
2795         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
2796         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
2797         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
2798         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
2799         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
2800         LDKMinFinalCltvExpiry* operator &() { return &self; }
2801         LDKMinFinalCltvExpiry* operator ->() { return &self; }
2802         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
2803         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
2804 };
2805 class Fallback {
2806 private:
2807         LDKFallback self;
2808 public:
2809         Fallback(const Fallback&) = delete;
2810         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
2811         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
2812         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
2813         ~Fallback() { Fallback_free(self); }
2814         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
2815         LDKFallback* operator &() { return &self; }
2816         LDKFallback* operator ->() { return &self; }
2817         const LDKFallback* operator &() const { return &self; }
2818         const LDKFallback* operator ->() const { return &self; }
2819 };
2820 class InvoiceSignature {
2821 private:
2822         LDKInvoiceSignature self;
2823 public:
2824         InvoiceSignature(const InvoiceSignature&) = delete;
2825         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
2826         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
2827         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
2828         ~InvoiceSignature() { InvoiceSignature_free(self); }
2829         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
2830         LDKInvoiceSignature* operator &() { return &self; }
2831         LDKInvoiceSignature* operator ->() { return &self; }
2832         const LDKInvoiceSignature* operator &() const { return &self; }
2833         const LDKInvoiceSignature* operator ->() const { return &self; }
2834 };
2835 class PrivateRoute {
2836 private:
2837         LDKPrivateRoute self;
2838 public:
2839         PrivateRoute(const PrivateRoute&) = delete;
2840         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
2841         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
2842         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
2843         ~PrivateRoute() { PrivateRoute_free(self); }
2844         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
2845         LDKPrivateRoute* operator &() { return &self; }
2846         LDKPrivateRoute* operator ->() { return &self; }
2847         const LDKPrivateRoute* operator &() const { return &self; }
2848         const LDKPrivateRoute* operator ->() const { return &self; }
2849 };
2850 class CreationError {
2851 private:
2852         LDKCreationError self;
2853 public:
2854         CreationError(const CreationError&) = delete;
2855         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
2856         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
2857         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
2858         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
2859         LDKCreationError* operator &() { return &self; }
2860         LDKCreationError* operator ->() { return &self; }
2861         const LDKCreationError* operator &() const { return &self; }
2862         const LDKCreationError* operator ->() const { return &self; }
2863 };
2864 class SemanticError {
2865 private:
2866         LDKSemanticError self;
2867 public:
2868         SemanticError(const SemanticError&) = delete;
2869         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
2870         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
2871         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
2872         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
2873         LDKSemanticError* operator &() { return &self; }
2874         LDKSemanticError* operator ->() { return &self; }
2875         const LDKSemanticError* operator &() const { return &self; }
2876         const LDKSemanticError* operator ->() const { return &self; }
2877 };
2878 class SignOrCreationError {
2879 private:
2880         LDKSignOrCreationError self;
2881 public:
2882         SignOrCreationError(const SignOrCreationError&) = delete;
2883         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
2884         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
2885         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
2886         ~SignOrCreationError() { SignOrCreationError_free(self); }
2887         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
2888         LDKSignOrCreationError* operator &() { return &self; }
2889         LDKSignOrCreationError* operator ->() { return &self; }
2890         const LDKSignOrCreationError* operator &() const { return &self; }
2891         const LDKSignOrCreationError* operator ->() const { return &self; }
2892 };
2893 class ChannelMonitorUpdate {
2894 private:
2895         LDKChannelMonitorUpdate self;
2896 public:
2897         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2898         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2899         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2900         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2901         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2902         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2903         LDKChannelMonitorUpdate* operator &() { return &self; }
2904         LDKChannelMonitorUpdate* operator ->() { return &self; }
2905         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2906         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2907 };
2908 class MonitorEvent {
2909 private:
2910         LDKMonitorEvent self;
2911 public:
2912         MonitorEvent(const MonitorEvent&) = delete;
2913         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2914         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2915         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2916         ~MonitorEvent() { MonitorEvent_free(self); }
2917         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2918         LDKMonitorEvent* operator &() { return &self; }
2919         LDKMonitorEvent* operator ->() { return &self; }
2920         const LDKMonitorEvent* operator &() const { return &self; }
2921         const LDKMonitorEvent* operator ->() const { return &self; }
2922 };
2923 class HTLCUpdate {
2924 private:
2925         LDKHTLCUpdate self;
2926 public:
2927         HTLCUpdate(const HTLCUpdate&) = delete;
2928         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2929         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2930         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2931         ~HTLCUpdate() { HTLCUpdate_free(self); }
2932         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2933         LDKHTLCUpdate* operator &() { return &self; }
2934         LDKHTLCUpdate* operator ->() { return &self; }
2935         const LDKHTLCUpdate* operator &() const { return &self; }
2936         const LDKHTLCUpdate* operator ->() const { return &self; }
2937 };
2938 class Balance {
2939 private:
2940         LDKBalance self;
2941 public:
2942         Balance(const Balance&) = delete;
2943         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2944         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2945         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2946         ~Balance() { Balance_free(self); }
2947         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2948         LDKBalance* operator &() { return &self; }
2949         LDKBalance* operator ->() { return &self; }
2950         const LDKBalance* operator &() const { return &self; }
2951         const LDKBalance* operator ->() const { return &self; }
2952 };
2953 class ChannelMonitor {
2954 private:
2955         LDKChannelMonitor self;
2956 public:
2957         ChannelMonitor(const ChannelMonitor&) = delete;
2958         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2959         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2960         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2961         ~ChannelMonitor() { ChannelMonitor_free(self); }
2962         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2963         LDKChannelMonitor* operator &() { return &self; }
2964         LDKChannelMonitor* operator ->() { return &self; }
2965         const LDKChannelMonitor* operator &() const { return &self; }
2966         const LDKChannelMonitor* operator ->() const { return &self; }
2967 };
2968 class ExpandedKey {
2969 private:
2970         LDKExpandedKey self;
2971 public:
2972         ExpandedKey(const ExpandedKey&) = delete;
2973         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2974         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2975         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2976         ~ExpandedKey() { ExpandedKey_free(self); }
2977         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2978         LDKExpandedKey* operator &() { return &self; }
2979         LDKExpandedKey* operator ->() { return &self; }
2980         const LDKExpandedKey* operator &() const { return &self; }
2981         const LDKExpandedKey* operator ->() const { return &self; }
2982 };
2983 class CustomMessageHandler {
2984 private:
2985         LDKCustomMessageHandler self;
2986 public:
2987         CustomMessageHandler(const CustomMessageHandler&) = delete;
2988         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2989         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2990         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2991         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2992         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2993         LDKCustomMessageHandler* operator &() { return &self; }
2994         LDKCustomMessageHandler* operator ->() { return &self; }
2995         const LDKCustomMessageHandler* operator &() const { return &self; }
2996         const LDKCustomMessageHandler* operator ->() const { return &self; }
2997         /**
2998          *  Called with the message type that was received and the buffer to be read.
2999          *  Can return a `MessageHandlingError` if the message could not be handled.
3000          */
3001         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
3002         /**
3003          *  Gets the list of pending messages which were generated by the custom message
3004          *  handler, clearing the list in the process. The first tuple element must
3005          *  correspond to the intended recipients node ids. If no connection to one of the
3006          *  specified node does not exist, the message is simply not sent to it.
3007          */
3008         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
3009 };
3010 class IgnoringMessageHandler {
3011 private:
3012         LDKIgnoringMessageHandler self;
3013 public:
3014         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
3015         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
3016         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
3017         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
3018         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
3019         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
3020         LDKIgnoringMessageHandler* operator &() { return &self; }
3021         LDKIgnoringMessageHandler* operator ->() { return &self; }
3022         const LDKIgnoringMessageHandler* operator &() const { return &self; }
3023         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
3024 };
3025 class ErroringMessageHandler {
3026 private:
3027         LDKErroringMessageHandler self;
3028 public:
3029         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
3030         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
3031         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
3032         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
3033         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
3034         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
3035         LDKErroringMessageHandler* operator &() { return &self; }
3036         LDKErroringMessageHandler* operator ->() { return &self; }
3037         const LDKErroringMessageHandler* operator &() const { return &self; }
3038         const LDKErroringMessageHandler* operator ->() const { return &self; }
3039 };
3040 class MessageHandler {
3041 private:
3042         LDKMessageHandler self;
3043 public:
3044         MessageHandler(const MessageHandler&) = delete;
3045         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
3046         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
3047         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
3048         ~MessageHandler() { MessageHandler_free(self); }
3049         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
3050         LDKMessageHandler* operator &() { return &self; }
3051         LDKMessageHandler* operator ->() { return &self; }
3052         const LDKMessageHandler* operator &() const { return &self; }
3053         const LDKMessageHandler* operator ->() const { return &self; }
3054 };
3055 class SocketDescriptor {
3056 private:
3057         LDKSocketDescriptor self;
3058 public:
3059         SocketDescriptor(const SocketDescriptor&) = delete;
3060         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
3061         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
3062         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
3063         ~SocketDescriptor() { SocketDescriptor_free(self); }
3064         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
3065         LDKSocketDescriptor* operator &() { return &self; }
3066         LDKSocketDescriptor* operator ->() { return &self; }
3067         const LDKSocketDescriptor* operator &() const { return &self; }
3068         const LDKSocketDescriptor* operator ->() const { return &self; }
3069         /**
3070          *  Attempts to send some data from the given slice to the peer.
3071          * 
3072          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
3073          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
3074          *  called and further write attempts may occur until that time.
3075          * 
3076          *  If the returned size is smaller than `data.len()`, a
3077          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
3078          *  written. Additionally, until a `send_data` event completes fully, no further
3079          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
3080          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
3081          *  until then.
3082          * 
3083          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
3084          *  (indicating that read events should be paused to prevent DoS in the send buffer),
3085          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
3086          *  `resume_read` of false carries no meaning, and should not cause any action.
3087          */
3088         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
3089         /**
3090          *  Disconnect the socket pointed to by this SocketDescriptor.
3091          * 
3092          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
3093          *  call (doing so is a noop).
3094          */
3095         inline void disconnect_socket();
3096         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
3097         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
3098         /**
3099          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
3100          * This is used, for example, for inclusion of this object in a hash map.
3101          */
3102         inline uint64_t hash();
3103 };
3104 class PeerHandleError {
3105 private:
3106         LDKPeerHandleError self;
3107 public:
3108         PeerHandleError(const PeerHandleError&) = delete;
3109         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
3110         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
3111         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
3112         ~PeerHandleError() { PeerHandleError_free(self); }
3113         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
3114         LDKPeerHandleError* operator &() { return &self; }
3115         LDKPeerHandleError* operator ->() { return &self; }
3116         const LDKPeerHandleError* operator &() const { return &self; }
3117         const LDKPeerHandleError* operator ->() const { return &self; }
3118 };
3119 class PeerManager {
3120 private:
3121         LDKPeerManager self;
3122 public:
3123         PeerManager(const PeerManager&) = delete;
3124         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
3125         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
3126         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
3127         ~PeerManager() { PeerManager_free(self); }
3128         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
3129         LDKPeerManager* operator &() { return &self; }
3130         LDKPeerManager* operator ->() { return &self; }
3131         const LDKPeerManager* operator &() const { return &self; }
3132         const LDKPeerManager* operator ->() const { return &self; }
3133 };
3134 class OnionMessenger {
3135 private:
3136         LDKOnionMessenger self;
3137 public:
3138         OnionMessenger(const OnionMessenger&) = delete;
3139         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
3140         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
3141         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
3142         ~OnionMessenger() { OnionMessenger_free(self); }
3143         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
3144         LDKOnionMessenger* operator &() { return &self; }
3145         LDKOnionMessenger* operator ->() { return &self; }
3146         const LDKOnionMessenger* operator &() const { return &self; }
3147         const LDKOnionMessenger* operator ->() const { return &self; }
3148 };
3149 class Destination {
3150 private:
3151         LDKDestination self;
3152 public:
3153         Destination(const Destination&) = delete;
3154         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
3155         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
3156         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
3157         ~Destination() { Destination_free(self); }
3158         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
3159         LDKDestination* operator &() { return &self; }
3160         LDKDestination* operator ->() { return &self; }
3161         const LDKDestination* operator &() const { return &self; }
3162         const LDKDestination* operator ->() const { return &self; }
3163 };
3164 class SendError {
3165 private:
3166         LDKSendError self;
3167 public:
3168         SendError(const SendError&) = delete;
3169         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
3170         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
3171         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
3172         ~SendError() { SendError_free(self); }
3173         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
3174         LDKSendError* operator &() { return &self; }
3175         LDKSendError* operator ->() { return &self; }
3176         const LDKSendError* operator &() const { return &self; }
3177         const LDKSendError* operator ->() const { return &self; }
3178 };
3179 class CustomOnionMessageHandler {
3180 private:
3181         LDKCustomOnionMessageHandler self;
3182 public:
3183         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
3184         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
3185         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
3186         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
3187         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
3188         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
3189         LDKCustomOnionMessageHandler* operator &() { return &self; }
3190         LDKCustomOnionMessageHandler* operator ->() { return &self; }
3191         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
3192         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
3193         /**
3194          *  Called with the custom message that was received.
3195          */
3196         inline void handle_custom_message(struct LDKCustomOnionMessageContents msg);
3197         /**
3198          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
3199          *  message type is unknown.
3200          */
3201         inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
3202 };
3203 class RapidGossipSync {
3204 private:
3205         LDKRapidGossipSync self;
3206 public:
3207         RapidGossipSync(const RapidGossipSync&) = delete;
3208         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
3209         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
3210         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
3211         ~RapidGossipSync() { RapidGossipSync_free(self); }
3212         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
3213         LDKRapidGossipSync* operator &() { return &self; }
3214         LDKRapidGossipSync* operator ->() { return &self; }
3215         const LDKRapidGossipSync* operator &() const { return &self; }
3216         const LDKRapidGossipSync* operator ->() const { return &self; }
3217 };
3218 class Persister {
3219 private:
3220         LDKPersister self;
3221 public:
3222         Persister(const Persister&) = delete;
3223         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3224         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3225         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3226         ~Persister() { Persister_free(self); }
3227         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3228         LDKPersister* operator &() { return &self; }
3229         LDKPersister* operator ->() { return &self; }
3230         const LDKPersister* operator &() const { return &self; }
3231         const LDKPersister* operator ->() const { return &self; }
3232         /**
3233          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3234          */
3235         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3236         /**
3237          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3238          */
3239         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3240         /**
3241          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3242          */
3243         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3244 };
3245 class DecodeError {
3246 private:
3247         LDKDecodeError self;
3248 public:
3249         DecodeError(const DecodeError&) = delete;
3250         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3251         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3252         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3253         ~DecodeError() { DecodeError_free(self); }
3254         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3255         LDKDecodeError* operator &() { return &self; }
3256         LDKDecodeError* operator ->() { return &self; }
3257         const LDKDecodeError* operator &() const { return &self; }
3258         const LDKDecodeError* operator ->() const { return &self; }
3259 };
3260 class Init {
3261 private:
3262         LDKInit self;
3263 public:
3264         Init(const Init&) = delete;
3265         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3266         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3267         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3268         ~Init() { Init_free(self); }
3269         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3270         LDKInit* operator &() { return &self; }
3271         LDKInit* operator ->() { return &self; }
3272         const LDKInit* operator &() const { return &self; }
3273         const LDKInit* operator ->() const { return &self; }
3274 };
3275 class ErrorMessage {
3276 private:
3277         LDKErrorMessage self;
3278 public:
3279         ErrorMessage(const ErrorMessage&) = delete;
3280         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3281         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3282         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3283         ~ErrorMessage() { ErrorMessage_free(self); }
3284         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3285         LDKErrorMessage* operator &() { return &self; }
3286         LDKErrorMessage* operator ->() { return &self; }
3287         const LDKErrorMessage* operator &() const { return &self; }
3288         const LDKErrorMessage* operator ->() const { return &self; }
3289 };
3290 class WarningMessage {
3291 private:
3292         LDKWarningMessage self;
3293 public:
3294         WarningMessage(const WarningMessage&) = delete;
3295         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3296         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3297         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3298         ~WarningMessage() { WarningMessage_free(self); }
3299         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3300         LDKWarningMessage* operator &() { return &self; }
3301         LDKWarningMessage* operator ->() { return &self; }
3302         const LDKWarningMessage* operator &() const { return &self; }
3303         const LDKWarningMessage* operator ->() const { return &self; }
3304 };
3305 class Ping {
3306 private:
3307         LDKPing self;
3308 public:
3309         Ping(const Ping&) = delete;
3310         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3311         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3312         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3313         ~Ping() { Ping_free(self); }
3314         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3315         LDKPing* operator &() { return &self; }
3316         LDKPing* operator ->() { return &self; }
3317         const LDKPing* operator &() const { return &self; }
3318         const LDKPing* operator ->() const { return &self; }
3319 };
3320 class Pong {
3321 private:
3322         LDKPong self;
3323 public:
3324         Pong(const Pong&) = delete;
3325         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3326         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3327         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3328         ~Pong() { Pong_free(self); }
3329         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3330         LDKPong* operator &() { return &self; }
3331         LDKPong* operator ->() { return &self; }
3332         const LDKPong* operator &() const { return &self; }
3333         const LDKPong* operator ->() const { return &self; }
3334 };
3335 class OpenChannel {
3336 private:
3337         LDKOpenChannel self;
3338 public:
3339         OpenChannel(const OpenChannel&) = delete;
3340         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3341         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3342         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3343         ~OpenChannel() { OpenChannel_free(self); }
3344         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3345         LDKOpenChannel* operator &() { return &self; }
3346         LDKOpenChannel* operator ->() { return &self; }
3347         const LDKOpenChannel* operator &() const { return &self; }
3348         const LDKOpenChannel* operator ->() const { return &self; }
3349 };
3350 class AcceptChannel {
3351 private:
3352         LDKAcceptChannel self;
3353 public:
3354         AcceptChannel(const AcceptChannel&) = delete;
3355         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3356         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3357         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3358         ~AcceptChannel() { AcceptChannel_free(self); }
3359         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3360         LDKAcceptChannel* operator &() { return &self; }
3361         LDKAcceptChannel* operator ->() { return &self; }
3362         const LDKAcceptChannel* operator &() const { return &self; }
3363         const LDKAcceptChannel* operator ->() const { return &self; }
3364 };
3365 class FundingCreated {
3366 private:
3367         LDKFundingCreated self;
3368 public:
3369         FundingCreated(const FundingCreated&) = delete;
3370         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3371         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3372         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3373         ~FundingCreated() { FundingCreated_free(self); }
3374         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3375         LDKFundingCreated* operator &() { return &self; }
3376         LDKFundingCreated* operator ->() { return &self; }
3377         const LDKFundingCreated* operator &() const { return &self; }
3378         const LDKFundingCreated* operator ->() const { return &self; }
3379 };
3380 class FundingSigned {
3381 private:
3382         LDKFundingSigned self;
3383 public:
3384         FundingSigned(const FundingSigned&) = delete;
3385         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3386         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3387         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3388         ~FundingSigned() { FundingSigned_free(self); }
3389         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3390         LDKFundingSigned* operator &() { return &self; }
3391         LDKFundingSigned* operator ->() { return &self; }
3392         const LDKFundingSigned* operator &() const { return &self; }
3393         const LDKFundingSigned* operator ->() const { return &self; }
3394 };
3395 class ChannelReady {
3396 private:
3397         LDKChannelReady self;
3398 public:
3399         ChannelReady(const ChannelReady&) = delete;
3400         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3401         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3402         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3403         ~ChannelReady() { ChannelReady_free(self); }
3404         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3405         LDKChannelReady* operator &() { return &self; }
3406         LDKChannelReady* operator ->() { return &self; }
3407         const LDKChannelReady* operator &() const { return &self; }
3408         const LDKChannelReady* operator ->() const { return &self; }
3409 };
3410 class Shutdown {
3411 private:
3412         LDKShutdown self;
3413 public:
3414         Shutdown(const Shutdown&) = delete;
3415         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3416         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3417         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3418         ~Shutdown() { Shutdown_free(self); }
3419         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3420         LDKShutdown* operator &() { return &self; }
3421         LDKShutdown* operator ->() { return &self; }
3422         const LDKShutdown* operator &() const { return &self; }
3423         const LDKShutdown* operator ->() const { return &self; }
3424 };
3425 class ClosingSignedFeeRange {
3426 private:
3427         LDKClosingSignedFeeRange self;
3428 public:
3429         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3430         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3431         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3432         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3433         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3434         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3435         LDKClosingSignedFeeRange* operator &() { return &self; }
3436         LDKClosingSignedFeeRange* operator ->() { return &self; }
3437         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3438         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3439 };
3440 class ClosingSigned {
3441 private:
3442         LDKClosingSigned self;
3443 public:
3444         ClosingSigned(const ClosingSigned&) = delete;
3445         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3446         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3447         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3448         ~ClosingSigned() { ClosingSigned_free(self); }
3449         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3450         LDKClosingSigned* operator &() { return &self; }
3451         LDKClosingSigned* operator ->() { return &self; }
3452         const LDKClosingSigned* operator &() const { return &self; }
3453         const LDKClosingSigned* operator ->() const { return &self; }
3454 };
3455 class UpdateAddHTLC {
3456 private:
3457         LDKUpdateAddHTLC self;
3458 public:
3459         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3460         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3461         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3462         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3463         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3464         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3465         LDKUpdateAddHTLC* operator &() { return &self; }
3466         LDKUpdateAddHTLC* operator ->() { return &self; }
3467         const LDKUpdateAddHTLC* operator &() const { return &self; }
3468         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3469 };
3470 class OnionMessage {
3471 private:
3472         LDKOnionMessage self;
3473 public:
3474         OnionMessage(const OnionMessage&) = delete;
3475         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
3476         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
3477         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
3478         ~OnionMessage() { OnionMessage_free(self); }
3479         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
3480         LDKOnionMessage* operator &() { return &self; }
3481         LDKOnionMessage* operator ->() { return &self; }
3482         const LDKOnionMessage* operator &() const { return &self; }
3483         const LDKOnionMessage* operator ->() const { return &self; }
3484 };
3485 class UpdateFulfillHTLC {
3486 private:
3487         LDKUpdateFulfillHTLC self;
3488 public:
3489         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3490         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3491         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3492         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3493         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3494         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3495         LDKUpdateFulfillHTLC* operator &() { return &self; }
3496         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3497         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3498         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3499 };
3500 class UpdateFailHTLC {
3501 private:
3502         LDKUpdateFailHTLC self;
3503 public:
3504         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3505         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3506         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3507         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3508         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3509         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3510         LDKUpdateFailHTLC* operator &() { return &self; }
3511         LDKUpdateFailHTLC* operator ->() { return &self; }
3512         const LDKUpdateFailHTLC* operator &() const { return &self; }
3513         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3514 };
3515 class UpdateFailMalformedHTLC {
3516 private:
3517         LDKUpdateFailMalformedHTLC self;
3518 public:
3519         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3520         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3521         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3522         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3523         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3524         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3525         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3526         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3527         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3528         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3529 };
3530 class CommitmentSigned {
3531 private:
3532         LDKCommitmentSigned self;
3533 public:
3534         CommitmentSigned(const CommitmentSigned&) = delete;
3535         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3536         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3537         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3538         ~CommitmentSigned() { CommitmentSigned_free(self); }
3539         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3540         LDKCommitmentSigned* operator &() { return &self; }
3541         LDKCommitmentSigned* operator ->() { return &self; }
3542         const LDKCommitmentSigned* operator &() const { return &self; }
3543         const LDKCommitmentSigned* operator ->() const { return &self; }
3544 };
3545 class RevokeAndACK {
3546 private:
3547         LDKRevokeAndACK self;
3548 public:
3549         RevokeAndACK(const RevokeAndACK&) = delete;
3550         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3551         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3552         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3553         ~RevokeAndACK() { RevokeAndACK_free(self); }
3554         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3555         LDKRevokeAndACK* operator &() { return &self; }
3556         LDKRevokeAndACK* operator ->() { return &self; }
3557         const LDKRevokeAndACK* operator &() const { return &self; }
3558         const LDKRevokeAndACK* operator ->() const { return &self; }
3559 };
3560 class UpdateFee {
3561 private:
3562         LDKUpdateFee self;
3563 public:
3564         UpdateFee(const UpdateFee&) = delete;
3565         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3566         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3567         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3568         ~UpdateFee() { UpdateFee_free(self); }
3569         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3570         LDKUpdateFee* operator &() { return &self; }
3571         LDKUpdateFee* operator ->() { return &self; }
3572         const LDKUpdateFee* operator &() const { return &self; }
3573         const LDKUpdateFee* operator ->() const { return &self; }
3574 };
3575 class DataLossProtect {
3576 private:
3577         LDKDataLossProtect self;
3578 public:
3579         DataLossProtect(const DataLossProtect&) = delete;
3580         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3581         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3582         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3583         ~DataLossProtect() { DataLossProtect_free(self); }
3584         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3585         LDKDataLossProtect* operator &() { return &self; }
3586         LDKDataLossProtect* operator ->() { return &self; }
3587         const LDKDataLossProtect* operator &() const { return &self; }
3588         const LDKDataLossProtect* operator ->() const { return &self; }
3589 };
3590 class ChannelReestablish {
3591 private:
3592         LDKChannelReestablish self;
3593 public:
3594         ChannelReestablish(const ChannelReestablish&) = delete;
3595         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3596         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3597         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3598         ~ChannelReestablish() { ChannelReestablish_free(self); }
3599         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3600         LDKChannelReestablish* operator &() { return &self; }
3601         LDKChannelReestablish* operator ->() { return &self; }
3602         const LDKChannelReestablish* operator &() const { return &self; }
3603         const LDKChannelReestablish* operator ->() const { return &self; }
3604 };
3605 class AnnouncementSignatures {
3606 private:
3607         LDKAnnouncementSignatures self;
3608 public:
3609         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3610         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3611         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3612         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3613         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3614         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3615         LDKAnnouncementSignatures* operator &() { return &self; }
3616         LDKAnnouncementSignatures* operator ->() { return &self; }
3617         const LDKAnnouncementSignatures* operator &() const { return &self; }
3618         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3619 };
3620 class NetAddress {
3621 private:
3622         LDKNetAddress self;
3623 public:
3624         NetAddress(const NetAddress&) = delete;
3625         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3626         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3627         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3628         ~NetAddress() { NetAddress_free(self); }
3629         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3630         LDKNetAddress* operator &() { return &self; }
3631         LDKNetAddress* operator ->() { return &self; }
3632         const LDKNetAddress* operator &() const { return &self; }
3633         const LDKNetAddress* operator ->() const { return &self; }
3634 };
3635 class UnsignedNodeAnnouncement {
3636 private:
3637         LDKUnsignedNodeAnnouncement self;
3638 public:
3639         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3640         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3641         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3642         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3643         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3644         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3645         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3646         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3647         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3648         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3649 };
3650 class NodeAnnouncement {
3651 private:
3652         LDKNodeAnnouncement self;
3653 public:
3654         NodeAnnouncement(const NodeAnnouncement&) = delete;
3655         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3656         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3657         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3658         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3659         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3660         LDKNodeAnnouncement* operator &() { return &self; }
3661         LDKNodeAnnouncement* operator ->() { return &self; }
3662         const LDKNodeAnnouncement* operator &() const { return &self; }
3663         const LDKNodeAnnouncement* operator ->() const { return &self; }
3664 };
3665 class UnsignedChannelAnnouncement {
3666 private:
3667         LDKUnsignedChannelAnnouncement self;
3668 public:
3669         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3670         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3671         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3672         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3673         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3674         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3675         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3676         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3677         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3678         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3679 };
3680 class ChannelAnnouncement {
3681 private:
3682         LDKChannelAnnouncement self;
3683 public:
3684         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3685         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3686         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3687         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3688         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3689         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3690         LDKChannelAnnouncement* operator &() { return &self; }
3691         LDKChannelAnnouncement* operator ->() { return &self; }
3692         const LDKChannelAnnouncement* operator &() const { return &self; }
3693         const LDKChannelAnnouncement* operator ->() const { return &self; }
3694 };
3695 class UnsignedChannelUpdate {
3696 private:
3697         LDKUnsignedChannelUpdate self;
3698 public:
3699         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3700         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3701         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3702         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3703         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3704         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3705         LDKUnsignedChannelUpdate* operator &() { return &self; }
3706         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3707         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3708         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3709 };
3710 class ChannelUpdate {
3711 private:
3712         LDKChannelUpdate self;
3713 public:
3714         ChannelUpdate(const ChannelUpdate&) = delete;
3715         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3716         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3717         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3718         ~ChannelUpdate() { ChannelUpdate_free(self); }
3719         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3720         LDKChannelUpdate* operator &() { return &self; }
3721         LDKChannelUpdate* operator ->() { return &self; }
3722         const LDKChannelUpdate* operator &() const { return &self; }
3723         const LDKChannelUpdate* operator ->() const { return &self; }
3724 };
3725 class QueryChannelRange {
3726 private:
3727         LDKQueryChannelRange self;
3728 public:
3729         QueryChannelRange(const QueryChannelRange&) = delete;
3730         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3731         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3732         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3733         ~QueryChannelRange() { QueryChannelRange_free(self); }
3734         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3735         LDKQueryChannelRange* operator &() { return &self; }
3736         LDKQueryChannelRange* operator ->() { return &self; }
3737         const LDKQueryChannelRange* operator &() const { return &self; }
3738         const LDKQueryChannelRange* operator ->() const { return &self; }
3739 };
3740 class ReplyChannelRange {
3741 private:
3742         LDKReplyChannelRange self;
3743 public:
3744         ReplyChannelRange(const ReplyChannelRange&) = delete;
3745         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3746         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3747         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3748         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3749         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3750         LDKReplyChannelRange* operator &() { return &self; }
3751         LDKReplyChannelRange* operator ->() { return &self; }
3752         const LDKReplyChannelRange* operator &() const { return &self; }
3753         const LDKReplyChannelRange* operator ->() const { return &self; }
3754 };
3755 class QueryShortChannelIds {
3756 private:
3757         LDKQueryShortChannelIds self;
3758 public:
3759         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3760         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3761         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3762         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3763         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3764         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3765         LDKQueryShortChannelIds* operator &() { return &self; }
3766         LDKQueryShortChannelIds* operator ->() { return &self; }
3767         const LDKQueryShortChannelIds* operator &() const { return &self; }
3768         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3769 };
3770 class ReplyShortChannelIdsEnd {
3771 private:
3772         LDKReplyShortChannelIdsEnd self;
3773 public:
3774         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3775         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3776         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3777         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3778         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3779         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3780         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3781         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3782         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3783         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3784 };
3785 class GossipTimestampFilter {
3786 private:
3787         LDKGossipTimestampFilter self;
3788 public:
3789         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3790         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3791         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3792         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3793         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3794         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3795         LDKGossipTimestampFilter* operator &() { return &self; }
3796         LDKGossipTimestampFilter* operator ->() { return &self; }
3797         const LDKGossipTimestampFilter* operator &() const { return &self; }
3798         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3799 };
3800 class ErrorAction {
3801 private:
3802         LDKErrorAction self;
3803 public:
3804         ErrorAction(const ErrorAction&) = delete;
3805         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3806         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3807         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3808         ~ErrorAction() { ErrorAction_free(self); }
3809         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3810         LDKErrorAction* operator &() { return &self; }
3811         LDKErrorAction* operator ->() { return &self; }
3812         const LDKErrorAction* operator &() const { return &self; }
3813         const LDKErrorAction* operator ->() const { return &self; }
3814 };
3815 class LightningError {
3816 private:
3817         LDKLightningError self;
3818 public:
3819         LightningError(const LightningError&) = delete;
3820         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3821         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3822         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3823         ~LightningError() { LightningError_free(self); }
3824         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3825         LDKLightningError* operator &() { return &self; }
3826         LDKLightningError* operator ->() { return &self; }
3827         const LDKLightningError* operator &() const { return &self; }
3828         const LDKLightningError* operator ->() const { return &self; }
3829 };
3830 class CommitmentUpdate {
3831 private:
3832         LDKCommitmentUpdate self;
3833 public:
3834         CommitmentUpdate(const CommitmentUpdate&) = delete;
3835         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3836         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3837         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3838         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3839         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3840         LDKCommitmentUpdate* operator &() { return &self; }
3841         LDKCommitmentUpdate* operator ->() { return &self; }
3842         const LDKCommitmentUpdate* operator &() const { return &self; }
3843         const LDKCommitmentUpdate* operator ->() const { return &self; }
3844 };
3845 class ChannelMessageHandler {
3846 private:
3847         LDKChannelMessageHandler self;
3848 public:
3849         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3850         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3851         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3852         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3853         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3854         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3855         LDKChannelMessageHandler* operator &() { return &self; }
3856         LDKChannelMessageHandler* operator ->() { return &self; }
3857         const LDKChannelMessageHandler* operator &() const { return &self; }
3858         const LDKChannelMessageHandler* operator ->() const { return &self; }
3859         /**
3860          *  Handle an incoming open_channel message from the given peer.
3861          */
3862         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
3863         /**
3864          *  Handle an incoming accept_channel message from the given peer.
3865          */
3866         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
3867         /**
3868          *  Handle an incoming funding_created message from the given peer.
3869          */
3870         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3871         /**
3872          *  Handle an incoming funding_signed message from the given peer.
3873          */
3874         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3875         /**
3876          *  Handle an incoming channel_ready message from the given peer.
3877          */
3878         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
3879         /**
3880          *  Handle an incoming shutdown message from the given peer.
3881          */
3882         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3883         /**
3884          *  Handle an incoming closing_signed message from the given peer.
3885          */
3886         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3887         /**
3888          *  Handle an incoming update_add_htlc message from the given peer.
3889          */
3890         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3891         /**
3892          *  Handle an incoming update_fulfill_htlc message from the given peer.
3893          */
3894         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3895         /**
3896          *  Handle an incoming update_fail_htlc message from the given peer.
3897          */
3898         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3899         /**
3900          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3901          */
3902         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3903         /**
3904          *  Handle an incoming commitment_signed message from the given peer.
3905          */
3906         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3907         /**
3908          *  Handle an incoming revoke_and_ack message from the given peer.
3909          */
3910         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3911         /**
3912          *  Handle an incoming update_fee message from the given peer.
3913          */
3914         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3915         /**
3916          *  Handle an incoming announcement_signatures message from the given peer.
3917          */
3918         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3919         /**
3920          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3921          *  is believed to be possible in the future (eg they're sending us messages we don't
3922          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3923          *  and any outstanding channels should be failed.
3924          * 
3925          *  Note that in some rare cases this may be called without a corresponding
3926          *  [`Self::peer_connected`].
3927          */
3928         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3929         /**
3930          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3931          * 
3932          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
3933          *  with us. Implementors should be somewhat conservative about doing so, however, as other
3934          *  message handlers may still wish to communicate with this peer.
3935          */
3936         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3937         /**
3938          *  Handle an incoming channel_reestablish message from the given peer.
3939          */
3940         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3941         /**
3942          *  Handle an incoming channel update from the given peer.
3943          */
3944         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3945         /**
3946          *  Handle an incoming error message from the given peer.
3947          */
3948         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3949         /**
3950          *  Gets the node feature flags which this handler itself supports. All available handlers are
3951          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
3952          *  which are broadcasted in our [`NodeAnnouncement`] message.
3953          */
3954         inline LDK::NodeFeatures provided_node_features();
3955         /**
3956          *  Gets the init feature flags which should be sent to the given peer. All available handlers
3957          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
3958          *  which are sent in our [`Init`] message.
3959          * 
3960          *  Note that this method is called before [`Self::peer_connected`].
3961          */
3962         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
3963 };
3964 class RoutingMessageHandler {
3965 private:
3966         LDKRoutingMessageHandler self;
3967 public:
3968         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3969         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3970         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3971         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3972         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3973         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3974         LDKRoutingMessageHandler* operator &() { return &self; }
3975         LDKRoutingMessageHandler* operator ->() { return &self; }
3976         const LDKRoutingMessageHandler* operator &() const { return &self; }
3977         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3978         /**
3979          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3980          *  false or returning an Err otherwise.
3981          */
3982         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3983         /**
3984          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3985          *  or returning an Err otherwise.
3986          */
3987         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3988         /**
3989          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3990          *  false or returning an Err otherwise.
3991          */
3992         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3993         /**
3994          *  Gets channel announcements and updates required to dump our routing table to a remote node,
3995          *  starting at the short_channel_id indicated by starting_point and including announcements
3996          *  for a single channel.
3997          */
3998         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
3999         /**
4000          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4001          *  the node *after* the provided pubkey and including up to one announcement immediately
4002          *  higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
4003          *  If None is provided for starting_point, we start at the first node.
4004          * 
4005          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4006          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4007          */
4008         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKPublicKey starting_point);
4009         /**
4010          *  Called when a connection is established with a peer. This can be used to
4011          *  perform routing table synchronization using a strategy defined by the
4012          *  implementor.
4013          * 
4014          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4015          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4016          *  message handlers may still wish to communicate with this peer.
4017          */
4018         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
4019         /**
4020          *  Handles the reply of a query we initiated to learn about channels
4021          *  for a given range of blocks. We can expect to receive one or more
4022          *  replies to a single query.
4023          */
4024         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4025         /**
4026          *  Handles the reply of a query we initiated asking for routing gossip
4027          *  messages for a list of channels. We should receive this message when
4028          *  a node has completed its best effort to send us the pertaining routing
4029          *  gossip messages.
4030          */
4031         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4032         /**
4033          *  Handles when a peer asks us to send a list of short_channel_ids
4034          *  for the requested range of blocks.
4035          */
4036         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4037         /**
4038          *  Handles when a peer asks us to send routing gossip messages for a
4039          *  list of short_channel_ids.
4040          */
4041         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4042         /**
4043          *  Gets the node feature flags which this handler itself supports. All available handlers are
4044          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4045          *  which are broadcasted in our [`NodeAnnouncement`] message.
4046          */
4047         inline LDK::NodeFeatures provided_node_features();
4048         /**
4049          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4050          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4051          *  which are sent in our [`Init`] message.
4052          * 
4053          *  Note that this method is called before [`Self::peer_connected`].
4054          */
4055         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4056 };
4057 class OnionMessageHandler {
4058 private:
4059         LDKOnionMessageHandler self;
4060 public:
4061         OnionMessageHandler(const OnionMessageHandler&) = delete;
4062         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
4063         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
4064         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
4065         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
4066         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
4067         LDKOnionMessageHandler* operator &() { return &self; }
4068         LDKOnionMessageHandler* operator ->() { return &self; }
4069         const LDKOnionMessageHandler* operator &() const { return &self; }
4070         const LDKOnionMessageHandler* operator ->() const { return &self; }
4071         /**
4072          *  Handle an incoming onion_message message from the given peer.
4073          */
4074         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
4075         /**
4076          *  Called when a connection is established with a peer. Can be used to track which peers
4077          *  advertise onion message support and are online.
4078          * 
4079          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4080          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4081          *  message handlers may still wish to communicate with this peer.
4082          */
4083         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
4084         /**
4085          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
4086          *  drop and refuse to forward onion messages to this peer.
4087          * 
4088          *  Note that in some rare cases this may be called without a corresponding
4089          *  [`Self::peer_connected`].
4090          */
4091         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
4092         /**
4093          *  Gets the node feature flags which this handler itself supports. All available handlers are
4094          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4095          *  which are broadcasted in our [`NodeAnnouncement`] message.
4096          */
4097         inline LDK::NodeFeatures provided_node_features();
4098         /**
4099          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4100          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4101          *  which are sent in our [`Init`] message.
4102          * 
4103          *  Note that this method is called before [`Self::peer_connected`].
4104          */
4105         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4106 };
4107 class GraphSyncError {
4108 private:
4109         LDKGraphSyncError self;
4110 public:
4111         GraphSyncError(const GraphSyncError&) = delete;
4112         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
4113         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
4114         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
4115         ~GraphSyncError() { GraphSyncError_free(self); }
4116         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
4117         LDKGraphSyncError* operator &() { return &self; }
4118         LDKGraphSyncError* operator ->() { return &self; }
4119         const LDKGraphSyncError* operator &() const { return &self; }
4120         const LDKGraphSyncError* operator ->() const { return &self; }
4121 };
4122 class DefaultRouter {
4123 private:
4124         LDKDefaultRouter self;
4125 public:
4126         DefaultRouter(const DefaultRouter&) = delete;
4127         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
4128         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
4129         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
4130         ~DefaultRouter() { DefaultRouter_free(self); }
4131         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
4132         LDKDefaultRouter* operator &() { return &self; }
4133         LDKDefaultRouter* operator ->() { return &self; }
4134         const LDKDefaultRouter* operator &() const { return &self; }
4135         const LDKDefaultRouter* operator ->() const { return &self; }
4136 };
4137 class Level {
4138 private:
4139         LDKLevel self;
4140 public:
4141         Level(const Level&) = delete;
4142         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
4143         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
4144         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
4145         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
4146         LDKLevel* operator &() { return &self; }
4147         LDKLevel* operator ->() { return &self; }
4148         const LDKLevel* operator &() const { return &self; }
4149         const LDKLevel* operator ->() const { return &self; }
4150 };
4151 class Record {
4152 private:
4153         LDKRecord self;
4154 public:
4155         Record(const Record&) = delete;
4156         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
4157         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
4158         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
4159         ~Record() { Record_free(self); }
4160         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
4161         LDKRecord* operator &() { return &self; }
4162         LDKRecord* operator ->() { return &self; }
4163         const LDKRecord* operator &() const { return &self; }
4164         const LDKRecord* operator ->() const { return &self; }
4165 };
4166 class Logger {
4167 private:
4168         LDKLogger self;
4169 public:
4170         Logger(const Logger&) = delete;
4171         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
4172         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
4173         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
4174         ~Logger() { Logger_free(self); }
4175         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
4176         LDKLogger* operator &() { return &self; }
4177         LDKLogger* operator ->() { return &self; }
4178         const LDKLogger* operator &() const { return &self; }
4179         const LDKLogger* operator ->() const { return &self; }
4180         /**
4181          *  Logs the `Record`
4182          */
4183         inline void log(const struct LDKRecord *NONNULL_PTR record);
4184 };
4185 class FutureCallback {
4186 private:
4187         LDKFutureCallback self;
4188 public:
4189         FutureCallback(const FutureCallback&) = delete;
4190         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
4191         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
4192         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
4193         ~FutureCallback() { FutureCallback_free(self); }
4194         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
4195         LDKFutureCallback* operator &() { return &self; }
4196         LDKFutureCallback* operator ->() { return &self; }
4197         const LDKFutureCallback* operator &() const { return &self; }
4198         const LDKFutureCallback* operator ->() const { return &self; }
4199         /**
4200          *  The method which is called.
4201          */
4202         inline void call();
4203 };
4204 class Future {
4205 private:
4206         LDKFuture self;
4207 public:
4208         Future(const Future&) = delete;
4209         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
4210         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
4211         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
4212         ~Future() { Future_free(self); }
4213         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
4214         LDKFuture* operator &() { return &self; }
4215         LDKFuture* operator ->() { return &self; }
4216         const LDKFuture* operator &() const { return &self; }
4217         const LDKFuture* operator ->() const { return &self; }
4218 };
4219 class MonitorUpdateId {
4220 private:
4221         LDKMonitorUpdateId self;
4222 public:
4223         MonitorUpdateId(const MonitorUpdateId&) = delete;
4224         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
4225         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
4226         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
4227         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
4228         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
4229         LDKMonitorUpdateId* operator &() { return &self; }
4230         LDKMonitorUpdateId* operator ->() { return &self; }
4231         const LDKMonitorUpdateId* operator &() const { return &self; }
4232         const LDKMonitorUpdateId* operator ->() const { return &self; }
4233 };
4234 class Persist {
4235 private:
4236         LDKPersist self;
4237 public:
4238         Persist(const Persist&) = delete;
4239         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
4240         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
4241         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
4242         ~Persist() { Persist_free(self); }
4243         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
4244         LDKPersist* operator &() { return &self; }
4245         LDKPersist* operator ->() { return &self; }
4246         const LDKPersist* operator &() const { return &self; }
4247         const LDKPersist* operator ->() const { return &self; }
4248         /**
4249          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
4250          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
4251          * 
4252          *  The data can be stored any way you want, but the identifier provided by LDK is the
4253          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
4254          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
4255          * 
4256          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4257          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4258          * 
4259          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
4260          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4261          * 
4262          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
4263          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4264          */
4265         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4266         /**
4267          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
4268          *  update.
4269          * 
4270          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
4271          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
4272          *  details.
4273          * 
4274          *  During blockchain synchronization operations, this may be called with no
4275          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
4276          *  Note that after the full [`ChannelMonitor`] is persisted any previous
4277          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
4278          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
4279          * 
4280          *  If an implementer chooses to persist the updates only, they need to make
4281          *  sure that all the updates are applied to the `ChannelMonitors` *before*
4282          *  the set of channel monitors is given to the `ChannelManager`
4283          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
4284          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
4285          *  persisted, then there is no need to persist individual updates.
4286          * 
4287          *  Note that there could be a performance tradeoff between persisting complete
4288          *  channel monitors on every update vs. persisting only updates and applying
4289          *  them in batches. The size of each monitor grows `O(number of state updates)`
4290          *  whereas updates are small and `O(1)`.
4291          * 
4292          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4293          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4294          * 
4295          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
4296          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
4297          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4298          * 
4299          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4300          * 
4301          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
4302          */
4303         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4304 };
4305 class LockedChannelMonitor {
4306 private:
4307         LDKLockedChannelMonitor self;
4308 public:
4309         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
4310         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
4311         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
4312         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
4313         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
4314         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
4315         LDKLockedChannelMonitor* operator &() { return &self; }
4316         LDKLockedChannelMonitor* operator ->() { return &self; }
4317         const LDKLockedChannelMonitor* operator &() const { return &self; }
4318         const LDKLockedChannelMonitor* operator ->() const { return &self; }
4319 };
4320 class ChainMonitor {
4321 private:
4322         LDKChainMonitor self;
4323 public:
4324         ChainMonitor(const ChainMonitor&) = delete;
4325         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
4326         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
4327         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
4328         ~ChainMonitor() { ChainMonitor_free(self); }
4329         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
4330         LDKChainMonitor* operator &() { return &self; }
4331         LDKChainMonitor* operator ->() { return &self; }
4332         const LDKChainMonitor* operator &() const { return &self; }
4333         const LDKChainMonitor* operator ->() const { return &self; }
4334 };
4335 class CVec_SpendableOutputDescriptorZ {
4336 private:
4337         LDKCVec_SpendableOutputDescriptorZ self;
4338 public:
4339         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
4340         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
4341         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
4342         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
4343         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
4344         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
4345         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
4346         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
4347         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
4348         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
4349 };
4350 class CResult_LockedChannelMonitorNoneZ {
4351 private:
4352         LDKCResult_LockedChannelMonitorNoneZ self;
4353 public:
4354         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
4355         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
4356         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
4357         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
4358         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
4359         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
4360         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
4361         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
4362         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
4363         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
4364 };
4365 class CResult_PhantomRouteHintsDecodeErrorZ {
4366 private:
4367         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
4368 public:
4369         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
4370         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
4371         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
4372         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
4373         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
4374         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
4375         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
4376         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
4377         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
4378         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
4379 };
4380 class COption_C2Tuple_u64u64ZZ {
4381 private:
4382         LDKCOption_C2Tuple_u64u64ZZ self;
4383 public:
4384         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
4385         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
4386         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
4387         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
4388         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
4389         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; }
4390         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
4391         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
4392         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
4393         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
4394 };
4395 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
4396 private:
4397         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
4398 public:
4399         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
4400         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4401         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4402         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
4403         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
4404         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; }
4405         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
4406         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
4407         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
4408         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
4409 };
4410 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
4411 private:
4412         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
4413 public:
4414         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
4415         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4416         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)); }
4417         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
4418         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
4419         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; }
4420         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
4421         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
4422         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
4423         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
4424 };
4425 class CResult_HTLCUpdateDecodeErrorZ {
4426 private:
4427         LDKCResult_HTLCUpdateDecodeErrorZ self;
4428 public:
4429         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
4430         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
4431         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
4432         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
4433         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
4434         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
4435         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
4436         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
4437         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
4438         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
4439 };
4440 class C2Tuple_SignatureCVec_SignatureZZ {
4441 private:
4442         LDKC2Tuple_SignatureCVec_SignatureZZ self;
4443 public:
4444         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
4445         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
4446         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
4447         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
4448         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
4449         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; }
4450         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
4451         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
4452         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
4453         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
4454 };
4455 class CVec_C2Tuple_u32TxOutZZ {
4456 private:
4457         LDKCVec_C2Tuple_u32TxOutZZ self;
4458 public:
4459         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4460         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4461         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4462         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4463         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4464         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; }
4465         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4466         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4467         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4468         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4469 };
4470 class CResult_ChannelInfoDecodeErrorZ {
4471 private:
4472         LDKCResult_ChannelInfoDecodeErrorZ self;
4473 public:
4474         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4475         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4476         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4477         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4478         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4479         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4480         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4481         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4482         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4483         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4484 };
4485 class COption_WriteableScoreZ {
4486 private:
4487         LDKCOption_WriteableScoreZ self;
4488 public:
4489         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
4490         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
4491         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
4492         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
4493         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
4494         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
4495         LDKCOption_WriteableScoreZ* operator &() { return &self; }
4496         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
4497         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
4498         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
4499 };
4500 class CResult_NoneSendErrorZ {
4501 private:
4502         LDKCResult_NoneSendErrorZ self;
4503 public:
4504         CResult_NoneSendErrorZ(const CResult_NoneSendErrorZ&) = delete;
4505         CResult_NoneSendErrorZ(CResult_NoneSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); }
4506         CResult_NoneSendErrorZ(LDKCResult_NoneSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSendErrorZ)); }
4507         operator LDKCResult_NoneSendErrorZ() && { LDKCResult_NoneSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSendErrorZ)); return res; }
4508         ~CResult_NoneSendErrorZ() { CResult_NoneSendErrorZ_free(self); }
4509         CResult_NoneSendErrorZ& operator=(CResult_NoneSendErrorZ&& o) { CResult_NoneSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); return *this; }
4510         LDKCResult_NoneSendErrorZ* operator &() { return &self; }
4511         LDKCResult_NoneSendErrorZ* operator ->() { return &self; }
4512         const LDKCResult_NoneSendErrorZ* operator &() const { return &self; }
4513         const LDKCResult_NoneSendErrorZ* operator ->() const { return &self; }
4514 };
4515 class CResult_FundingCreatedDecodeErrorZ {
4516 private:
4517         LDKCResult_FundingCreatedDecodeErrorZ self;
4518 public:
4519         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4520         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4521         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4522         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4523         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4524         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4525         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4526         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4527         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4528         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4529 };
4530 class CResult_ChannelAnnouncementDecodeErrorZ {
4531 private:
4532         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
4533 public:
4534         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
4535         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
4536         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
4537         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
4538         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
4539         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
4540         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
4541         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
4542         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
4543         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4544 };
4545 class CResult_PositiveTimestampCreationErrorZ {
4546 private:
4547         LDKCResult_PositiveTimestampCreationErrorZ self;
4548 public:
4549         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
4550         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
4551         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
4552         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
4553         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
4554         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
4555         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
4556         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
4557         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
4558         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
4559 };
4560 class CVec_OutPointZ {
4561 private:
4562         LDKCVec_OutPointZ self;
4563 public:
4564         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
4565         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
4566         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
4567         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
4568         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
4569         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
4570         LDKCVec_OutPointZ* operator &() { return &self; }
4571         LDKCVec_OutPointZ* operator ->() { return &self; }
4572         const LDKCVec_OutPointZ* operator &() const { return &self; }
4573         const LDKCVec_OutPointZ* operator ->() const { return &self; }
4574 };
4575 class CResult_CVec_u8ZPeerHandleErrorZ {
4576 private:
4577         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4578 public:
4579         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4580         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4581         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4582         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4583         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4584         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; }
4585         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4586         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4587         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4588         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4589 };
4590 class CResult_InvoiceFeaturesDecodeErrorZ {
4591 private:
4592         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
4593 public:
4594         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
4595         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
4596         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
4597         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
4598         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
4599         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
4600         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
4601         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
4602         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
4603         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
4604 };
4605 class COption_NetworkUpdateZ {
4606 private:
4607         LDKCOption_NetworkUpdateZ self;
4608 public:
4609         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4610         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4611         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4612         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4613         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4614         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4615         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4616         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4617         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4618         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4619 };
4620 class COption_u64Z {
4621 private:
4622         LDKCOption_u64Z self;
4623 public:
4624         COption_u64Z(const COption_u64Z&) = delete;
4625         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4626         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4627         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4628         ~COption_u64Z() { COption_u64Z_free(self); }
4629         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4630         LDKCOption_u64Z* operator &() { return &self; }
4631         LDKCOption_u64Z* operator ->() { return &self; }
4632         const LDKCOption_u64Z* operator &() const { return &self; }
4633         const LDKCOption_u64Z* operator ->() const { return &self; }
4634 };
4635 class CResult_TxOutAccessErrorZ {
4636 private:
4637         LDKCResult_TxOutAccessErrorZ self;
4638 public:
4639         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
4640         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
4641         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
4642         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
4643         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
4644         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
4645         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
4646         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
4647         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
4648         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
4649 };
4650 class CResult_TrustedClosingTransactionNoneZ {
4651 private:
4652         LDKCResult_TrustedClosingTransactionNoneZ self;
4653 public:
4654         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
4655         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
4656         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
4657         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
4658         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
4659         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
4660         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
4661         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
4662         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
4663         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
4664 };
4665 class CResult_PaymentPreimageAPIErrorZ {
4666 private:
4667         LDKCResult_PaymentPreimageAPIErrorZ self;
4668 public:
4669         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4670         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4671         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4672         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4673         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4674         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4675         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4676         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4677         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4678         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4679 };
4680 class CResult_ChannelMonitorUpdateDecodeErrorZ {
4681 private:
4682         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
4683 public:
4684         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
4685         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
4686         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
4687         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
4688         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
4689         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
4690         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
4691         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
4692         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
4693         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
4694 };
4695 class CResult_RouteHintDecodeErrorZ {
4696 private:
4697         LDKCResult_RouteHintDecodeErrorZ self;
4698 public:
4699         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4700         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4701         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4702         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4703         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4704         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4705         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4706         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4707         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4708         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4709 };
4710 class C2Tuple_PublicKeyTypeZ {
4711 private:
4712         LDKC2Tuple_PublicKeyTypeZ self;
4713 public:
4714         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
4715         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
4716         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
4717         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
4718         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
4719         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
4720         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
4721         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
4722         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
4723         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
4724 };
4725 class CResult_NetAddressDecodeErrorZ {
4726 private:
4727         LDKCResult_NetAddressDecodeErrorZ self;
4728 public:
4729         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
4730         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
4731         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
4732         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
4733         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
4734         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
4735         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
4736         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
4737         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
4738         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
4739 };
4740 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
4741 private:
4742         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
4743 public:
4744         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
4745         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4746         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4747         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
4748         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
4749         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ& operator=(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return *this; }
4750         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
4751         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
4752         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
4753         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
4754 };
4755 class CResult_ChannelReestablishDecodeErrorZ {
4756 private:
4757         LDKCResult_ChannelReestablishDecodeErrorZ self;
4758 public:
4759         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
4760         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
4761         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
4762         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
4763         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
4764         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
4765         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
4766         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
4767         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
4768         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
4769 };
4770 class CVec_UpdateAddHTLCZ {
4771 private:
4772         LDKCVec_UpdateAddHTLCZ self;
4773 public:
4774         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4775         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4776         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4777         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4778         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4779         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4780         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4781         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4782         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4783         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4784 };
4785 class CResult_CommitmentSignedDecodeErrorZ {
4786 private:
4787         LDKCResult_CommitmentSignedDecodeErrorZ self;
4788 public:
4789         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4790         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4791         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4792         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4793         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4794         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4795         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4796         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4797         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4798         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4799 };
4800 class COption_u32Z {
4801 private:
4802         LDKCOption_u32Z self;
4803 public:
4804         COption_u32Z(const COption_u32Z&) = delete;
4805         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4806         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4807         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4808         ~COption_u32Z() { COption_u32Z_free(self); }
4809         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4810         LDKCOption_u32Z* operator &() { return &self; }
4811         LDKCOption_u32Z* operator ->() { return &self; }
4812         const LDKCOption_u32Z* operator &() const { return &self; }
4813         const LDKCOption_u32Z* operator ->() const { return &self; }
4814 };
4815 class CResult_InitFeaturesDecodeErrorZ {
4816 private:
4817         LDKCResult_InitFeaturesDecodeErrorZ self;
4818 public:
4819         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
4820         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
4821         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
4822         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
4823         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
4824         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
4825         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
4826         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
4827         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
4828         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
4829 };
4830 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4831 private:
4832         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4833 public:
4834         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4835         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4836         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4837         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4838         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4839         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4840         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4841         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4842         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4843         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4844 };
4845 class CResult_PublicKeyNoneZ {
4846 private:
4847         LDKCResult_PublicKeyNoneZ self;
4848 public:
4849         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
4850         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
4851         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
4852         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
4853         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
4854         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
4855         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
4856         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
4857         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
4858         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
4859 };
4860 class CResult_PaymentIdPaymentSendFailureZ {
4861 private:
4862         LDKCResult_PaymentIdPaymentSendFailureZ self;
4863 public:
4864         CResult_PaymentIdPaymentSendFailureZ(const CResult_PaymentIdPaymentSendFailureZ&) = delete;
4865         CResult_PaymentIdPaymentSendFailureZ(CResult_PaymentIdPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); }
4866         CResult_PaymentIdPaymentSendFailureZ(LDKCResult_PaymentIdPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); }
4867         operator LDKCResult_PaymentIdPaymentSendFailureZ() && { LDKCResult_PaymentIdPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); return res; }
4868         ~CResult_PaymentIdPaymentSendFailureZ() { CResult_PaymentIdPaymentSendFailureZ_free(self); }
4869         CResult_PaymentIdPaymentSendFailureZ& operator=(CResult_PaymentIdPaymentSendFailureZ&& o) { CResult_PaymentIdPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); return *this; }
4870         LDKCResult_PaymentIdPaymentSendFailureZ* operator &() { return &self; }
4871         LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() { return &self; }
4872         const LDKCResult_PaymentIdPaymentSendFailureZ* operator &() const { return &self; }
4873         const LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() const { return &self; }
4874 };
4875 class CResult_CommitmentTransactionDecodeErrorZ {
4876 private:
4877         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4878 public:
4879         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4880         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4881         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4882         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4883         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4884         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4885         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4886         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4887         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4888         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4889 };
4890 class CResult_TransactionNoneZ {
4891 private:
4892         LDKCResult_TransactionNoneZ self;
4893 public:
4894         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4895         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4896         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4897         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4898         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4899         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4900         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4901         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4902         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4903         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4904 };
4905 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4906 private:
4907         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4908 public:
4909         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4910         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4911         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4912         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4913         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4914         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4915         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4916         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4917         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4918         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4919 };
4920 class CResult_OnionMessageDecodeErrorZ {
4921 private:
4922         LDKCResult_OnionMessageDecodeErrorZ self;
4923 public:
4924         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
4925         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
4926         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
4927         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
4928         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
4929         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
4930         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
4931         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
4932         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
4933         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
4934 };
4935 class CResult_PingDecodeErrorZ {
4936 private:
4937         LDKCResult_PingDecodeErrorZ self;
4938 public:
4939         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
4940         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
4941         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
4942         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
4943         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
4944         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
4945         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
4946         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
4947         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
4948         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
4949 };
4950 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
4951 private:
4952         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
4953 public:
4954         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
4955         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4956         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4957         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
4958         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
4959         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
4960         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4961         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4962         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4963         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4964 };
4965 class CResult_ReplyChannelRangeDecodeErrorZ {
4966 private:
4967         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
4968 public:
4969         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
4970         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
4971         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
4972         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
4973         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
4974         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
4975         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
4976         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
4977         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
4978         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4979 };
4980 class CResult_GossipTimestampFilterDecodeErrorZ {
4981 private:
4982         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4983 public:
4984         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4985         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4986         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4987         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4988         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4989         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4990         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4991         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4992         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4993         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4994 };
4995 class CVec_TransactionOutputsZ {
4996 private:
4997         LDKCVec_TransactionOutputsZ self;
4998 public:
4999         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
5000         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
5001         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
5002         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
5003         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
5004         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
5005         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
5006         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
5007         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
5008         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
5009 };
5010 class CResult_ErrorMessageDecodeErrorZ {
5011 private:
5012         LDKCResult_ErrorMessageDecodeErrorZ self;
5013 public:
5014         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
5015         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
5016         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
5017         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
5018         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
5019         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
5020         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
5021         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
5022         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
5023         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
5024 };
5025 class CResult_OpenChannelDecodeErrorZ {
5026 private:
5027         LDKCResult_OpenChannelDecodeErrorZ self;
5028 public:
5029         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
5030         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
5031         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
5032         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
5033         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
5034         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
5035         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
5036         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
5037         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
5038         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
5039 };
5040 class CVec_CVec_u8ZZ {
5041 private:
5042         LDKCVec_CVec_u8ZZ self;
5043 public:
5044         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
5045         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
5046         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
5047         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
5048         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
5049         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; }
5050         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
5051         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
5052         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
5053         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
5054 };
5055 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ {
5056 private:
5057         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ self;
5058 public:
5059         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(const CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&) = delete;
5060         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
5061         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
5062         operator LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return res; }
5063         ~CResult_COption_CustomOnionMessageContentsZDecodeErrorZ() { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); }
5064         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ& operator=(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return *this; }
5065         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
5066         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
5067         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
5068         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
5069 };
5070 class CResult_SecretKeyErrorZ {
5071 private:
5072         LDKCResult_SecretKeyErrorZ self;
5073 public:
5074         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
5075         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
5076         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
5077         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
5078         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
5079         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
5080         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
5081         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
5082         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
5083         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
5084 };
5085 class CResult_ShutdownScriptDecodeErrorZ {
5086 private:
5087         LDKCResult_ShutdownScriptDecodeErrorZ self;
5088 public:
5089         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
5090         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
5091         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
5092         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
5093         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
5094         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
5095         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
5096         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
5097         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
5098         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
5099 };
5100 class CResult_ProbabilisticScorerDecodeErrorZ {
5101 private:
5102         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
5103 public:
5104         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
5105         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
5106         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
5107         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
5108         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
5109         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
5110         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
5111         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
5112         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
5113         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
5114 };
5115 class CResult_QueryChannelRangeDecodeErrorZ {
5116 private:
5117         LDKCResult_QueryChannelRangeDecodeErrorZ self;
5118 public:
5119         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
5120         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
5121         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
5122         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
5123         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
5124         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
5125         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
5126         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
5127         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
5128         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
5129 };
5130 class CResult_TxCreationKeysDecodeErrorZ {
5131 private:
5132         LDKCResult_TxCreationKeysDecodeErrorZ self;
5133 public:
5134         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
5135         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
5136         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
5137         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
5138         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
5139         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
5140         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
5141         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
5142         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
5143         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
5144 };
5145 class C2Tuple_usizeTransactionZ {
5146 private:
5147         LDKC2Tuple_usizeTransactionZ self;
5148 public:
5149         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
5150         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
5151         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
5152         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
5153         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
5154         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
5155         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
5156         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
5157         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
5158         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
5159 };
5160 class CResult_ChannelFeaturesDecodeErrorZ {
5161 private:
5162         LDKCResult_ChannelFeaturesDecodeErrorZ self;
5163 public:
5164         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
5165         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
5166         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
5167         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
5168         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
5169         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
5170         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
5171         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
5172         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
5173         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
5174 };
5175 class CVec_ChannelMonitorZ {
5176 private:
5177         LDKCVec_ChannelMonitorZ self;
5178 public:
5179         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
5180         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
5181         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
5182         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
5183         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
5184         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
5185         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
5186         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
5187         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
5188         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
5189 };
5190 class CVec_TransactionZ {
5191 private:
5192         LDKCVec_TransactionZ self;
5193 public:
5194         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
5195         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
5196         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
5197         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
5198         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
5199         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
5200         LDKCVec_TransactionZ* operator &() { return &self; }
5201         LDKCVec_TransactionZ* operator ->() { return &self; }
5202         const LDKCVec_TransactionZ* operator &() const { return &self; }
5203         const LDKCVec_TransactionZ* operator ->() const { return &self; }
5204 };
5205 class CResult_ChannelReadyDecodeErrorZ {
5206 private:
5207         LDKCResult_ChannelReadyDecodeErrorZ self;
5208 public:
5209         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
5210         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
5211         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
5212         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
5213         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
5214         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
5215         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
5216         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
5217         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
5218         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
5219 };
5220 class CResult_RouteHopDecodeErrorZ {
5221 private:
5222         LDKCResult_RouteHopDecodeErrorZ self;
5223 public:
5224         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
5225         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
5226         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
5227         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
5228         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
5229         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
5230         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
5231         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
5232         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
5233         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
5234 };
5235 class CResult_UpdateFeeDecodeErrorZ {
5236 private:
5237         LDKCResult_UpdateFeeDecodeErrorZ self;
5238 public:
5239         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
5240         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
5241         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
5242         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
5243         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
5244         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
5245         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
5246         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
5247         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
5248         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
5249 };
5250 class CResult_NodeAnnouncementDecodeErrorZ {
5251 private:
5252         LDKCResult_NodeAnnouncementDecodeErrorZ self;
5253 public:
5254         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
5255         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
5256         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
5257         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
5258         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
5259         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
5260         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
5261         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
5262         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
5263         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5264 };
5265 class CVec_BalanceZ {
5266 private:
5267         LDKCVec_BalanceZ self;
5268 public:
5269         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
5270         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
5271         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
5272         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
5273         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
5274         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
5275         LDKCVec_BalanceZ* operator &() { return &self; }
5276         LDKCVec_BalanceZ* operator ->() { return &self; }
5277         const LDKCVec_BalanceZ* operator &() const { return &self; }
5278         const LDKCVec_BalanceZ* operator ->() const { return &self; }
5279 };
5280 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
5281 private:
5282         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
5283 public:
5284         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
5285         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5286         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5287         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
5288         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
5289         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
5290         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
5291         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
5292         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
5293         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
5294 };
5295 class CResult_boolLightningErrorZ {
5296 private:
5297         LDKCResult_boolLightningErrorZ self;
5298 public:
5299         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
5300         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
5301         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
5302         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
5303         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
5304         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
5305         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
5306         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
5307         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
5308         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
5309 };
5310 class CResult_TxCreationKeysErrorZ {
5311 private:
5312         LDKCResult_TxCreationKeysErrorZ self;
5313 public:
5314         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
5315         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
5316         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
5317         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
5318         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
5319         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
5320         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
5321         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
5322         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
5323         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
5324 };
5325 class COption_HTLCDestinationZ {
5326 private:
5327         LDKCOption_HTLCDestinationZ self;
5328 public:
5329         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
5330         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
5331         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
5332         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
5333         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
5334         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
5335         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
5336         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
5337         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
5338         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
5339 };
5340 class CResult_NodeIdDecodeErrorZ {
5341 private:
5342         LDKCResult_NodeIdDecodeErrorZ self;
5343 public:
5344         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
5345         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
5346         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
5347         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
5348         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
5349         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
5350         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
5351         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
5352         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
5353         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
5354 };
5355 class CResult_ShutdownScriptInvalidShutdownScriptZ {
5356 private:
5357         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
5358 public:
5359         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
5360         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
5361         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
5362         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
5363         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
5364         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
5365         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
5366         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
5367         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
5368         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
5369 };
5370 class CResult_NodeAnnouncementInfoDecodeErrorZ {
5371 private:
5372         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
5373 public:
5374         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
5375         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
5376         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
5377         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
5378         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
5379         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
5380         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
5381         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
5382         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
5383         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
5384 };
5385 class CResult_COption_NetworkUpdateZDecodeErrorZ {
5386 private:
5387         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
5388 public:
5389         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
5390         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
5391         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
5392         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
5393         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
5394         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; }
5395         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
5396         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
5397         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
5398         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
5399 };
5400 class CResult_RecoverableSignatureNoneZ {
5401 private:
5402         LDKCResult_RecoverableSignatureNoneZ self;
5403 public:
5404         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
5405         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
5406         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
5407         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
5408         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
5409         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
5410         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
5411         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
5412         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
5413         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
5414 };
5415 class C2Tuple_BlockHashChannelMonitorZ {
5416 private:
5417         LDKC2Tuple_BlockHashChannelMonitorZ self;
5418 public:
5419         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
5420         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
5421         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
5422         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
5423         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
5424         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
5425         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
5426         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
5427         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
5428         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
5429 };
5430 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
5431 private:
5432         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
5433 public:
5434         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
5435         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
5436         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
5437         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
5438         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
5439         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; }
5440         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
5441         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
5442         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
5443         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
5444 };
5445 class CVec_UpdateFailMalformedHTLCZ {
5446 private:
5447         LDKCVec_UpdateFailMalformedHTLCZ self;
5448 public:
5449         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
5450         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
5451         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
5452         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
5453         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
5454         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
5455         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
5456         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
5457         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
5458         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
5459 };
5460 class CResult_FundingSignedDecodeErrorZ {
5461 private:
5462         LDKCResult_FundingSignedDecodeErrorZ self;
5463 public:
5464         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
5465         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
5466         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
5467         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
5468         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
5469         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
5470         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
5471         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
5472         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
5473         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
5474 };
5475 class CResult_NetworkGraphDecodeErrorZ {
5476 private:
5477         LDKCResult_NetworkGraphDecodeErrorZ self;
5478 public:
5479         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
5480         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
5481         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
5482         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
5483         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
5484         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
5485         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
5486         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
5487         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
5488         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
5489 };
5490 class CResult_InvoiceSignOrCreationErrorZ {
5491 private:
5492         LDKCResult_InvoiceSignOrCreationErrorZ self;
5493 public:
5494         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
5495         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
5496         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
5497         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
5498         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
5499         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
5500         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
5501         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
5502         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
5503         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
5504 };
5505 class CVec_RouteHopZ {
5506 private:
5507         LDKCVec_RouteHopZ self;
5508 public:
5509         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5510         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5511         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5512         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5513         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5514         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5515         LDKCVec_RouteHopZ* operator &() { return &self; }
5516         LDKCVec_RouteHopZ* operator ->() { return &self; }
5517         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5518         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5519 };
5520 class COption_FilterZ {
5521 private:
5522         LDKCOption_FilterZ self;
5523 public:
5524         COption_FilterZ(const COption_FilterZ&) = delete;
5525         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
5526         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
5527         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
5528         ~COption_FilterZ() { COption_FilterZ_free(self); }
5529         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
5530         LDKCOption_FilterZ* operator &() { return &self; }
5531         LDKCOption_FilterZ* operator ->() { return &self; }
5532         const LDKCOption_FilterZ* operator &() const { return &self; }
5533         const LDKCOption_FilterZ* operator ->() const { return &self; }
5534 };
5535 class COption_CustomOnionMessageContentsZ {
5536 private:
5537         LDKCOption_CustomOnionMessageContentsZ self;
5538 public:
5539         COption_CustomOnionMessageContentsZ(const COption_CustomOnionMessageContentsZ&) = delete;
5540         COption_CustomOnionMessageContentsZ(COption_CustomOnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); }
5541         COption_CustomOnionMessageContentsZ(LDKCOption_CustomOnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); }
5542         operator LDKCOption_CustomOnionMessageContentsZ() && { LDKCOption_CustomOnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); return res; }
5543         ~COption_CustomOnionMessageContentsZ() { COption_CustomOnionMessageContentsZ_free(self); }
5544         COption_CustomOnionMessageContentsZ& operator=(COption_CustomOnionMessageContentsZ&& o) { COption_CustomOnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); return *this; }
5545         LDKCOption_CustomOnionMessageContentsZ* operator &() { return &self; }
5546         LDKCOption_CustomOnionMessageContentsZ* operator ->() { return &self; }
5547         const LDKCOption_CustomOnionMessageContentsZ* operator &() const { return &self; }
5548         const LDKCOption_CustomOnionMessageContentsZ* operator ->() const { return &self; }
5549 };
5550 class CResult_NodeInfoDecodeErrorZ {
5551 private:
5552         LDKCResult_NodeInfoDecodeErrorZ self;
5553 public:
5554         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
5555         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
5556         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
5557         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
5558         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
5559         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
5560         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
5561         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
5562         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
5563         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
5564 };
5565 class CVec_NodeIdZ {
5566 private:
5567         LDKCVec_NodeIdZ self;
5568 public:
5569         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
5570         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
5571         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
5572         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
5573         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
5574         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
5575         LDKCVec_NodeIdZ* operator &() { return &self; }
5576         LDKCVec_NodeIdZ* operator ->() { return &self; }
5577         const LDKCVec_NodeIdZ* operator &() const { return &self; }
5578         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
5579 };
5580 class CResult_RouteLightningErrorZ {
5581 private:
5582         LDKCResult_RouteLightningErrorZ self;
5583 public:
5584         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
5585         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
5586         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
5587         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
5588         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
5589         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
5590         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
5591         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
5592         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
5593         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
5594 };
5595 class CResult_ChannelPublicKeysDecodeErrorZ {
5596 private:
5597         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
5598 public:
5599         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
5600         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
5601         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
5602         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
5603         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
5604         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
5605         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
5606         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
5607         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
5608         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
5609 };
5610 class CVec_u8Z {
5611 private:
5612         LDKCVec_u8Z self;
5613 public:
5614         CVec_u8Z(const CVec_u8Z&) = delete;
5615         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
5616         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
5617         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
5618         ~CVec_u8Z() { CVec_u8Z_free(self); }
5619         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
5620         LDKCVec_u8Z* operator &() { return &self; }
5621         LDKCVec_u8Z* operator ->() { return &self; }
5622         const LDKCVec_u8Z* operator &() const { return &self; }
5623         const LDKCVec_u8Z* operator ->() const { return &self; }
5624 };
5625 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5626 private:
5627         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5628 public:
5629         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5630         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5631         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5632         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5633         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5634         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; }
5635         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5636         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5637         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5638         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5639 };
5640 class CResult_NonePaymentSendFailureZ {
5641 private:
5642         LDKCResult_NonePaymentSendFailureZ self;
5643 public:
5644         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
5645         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
5646         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
5647         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
5648         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
5649         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
5650         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
5651         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
5652         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
5653         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
5654 };
5655 class CVec_ThirtyTwoBytesZ {
5656 private:
5657         LDKCVec_ThirtyTwoBytesZ self;
5658 public:
5659         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5660         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5661         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5662         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5663         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5664         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5665         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5666         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5667         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5668         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5669 };
5670 class CResult_ClosingSignedDecodeErrorZ {
5671 private:
5672         LDKCResult_ClosingSignedDecodeErrorZ self;
5673 public:
5674         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5675         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5676         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5677         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5678         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5679         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5680         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5681         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5682         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5683         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5684 };
5685 class CVec_CResult_NoneAPIErrorZZ {
5686 private:
5687         LDKCVec_CResult_NoneAPIErrorZZ self;
5688 public:
5689         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5690         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5691         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5692         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5693         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5694         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; }
5695         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5696         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5697         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5698         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5699 };
5700 class CResult_HolderCommitmentTransactionDecodeErrorZ {
5701 private:
5702         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
5703 public:
5704         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
5705         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
5706         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
5707         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
5708         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
5709         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
5710         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5711         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5712         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5713         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5714 };
5715 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5716 private:
5717         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5718 public:
5719         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5720         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5721         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5722         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5723         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5724         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5725         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5726         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5727         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5728         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5729 };
5730 class CResult_ChannelCounterpartyDecodeErrorZ {
5731 private:
5732         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
5733 public:
5734         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
5735         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
5736         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
5737         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
5738         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
5739         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
5740         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
5741         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
5742         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
5743         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
5744 };
5745 class CResult_WarningMessageDecodeErrorZ {
5746 private:
5747         LDKCResult_WarningMessageDecodeErrorZ self;
5748 public:
5749         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
5750         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
5751         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
5752         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
5753         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
5754         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
5755         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
5756         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
5757         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
5758         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
5759 };
5760 class CResult_SignatureNoneZ {
5761 private:
5762         LDKCResult_SignatureNoneZ self;
5763 public:
5764         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
5765         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
5766         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
5767         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
5768         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
5769         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
5770         LDKCResult_SignatureNoneZ* operator &() { return &self; }
5771         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
5772         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
5773         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
5774 };
5775 class CVec_RouteHintHopZ {
5776 private:
5777         LDKCVec_RouteHintHopZ self;
5778 public:
5779         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5780         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5781         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5782         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5783         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5784         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5785         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5786         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5787         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5788         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5789 };
5790 class CResult_SecretKeyNoneZ {
5791 private:
5792         LDKCResult_SecretKeyNoneZ self;
5793 public:
5794         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
5795         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
5796         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
5797         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
5798         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
5799         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
5800         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
5801         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
5802         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
5803         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
5804 };
5805 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5806 private:
5807         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5808 public:
5809         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5810         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5811         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5812         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5813         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5814         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; }
5815         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5816         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5817         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5818         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5819 };
5820 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5821 private:
5822         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
5823 public:
5824         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
5825         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5826         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5827         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
5828         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
5829         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; }
5830         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
5831         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
5832         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
5833         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
5834 };
5835 class CResult_PaymentParametersDecodeErrorZ {
5836 private:
5837         LDKCResult_PaymentParametersDecodeErrorZ self;
5838 public:
5839         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5840         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5841         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5842         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5843         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5844         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5845         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5846         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5847         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5848         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5849 };
5850 class CResult_PaymentPurposeDecodeErrorZ {
5851 private:
5852         LDKCResult_PaymentPurposeDecodeErrorZ self;
5853 public:
5854         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
5855         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
5856         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
5857         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
5858         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
5859         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
5860         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
5861         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
5862         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
5863         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
5864 };
5865 class CResult_InitDecodeErrorZ {
5866 private:
5867         LDKCResult_InitDecodeErrorZ self;
5868 public:
5869         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
5870         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
5871         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
5872         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
5873         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
5874         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
5875         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
5876         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
5877         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
5878         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
5879 };
5880 class CResult_OutPointDecodeErrorZ {
5881 private:
5882         LDKCResult_OutPointDecodeErrorZ self;
5883 public:
5884         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
5885         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
5886         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
5887         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
5888         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
5889         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
5890         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
5891         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
5892         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
5893         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
5894 };
5895 class CResult_BlindedRouteDecodeErrorZ {
5896 private:
5897         LDKCResult_BlindedRouteDecodeErrorZ self;
5898 public:
5899         CResult_BlindedRouteDecodeErrorZ(const CResult_BlindedRouteDecodeErrorZ&) = delete;
5900         CResult_BlindedRouteDecodeErrorZ(CResult_BlindedRouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedRouteDecodeErrorZ)); }
5901         CResult_BlindedRouteDecodeErrorZ(LDKCResult_BlindedRouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedRouteDecodeErrorZ)); }
5902         operator LDKCResult_BlindedRouteDecodeErrorZ() && { LDKCResult_BlindedRouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedRouteDecodeErrorZ)); return res; }
5903         ~CResult_BlindedRouteDecodeErrorZ() { CResult_BlindedRouteDecodeErrorZ_free(self); }
5904         CResult_BlindedRouteDecodeErrorZ& operator=(CResult_BlindedRouteDecodeErrorZ&& o) { CResult_BlindedRouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedRouteDecodeErrorZ)); return *this; }
5905         LDKCResult_BlindedRouteDecodeErrorZ* operator &() { return &self; }
5906         LDKCResult_BlindedRouteDecodeErrorZ* operator ->() { return &self; }
5907         const LDKCResult_BlindedRouteDecodeErrorZ* operator &() const { return &self; }
5908         const LDKCResult_BlindedRouteDecodeErrorZ* operator ->() const { return &self; }
5909 };
5910 class CVec_ChannelDetailsZ {
5911 private:
5912         LDKCVec_ChannelDetailsZ self;
5913 public:
5914         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
5915         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
5916         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
5917         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
5918         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
5919         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
5920         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
5921         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
5922         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
5923         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
5924 };
5925 class CVec_MessageSendEventZ {
5926 private:
5927         LDKCVec_MessageSendEventZ self;
5928 public:
5929         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
5930         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
5931         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
5932         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
5933         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
5934         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
5935         LDKCVec_MessageSendEventZ* operator &() { return &self; }
5936         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
5937         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
5938         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
5939 };
5940 class CResult_SignDecodeErrorZ {
5941 private:
5942         LDKCResult_SignDecodeErrorZ self;
5943 public:
5944         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5945         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5946         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5947         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5948         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5949         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5950         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5951         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5952         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5953         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5954 };
5955 class COption_NetAddressZ {
5956 private:
5957         LDKCOption_NetAddressZ self;
5958 public:
5959         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
5960         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
5961         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
5962         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
5963         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
5964         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
5965         LDKCOption_NetAddressZ* operator &() { return &self; }
5966         LDKCOption_NetAddressZ* operator ->() { return &self; }
5967         const LDKCOption_NetAddressZ* operator &() const { return &self; }
5968         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
5969 };
5970 class C2Tuple_OutPointScriptZ {
5971 private:
5972         LDKC2Tuple_OutPointScriptZ self;
5973 public:
5974         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
5975         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
5976         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
5977         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
5978         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
5979         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
5980         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
5981         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
5982         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
5983         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
5984 };
5985 class CResult_RouteHintHopDecodeErrorZ {
5986 private:
5987         LDKCResult_RouteHintHopDecodeErrorZ self;
5988 public:
5989         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
5990         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
5991         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
5992         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
5993         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
5994         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
5995         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
5996         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
5997         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
5998         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
5999 };
6000 class CResult_C2Tuple_SignatureSignatureZNoneZ {
6001 private:
6002         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
6003 public:
6004         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
6005         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
6006         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
6007         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
6008         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
6009         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; }
6010         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
6011         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
6012         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
6013         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
6014 };
6015 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
6016 private:
6017         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
6018 public:
6019         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
6020         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
6021         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
6022         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
6023         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
6024         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
6025         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
6026         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
6027         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
6028         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
6029 };
6030 class CResult_SharedSecretNoneZ {
6031 private:
6032         LDKCResult_SharedSecretNoneZ self;
6033 public:
6034         CResult_SharedSecretNoneZ(const CResult_SharedSecretNoneZ&) = delete;
6035         CResult_SharedSecretNoneZ(CResult_SharedSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); }
6036         CResult_SharedSecretNoneZ(LDKCResult_SharedSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); }
6037         operator LDKCResult_SharedSecretNoneZ() && { LDKCResult_SharedSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); return res; }
6038         ~CResult_SharedSecretNoneZ() { CResult_SharedSecretNoneZ_free(self); }
6039         CResult_SharedSecretNoneZ& operator=(CResult_SharedSecretNoneZ&& o) { CResult_SharedSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); return *this; }
6040         LDKCResult_SharedSecretNoneZ* operator &() { return &self; }
6041         LDKCResult_SharedSecretNoneZ* operator ->() { return &self; }
6042         const LDKCResult_SharedSecretNoneZ* operator &() const { return &self; }
6043         const LDKCResult_SharedSecretNoneZ* operator ->() const { return &self; }
6044 };
6045 class CVec_TxidZ {
6046 private:
6047         LDKCVec_TxidZ self;
6048 public:
6049         CVec_TxidZ(const CVec_TxidZ&) = delete;
6050         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
6051         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
6052         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
6053         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
6054         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
6055         LDKCVec_TxidZ* operator &() { return &self; }
6056         LDKCVec_TxidZ* operator ->() { return &self; }
6057         const LDKCVec_TxidZ* operator &() const { return &self; }
6058         const LDKCVec_TxidZ* operator ->() const { return &self; }
6059 };
6060 class COption_AccessZ {
6061 private:
6062         LDKCOption_AccessZ self;
6063 public:
6064         COption_AccessZ(const COption_AccessZ&) = delete;
6065         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
6066         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
6067         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
6068         ~COption_AccessZ() { COption_AccessZ_free(self); }
6069         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
6070         LDKCOption_AccessZ* operator &() { return &self; }
6071         LDKCOption_AccessZ* operator ->() { return &self; }
6072         const LDKCOption_AccessZ* operator &() const { return &self; }
6073         const LDKCOption_AccessZ* operator ->() const { return &self; }
6074 };
6075 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
6076 private:
6077         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
6078 public:
6079         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
6080         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
6081         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
6082         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
6083         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
6084         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; }
6085         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
6086         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
6087         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
6088         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
6089 };
6090 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
6091 private:
6092         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
6093 public:
6094         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
6095         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
6096         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
6097         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
6098         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
6099         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; }
6100         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
6101         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
6102         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
6103         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
6104 };
6105 class CResult_PongDecodeErrorZ {
6106 private:
6107         LDKCResult_PongDecodeErrorZ self;
6108 public:
6109         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
6110         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
6111         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
6112         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
6113         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
6114         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
6115         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
6116         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
6117         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
6118         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
6119 };
6120 class CResult_CVec_CVec_u8ZZNoneZ {
6121 private:
6122         LDKCResult_CVec_CVec_u8ZZNoneZ self;
6123 public:
6124         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
6125         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
6126         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
6127         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
6128         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
6129         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; }
6130         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
6131         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
6132         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
6133         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
6134 };
6135 class C2Tuple_SignatureSignatureZ {
6136 private:
6137         LDKC2Tuple_SignatureSignatureZ self;
6138 public:
6139         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
6140         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
6141         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
6142         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
6143         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
6144         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
6145         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
6146         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
6147         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
6148         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
6149 };
6150 class C2Tuple_PaymentHashPaymentSecretZ {
6151 private:
6152         LDKC2Tuple_PaymentHashPaymentSecretZ self;
6153 public:
6154         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
6155         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
6156         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
6157         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
6158         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
6159         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
6160         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
6161         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
6162         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
6163         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
6164 };
6165 class C2Tuple_BlockHashChannelManagerZ {
6166 private:
6167         LDKC2Tuple_BlockHashChannelManagerZ self;
6168 public:
6169         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
6170         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
6171         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
6172         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
6173         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
6174         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
6175         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
6176         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
6177         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
6178         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
6179 };
6180 class CResult_ChannelTransactionParametersDecodeErrorZ {
6181 private:
6182         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
6183 public:
6184         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
6185         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
6186         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
6187         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
6188         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
6189         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
6190         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6191         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6192         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6193         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6194 };
6195 class CResult_AcceptChannelDecodeErrorZ {
6196 private:
6197         LDKCResult_AcceptChannelDecodeErrorZ self;
6198 public:
6199         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
6200         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
6201         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
6202         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
6203         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
6204         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
6205         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
6206         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
6207         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
6208         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
6209 };
6210 class CVec_SignatureZ {
6211 private:
6212         LDKCVec_SignatureZ self;
6213 public:
6214         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
6215         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
6216         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
6217         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
6218         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
6219         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
6220         LDKCVec_SignatureZ* operator &() { return &self; }
6221         LDKCVec_SignatureZ* operator ->() { return &self; }
6222         const LDKCVec_SignatureZ* operator &() const { return &self; }
6223         const LDKCVec_SignatureZ* operator ->() const { return &self; }
6224 };
6225 class CVec_u64Z {
6226 private:
6227         LDKCVec_u64Z self;
6228 public:
6229         CVec_u64Z(const CVec_u64Z&) = delete;
6230         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
6231         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
6232         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
6233         ~CVec_u64Z() { CVec_u64Z_free(self); }
6234         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
6235         LDKCVec_u64Z* operator &() { return &self; }
6236         LDKCVec_u64Z* operator ->() { return &self; }
6237         const LDKCVec_u64Z* operator &() const { return &self; }
6238         const LDKCVec_u64Z* operator ->() const { return &self; }
6239 };
6240 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
6241 private:
6242         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
6243 public:
6244         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
6245         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
6246         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
6247         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
6248         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
6249         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
6250         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
6251         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
6252         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
6253         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6254 };
6255 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
6256 private:
6257         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
6258 public:
6259         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
6260         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
6261         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
6262         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
6263         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
6264         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
6265         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6266         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6267         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6268         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6269 };
6270 class C2Tuple_PaymentHashPaymentIdZ {
6271 private:
6272         LDKC2Tuple_PaymentHashPaymentIdZ self;
6273 public:
6274         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
6275         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
6276         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
6277         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
6278         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
6279         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
6280         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
6281         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
6282         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
6283         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
6284 };
6285 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
6286 private:
6287         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
6288 public:
6289         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
6290         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
6291         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
6292         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
6293         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
6294         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; }
6295         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
6296         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
6297         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
6298         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
6299 };
6300 class CResult_NoneErrorZ {
6301 private:
6302         LDKCResult_NoneErrorZ self;
6303 public:
6304         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
6305         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
6306         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
6307         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
6308         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
6309         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
6310         LDKCResult_NoneErrorZ* operator &() { return &self; }
6311         LDKCResult_NoneErrorZ* operator ->() { return &self; }
6312         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
6313         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
6314 };
6315 class CResult_COption_HTLCDestinationZDecodeErrorZ {
6316 private:
6317         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
6318 public:
6319         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
6320         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
6321         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
6322         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
6323         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
6324         CResult_COption_HTLCDestinationZDecodeErrorZ& operator=(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); return *this; }
6325         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
6326         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
6327         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
6328         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
6329 };
6330 class CResult_InFlightHtlcsDecodeErrorZ {
6331 private:
6332         LDKCResult_InFlightHtlcsDecodeErrorZ self;
6333 public:
6334         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
6335         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
6336         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
6337         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
6338         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
6339         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
6340         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
6341         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
6342         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
6343         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
6344 };
6345 class CResult_StringErrorZ {
6346 private:
6347         LDKCResult_StringErrorZ self;
6348 public:
6349         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
6350         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
6351         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
6352         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
6353         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
6354         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
6355         LDKCResult_StringErrorZ* operator &() { return &self; }
6356         LDKCResult_StringErrorZ* operator ->() { return &self; }
6357         const LDKCResult_StringErrorZ* operator &() const { return &self; }
6358         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
6359 };
6360 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
6361 private:
6362         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
6363 public:
6364         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
6365         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
6366         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
6367         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
6368         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
6369         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; }
6370         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
6371         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
6372         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
6373         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
6374 };
6375 class COption_EventZ {
6376 private:
6377         LDKCOption_EventZ self;
6378 public:
6379         COption_EventZ(const COption_EventZ&) = delete;
6380         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
6381         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
6382         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
6383         ~COption_EventZ() { COption_EventZ_free(self); }
6384         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
6385         LDKCOption_EventZ* operator &() { return &self; }
6386         LDKCOption_EventZ* operator ->() { return &self; }
6387         const LDKCOption_EventZ* operator &() const { return &self; }
6388         const LDKCOption_EventZ* operator ->() const { return &self; }
6389 };
6390 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
6391 private:
6392         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
6393 public:
6394         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
6395         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
6396         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
6397         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
6398         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
6399         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; }
6400         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
6401         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
6402         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
6403         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
6404 };
6405 class CResult_ChannelTypeFeaturesDecodeErrorZ {
6406 private:
6407         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
6408 public:
6409         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
6410         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
6411         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
6412         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
6413         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
6414         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
6415         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
6416         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
6417         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
6418         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6419 };
6420 class CResult_SiPrefixParseErrorZ {
6421 private:
6422         LDKCResult_SiPrefixParseErrorZ self;
6423 public:
6424         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
6425         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
6426         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
6427         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
6428         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
6429         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
6430         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
6431         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
6432         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
6433         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
6434 };
6435 class CVec_RouteHintZ {
6436 private:
6437         LDKCVec_RouteHintZ self;
6438 public:
6439         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
6440         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
6441         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
6442         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
6443         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
6444         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
6445         LDKCVec_RouteHintZ* operator &() { return &self; }
6446         LDKCVec_RouteHintZ* operator ->() { return &self; }
6447         const LDKCVec_RouteHintZ* operator &() const { return &self; }
6448         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
6449 };
6450 class COption_u16Z {
6451 private:
6452         LDKCOption_u16Z self;
6453 public:
6454         COption_u16Z(const COption_u16Z&) = delete;
6455         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
6456         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
6457         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
6458         ~COption_u16Z() { COption_u16Z_free(self); }
6459         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
6460         LDKCOption_u16Z* operator &() { return &self; }
6461         LDKCOption_u16Z* operator ->() { return &self; }
6462         const LDKCOption_u16Z* operator &() const { return &self; }
6463         const LDKCOption_u16Z* operator ->() const { return &self; }
6464 };
6465 class CResult_BlindedHopDecodeErrorZ {
6466 private:
6467         LDKCResult_BlindedHopDecodeErrorZ self;
6468 public:
6469         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
6470         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
6471         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
6472         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
6473         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
6474         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
6475         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
6476         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
6477         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
6478         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
6479 };
6480 class CVec_CVec_RouteHopZZ {
6481 private:
6482         LDKCVec_CVec_RouteHopZZ self;
6483 public:
6484         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
6485         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
6486         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
6487         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
6488         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
6489         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; }
6490         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
6491         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
6492         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
6493         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
6494 };
6495 class CResult_TrustedCommitmentTransactionNoneZ {
6496 private:
6497         LDKCResult_TrustedCommitmentTransactionNoneZ self;
6498 public:
6499         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
6500         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
6501         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
6502         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
6503         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
6504         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
6505         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
6506         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
6507         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
6508         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
6509 };
6510 class CResult_FixedPenaltyScorerDecodeErrorZ {
6511 private:
6512         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
6513 public:
6514         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
6515         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
6516         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
6517         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
6518         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
6519         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
6520         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
6521         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
6522         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
6523         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
6524 };
6525 class CResult_NoneLightningErrorZ {
6526 private:
6527         LDKCResult_NoneLightningErrorZ self;
6528 public:
6529         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
6530         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
6531         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
6532         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
6533         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
6534         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
6535         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
6536         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
6537         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
6538         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
6539 };
6540 class CResult_NonePeerHandleErrorZ {
6541 private:
6542         LDKCResult_NonePeerHandleErrorZ self;
6543 public:
6544         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
6545         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
6546         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
6547         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
6548         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
6549         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
6550         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
6551         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
6552         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
6553         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
6554 };
6555 class CResult_COption_EventZDecodeErrorZ {
6556 private:
6557         LDKCResult_COption_EventZDecodeErrorZ self;
6558 public:
6559         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
6560         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
6561         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
6562         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
6563         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
6564         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; }
6565         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
6566         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
6567         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
6568         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
6569 };
6570 class CResult_CVec_SignatureZNoneZ {
6571 private:
6572         LDKCResult_CVec_SignatureZNoneZ self;
6573 public:
6574         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
6575         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
6576         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
6577         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
6578         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
6579         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; }
6580         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
6581         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
6582         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
6583         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
6584 };
6585 class COption_CVec_NetAddressZZ {
6586 private:
6587         LDKCOption_CVec_NetAddressZZ self;
6588 public:
6589         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
6590         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
6591         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
6592         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
6593         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
6594         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; }
6595         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
6596         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
6597         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
6598         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
6599 };
6600 class CResult__u832APIErrorZ {
6601 private:
6602         LDKCResult__u832APIErrorZ self;
6603 public:
6604         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
6605         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
6606         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
6607         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
6608         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
6609         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
6610         LDKCResult__u832APIErrorZ* operator &() { return &self; }
6611         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
6612         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
6613         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
6614 };
6615 class CResult_PaymentIdPaymentErrorZ {
6616 private:
6617         LDKCResult_PaymentIdPaymentErrorZ self;
6618 public:
6619         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
6620         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
6621         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
6622         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
6623         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
6624         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
6625         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
6626         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
6627         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
6628         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
6629 };
6630 class CResult_DescriptionCreationErrorZ {
6631 private:
6632         LDKCResult_DescriptionCreationErrorZ self;
6633 public:
6634         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
6635         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
6636         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
6637         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
6638         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
6639         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
6640         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
6641         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
6642         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
6643         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
6644 };
6645 class CResult_RoutingFeesDecodeErrorZ {
6646 private:
6647         LDKCResult_RoutingFeesDecodeErrorZ self;
6648 public:
6649         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
6650         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
6651         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
6652         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
6653         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
6654         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
6655         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
6656         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
6657         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
6658         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
6659 };
6660 class CResult_PayeePubKeyErrorZ {
6661 private:
6662         LDKCResult_PayeePubKeyErrorZ self;
6663 public:
6664         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
6665         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
6666         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
6667         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
6668         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
6669         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
6670         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
6671         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
6672         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
6673         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
6674 };
6675 class CResult_COption_MonitorEventZDecodeErrorZ {
6676 private:
6677         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
6678 public:
6679         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
6680         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
6681         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
6682         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
6683         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
6684         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; }
6685         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
6686         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
6687         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
6688         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
6689 };
6690 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
6691 private:
6692         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
6693 public:
6694         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
6695         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
6696         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
6697         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
6698         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
6699         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ& operator=(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return *this; }
6700         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
6701         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
6702         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
6703         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
6704 };
6705 class CVec_C2Tuple_PublicKeyTypeZZ {
6706 private:
6707         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
6708 public:
6709         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
6710         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
6711         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
6712         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
6713         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
6714         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; }
6715         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
6716         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
6717         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
6718         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
6719 };
6720 class CResult_InvoiceSemanticErrorZ {
6721 private:
6722         LDKCResult_InvoiceSemanticErrorZ self;
6723 public:
6724         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
6725         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
6726         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
6727         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
6728         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
6729         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
6730         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
6731         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
6732         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
6733         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
6734 };
6735 class CResult_u32GraphSyncErrorZ {
6736 private:
6737         LDKCResult_u32GraphSyncErrorZ self;
6738 public:
6739         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
6740         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
6741         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
6742         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
6743         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
6744         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
6745         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
6746         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
6747         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
6748         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
6749 };
6750 class CResult_UpdateAddHTLCDecodeErrorZ {
6751 private:
6752         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
6753 public:
6754         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
6755         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
6756         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
6757         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
6758         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
6759         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
6760         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
6761         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
6762         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
6763         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
6764 };
6765 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
6766 private:
6767         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
6768 public:
6769         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
6770         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6771         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6772         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
6773         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
6774         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
6775         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6776         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6777         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6778         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6779 };
6780 class CResult_NoneAPIErrorZ {
6781 private:
6782         LDKCResult_NoneAPIErrorZ self;
6783 public:
6784         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
6785         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
6786         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
6787         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
6788         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
6789         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
6790         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
6791         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
6792         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
6793         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
6794 };
6795 class CVec_NetAddressZ {
6796 private:
6797         LDKCVec_NetAddressZ self;
6798 public:
6799         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
6800         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
6801         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
6802         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
6803         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
6804         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
6805         LDKCVec_NetAddressZ* operator &() { return &self; }
6806         LDKCVec_NetAddressZ* operator ->() { return &self; }
6807         const LDKCVec_NetAddressZ* operator &() const { return &self; }
6808         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
6809 };
6810 class CResult_ChannelDetailsDecodeErrorZ {
6811 private:
6812         LDKCResult_ChannelDetailsDecodeErrorZ self;
6813 public:
6814         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
6815         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
6816         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
6817         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
6818         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
6819         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
6820         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
6821         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
6822         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
6823         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
6824 };
6825 class CVec_PublicKeyZ {
6826 private:
6827         LDKCVec_PublicKeyZ self;
6828 public:
6829         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
6830         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
6831         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
6832         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
6833         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
6834         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
6835         LDKCVec_PublicKeyZ* operator &() { return &self; }
6836         LDKCVec_PublicKeyZ* operator ->() { return &self; }
6837         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
6838         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
6839 };
6840 class CVec_C2Tuple_usizeTransactionZZ {
6841 private:
6842         LDKCVec_C2Tuple_usizeTransactionZZ self;
6843 public:
6844         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
6845         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
6846         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
6847         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
6848         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
6849         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; }
6850         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
6851         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
6852         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
6853         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
6854 };
6855 class CResult_QueryShortChannelIdsDecodeErrorZ {
6856 private:
6857         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
6858 public:
6859         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
6860         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
6861         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
6862         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
6863         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
6864         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
6865         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
6866         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
6867         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
6868         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
6869 };
6870 class CVec_PhantomRouteHintsZ {
6871 private:
6872         LDKCVec_PhantomRouteHintsZ self;
6873 public:
6874         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
6875         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
6876         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
6877         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
6878         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
6879         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
6880         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
6881         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
6882         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
6883         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
6884 };
6885 class COption_MonitorEventZ {
6886 private:
6887         LDKCOption_MonitorEventZ self;
6888 public:
6889         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6890         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6891         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6892         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6893         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6894         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6895         LDKCOption_MonitorEventZ* operator &() { return &self; }
6896         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6897         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6898         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6899 };
6900 class C2Tuple_u64u64Z {
6901 private:
6902         LDKC2Tuple_u64u64Z self;
6903 public:
6904         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
6905         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
6906         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
6907         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
6908         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
6909         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
6910         LDKC2Tuple_u64u64Z* operator &() { return &self; }
6911         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
6912         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
6913         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
6914 };
6915 class COption_TypeZ {
6916 private:
6917         LDKCOption_TypeZ self;
6918 public:
6919         COption_TypeZ(const COption_TypeZ&) = delete;
6920         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6921         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6922         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6923         ~COption_TypeZ() { COption_TypeZ_free(self); }
6924         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6925         LDKCOption_TypeZ* operator &() { return &self; }
6926         LDKCOption_TypeZ* operator ->() { return &self; }
6927         const LDKCOption_TypeZ* operator &() const { return &self; }
6928         const LDKCOption_TypeZ* operator ->() const { return &self; }
6929 };
6930 class CResult_COption_TypeZDecodeErrorZ {
6931 private:
6932         LDKCResult_COption_TypeZDecodeErrorZ self;
6933 public:
6934         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6935         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6936         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6937         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6938         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6939         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; }
6940         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6941         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6942         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6943         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6944 };
6945 class C2Tuple_u32TxOutZ {
6946 private:
6947         LDKC2Tuple_u32TxOutZ self;
6948 public:
6949         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
6950         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
6951         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
6952         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
6953         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
6954         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
6955         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
6956         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
6957         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
6958         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
6959 };
6960 class CResult_UpdateFailHTLCDecodeErrorZ {
6961 private:
6962         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6963 public:
6964         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6965         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6966         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6967         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6968         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6969         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6970         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6971         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6972         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6973         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6974 };
6975 class CResult_InvoiceParseOrSemanticErrorZ {
6976 private:
6977         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6978 public:
6979         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6980         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6981         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6982         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6983         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6984         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6985         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6986         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6987         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6988         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6989 };
6990 class CResult_PaymentSecretNoneZ {
6991 private:
6992         LDKCResult_PaymentSecretNoneZ self;
6993 public:
6994         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
6995         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
6996         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
6997         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
6998         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
6999         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
7000         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
7001         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
7002         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
7003         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
7004 };
7005 class CResult_ChannelConfigDecodeErrorZ {
7006 private:
7007         LDKCResult_ChannelConfigDecodeErrorZ self;
7008 public:
7009         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
7010         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
7011         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
7012         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
7013         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
7014         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
7015         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
7016         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
7017         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
7018         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
7019 };
7020 class CVec_PrivateRouteZ {
7021 private:
7022         LDKCVec_PrivateRouteZ self;
7023 public:
7024         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
7025         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
7026         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
7027         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
7028         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
7029         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
7030         LDKCVec_PrivateRouteZ* operator &() { return &self; }
7031         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
7032         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
7033         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
7034 };
7035 class CResult_SpendableOutputDescriptorDecodeErrorZ {
7036 private:
7037         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
7038 public:
7039         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
7040         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
7041         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
7042         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
7043         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
7044         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
7045         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
7046         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
7047         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
7048         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
7049 };
7050 class CResult_RevokeAndACKDecodeErrorZ {
7051 private:
7052         LDKCResult_RevokeAndACKDecodeErrorZ self;
7053 public:
7054         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
7055         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
7056         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
7057         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
7058         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
7059         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
7060         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
7061         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
7062         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
7063         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
7064 };
7065 class CResult_UnsignedChannelUpdateDecodeErrorZ {
7066 private:
7067         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
7068 public:
7069         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
7070         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
7071         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
7072         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
7073         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
7074         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
7075         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
7076         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
7077         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
7078         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
7079 };
7080 class CResult_ShutdownDecodeErrorZ {
7081 private:
7082         LDKCResult_ShutdownDecodeErrorZ self;
7083 public:
7084         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
7085         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
7086         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
7087         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
7088         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
7089         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
7090         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
7091         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
7092         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
7093         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
7094 };
7095 class CVec_EventZ {
7096 private:
7097         LDKCVec_EventZ self;
7098 public:
7099         CVec_EventZ(const CVec_EventZ&) = delete;
7100         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
7101         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
7102         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
7103         ~CVec_EventZ() { CVec_EventZ_free(self); }
7104         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
7105         LDKCVec_EventZ* operator &() { return &self; }
7106         LDKCVec_EventZ* operator ->() { return &self; }
7107         const LDKCVec_EventZ* operator &() const { return &self; }
7108         const LDKCVec_EventZ* operator ->() const { return &self; }
7109 };
7110 class CResult_NoneSemanticErrorZ {
7111 private:
7112         LDKCResult_NoneSemanticErrorZ self;
7113 public:
7114         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
7115         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
7116         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
7117         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
7118         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
7119         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
7120         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
7121         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
7122         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
7123         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
7124 };
7125 class CVec_MonitorEventZ {
7126 private:
7127         LDKCVec_MonitorEventZ self;
7128 public:
7129         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
7130         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
7131         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
7132         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
7133         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
7134         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
7135         LDKCVec_MonitorEventZ* operator &() { return &self; }
7136         LDKCVec_MonitorEventZ* operator ->() { return &self; }
7137         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
7138         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
7139 };
7140 class CVec_PaymentPreimageZ {
7141 private:
7142         LDKCVec_PaymentPreimageZ self;
7143 public:
7144         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
7145         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
7146         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
7147         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
7148         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
7149         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
7150         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
7151         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
7152         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
7153         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
7154 };
7155 class CVec_C2Tuple_u32ScriptZZ {
7156 private:
7157         LDKCVec_C2Tuple_u32ScriptZZ self;
7158 public:
7159         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
7160         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
7161         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
7162         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
7163         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
7164         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; }
7165         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
7166         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
7167         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
7168         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
7169 };
7170 class CResult_COption_ClosureReasonZDecodeErrorZ {
7171 private:
7172         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
7173 public:
7174         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
7175         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
7176         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
7177         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
7178         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
7179         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; }
7180         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
7181         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
7182         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
7183         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
7184 };
7185 class CResult_PublicKeyErrorZ {
7186 private:
7187         LDKCResult_PublicKeyErrorZ self;
7188 public:
7189         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
7190         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
7191         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
7192         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
7193         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
7194         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
7195         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
7196         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
7197         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
7198         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
7199 };
7200 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
7201 private:
7202         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
7203 public:
7204         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
7205         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7206         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7207         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
7208         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
7209         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ& operator=(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return *this; }
7210         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
7211         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
7212         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
7213         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
7214 };
7215 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
7216 private:
7217         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
7218 public:
7219         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
7220         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
7221         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
7222         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
7223         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
7224         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
7225         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
7226         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
7227         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
7228         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
7229 };
7230 class CResult_NoneNoneZ {
7231 private:
7232         LDKCResult_NoneNoneZ self;
7233 public:
7234         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
7235         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
7236         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
7237         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
7238         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
7239         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
7240         LDKCResult_NoneNoneZ* operator &() { return &self; }
7241         LDKCResult_NoneNoneZ* operator ->() { return &self; }
7242         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
7243         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
7244 };
7245 class CResult_RouteParametersDecodeErrorZ {
7246 private:
7247         LDKCResult_RouteParametersDecodeErrorZ self;
7248 public:
7249         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
7250         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
7251         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
7252         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
7253         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
7254         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
7255         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
7256         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
7257         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
7258         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
7259 };
7260 class COption_ClosureReasonZ {
7261 private:
7262         LDKCOption_ClosureReasonZ self;
7263 public:
7264         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
7265         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
7266         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
7267         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
7268         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
7269         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
7270         LDKCOption_ClosureReasonZ* operator &() { return &self; }
7271         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
7272         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
7273         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
7274 };
7275 class CResult_NodeAliasDecodeErrorZ {
7276 private:
7277         LDKCResult_NodeAliasDecodeErrorZ self;
7278 public:
7279         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
7280         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
7281         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
7282         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
7283         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
7284         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
7285         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
7286         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
7287         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
7288         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
7289 };
7290 class CVec_APIErrorZ {
7291 private:
7292         LDKCVec_APIErrorZ self;
7293 public:
7294         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
7295         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
7296         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
7297         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
7298         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
7299         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
7300         LDKCVec_APIErrorZ* operator &() { return &self; }
7301         LDKCVec_APIErrorZ* operator ->() { return &self; }
7302         const LDKCVec_APIErrorZ* operator &() const { return &self; }
7303         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
7304 };
7305 class CResult_PrivateRouteCreationErrorZ {
7306 private:
7307         LDKCResult_PrivateRouteCreationErrorZ self;
7308 public:
7309         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
7310         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
7311         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
7312         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
7313         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
7314         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
7315         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
7316         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
7317         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
7318         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
7319 };
7320 class CResult_boolPeerHandleErrorZ {
7321 private:
7322         LDKCResult_boolPeerHandleErrorZ self;
7323 public:
7324         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
7325         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
7326         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
7327         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
7328         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
7329         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
7330         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
7331         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
7332         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
7333         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
7334 };
7335 class CVec_UpdateFulfillHTLCZ {
7336 private:
7337         LDKCVec_UpdateFulfillHTLCZ self;
7338 public:
7339         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
7340         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
7341         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
7342         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
7343         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
7344         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
7345         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
7346         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
7347         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
7348         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
7349 };
7350 class CResult_BlindedRouteNoneZ {
7351 private:
7352         LDKCResult_BlindedRouteNoneZ self;
7353 public:
7354         CResult_BlindedRouteNoneZ(const CResult_BlindedRouteNoneZ&) = delete;
7355         CResult_BlindedRouteNoneZ(CResult_BlindedRouteNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedRouteNoneZ)); }
7356         CResult_BlindedRouteNoneZ(LDKCResult_BlindedRouteNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedRouteNoneZ)); }
7357         operator LDKCResult_BlindedRouteNoneZ() && { LDKCResult_BlindedRouteNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedRouteNoneZ)); return res; }
7358         ~CResult_BlindedRouteNoneZ() { CResult_BlindedRouteNoneZ_free(self); }
7359         CResult_BlindedRouteNoneZ& operator=(CResult_BlindedRouteNoneZ&& o) { CResult_BlindedRouteNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedRouteNoneZ)); return *this; }
7360         LDKCResult_BlindedRouteNoneZ* operator &() { return &self; }
7361         LDKCResult_BlindedRouteNoneZ* operator ->() { return &self; }
7362         const LDKCResult_BlindedRouteNoneZ* operator &() const { return &self; }
7363         const LDKCResult_BlindedRouteNoneZ* operator ->() const { return &self; }
7364 };
7365 class CResult_AnnouncementSignaturesDecodeErrorZ {
7366 private:
7367         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
7368 public:
7369         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
7370         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
7371         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
7372         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
7373         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
7374         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
7375         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
7376         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
7377         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
7378         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
7379 };
7380 class CResult_UpdateFulfillHTLCDecodeErrorZ {
7381 private:
7382         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
7383 public:
7384         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
7385         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
7386         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
7387         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
7388         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
7389         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
7390         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
7391         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
7392         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
7393         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
7394 };
7395 class CResult_ChannelUpdateDecodeErrorZ {
7396 private:
7397         LDKCResult_ChannelUpdateDecodeErrorZ self;
7398 public:
7399         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
7400         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
7401         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
7402         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
7403         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
7404         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
7405         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
7406         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
7407         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
7408         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
7409 };
7410 class CResult_NodeFeaturesDecodeErrorZ {
7411 private:
7412         LDKCResult_NodeFeaturesDecodeErrorZ self;
7413 public:
7414         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
7415         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
7416         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
7417         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
7418         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
7419         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
7420         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
7421         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
7422         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
7423         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
7424 };
7425 class CVec_u5Z {
7426 private:
7427         LDKCVec_u5Z self;
7428 public:
7429         CVec_u5Z(const CVec_u5Z&) = delete;
7430         CVec_u5Z(CVec_u5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u5Z)); }
7431         CVec_u5Z(LDKCVec_u5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u5Z)); }
7432         operator LDKCVec_u5Z() && { LDKCVec_u5Z res = self; memset(&self, 0, sizeof(LDKCVec_u5Z)); return res; }
7433         ~CVec_u5Z() { CVec_u5Z_free(self); }
7434         CVec_u5Z& operator=(CVec_u5Z&& o) { CVec_u5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u5Z)); return *this; }
7435         LDKCVec_u5Z* operator &() { return &self; }
7436         LDKCVec_u5Z* operator ->() { return &self; }
7437         const LDKCVec_u5Z* operator &() const { return &self; }
7438         const LDKCVec_u5Z* operator ->() const { return &self; }
7439 };
7440 class CResult_InMemorySignerDecodeErrorZ {
7441 private:
7442         LDKCResult_InMemorySignerDecodeErrorZ self;
7443 public:
7444         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
7445         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
7446         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
7447         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
7448         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
7449         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
7450         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
7451         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
7452         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
7453         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
7454 };
7455 class CResult_PaymentSecretAPIErrorZ {
7456 private:
7457         LDKCResult_PaymentSecretAPIErrorZ self;
7458 public:
7459         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
7460         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
7461         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
7462         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
7463         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
7464         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
7465         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
7466         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
7467         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
7468         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
7469 };
7470 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
7471 private:
7472         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
7473 public:
7474         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
7475         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
7476         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
7477         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
7478         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
7479         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
7480         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
7481         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
7482         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
7483         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
7484 };
7485 class COption_ScalarZ {
7486 private:
7487         LDKCOption_ScalarZ self;
7488 public:
7489         COption_ScalarZ(const COption_ScalarZ&) = delete;
7490         COption_ScalarZ(COption_ScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScalarZ)); }
7491         COption_ScalarZ(LDKCOption_ScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScalarZ)); }
7492         operator LDKCOption_ScalarZ() && { LDKCOption_ScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_ScalarZ)); return res; }
7493         ~COption_ScalarZ() { COption_ScalarZ_free(self); }
7494         COption_ScalarZ& operator=(COption_ScalarZ&& o) { COption_ScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScalarZ)); return *this; }
7495         LDKCOption_ScalarZ* operator &() { return &self; }
7496         LDKCOption_ScalarZ* operator ->() { return &self; }
7497         const LDKCOption_ScalarZ* operator &() const { return &self; }
7498         const LDKCOption_ScalarZ* operator ->() const { return &self; }
7499 };
7500 class CResult_SignedRawInvoiceParseErrorZ {
7501 private:
7502         LDKCResult_SignedRawInvoiceParseErrorZ self;
7503 public:
7504         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
7505         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
7506         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
7507         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
7508         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
7509         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
7510         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
7511         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
7512         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
7513         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
7514 };
7515 class CResult_RouteDecodeErrorZ {
7516 private:
7517         LDKCResult_RouteDecodeErrorZ self;
7518 public:
7519         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
7520         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
7521         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
7522         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
7523         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
7524         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
7525         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
7526         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
7527         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
7528         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
7529 };
7530 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
7531 private:
7532         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
7533 public:
7534         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
7535         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7536         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7537         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
7538         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
7539         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
7540         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7541         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7542         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7543         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7544 };
7545 class COption_NoneZ {
7546 private:
7547         LDKCOption_NoneZ self;
7548 public:
7549         COption_NoneZ(const COption_NoneZ&) = delete;
7550         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
7551         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
7552         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
7553         ~COption_NoneZ() { COption_NoneZ_free(self); }
7554         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
7555         LDKCOption_NoneZ* operator &() { return &self; }
7556         LDKCOption_NoneZ* operator ->() { return &self; }
7557         const LDKCOption_NoneZ* operator &() const { return &self; }
7558         const LDKCOption_NoneZ* operator ->() const { return &self; }
7559 };
7560 class CVec_TxOutZ {
7561 private:
7562         LDKCVec_TxOutZ self;
7563 public:
7564         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
7565         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
7566         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
7567         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
7568         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
7569         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
7570         LDKCVec_TxOutZ* operator &() { return &self; }
7571         LDKCVec_TxOutZ* operator ->() { return &self; }
7572         const LDKCVec_TxOutZ* operator &() const { return &self; }
7573         const LDKCVec_TxOutZ* operator ->() const { return &self; }
7574 };
7575 class CResult_ChannelUpdateInfoDecodeErrorZ {
7576 private:
7577         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
7578 public:
7579         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
7580         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
7581         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
7582         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
7583         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
7584         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
7585         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
7586         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
7587         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
7588         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
7589 };
7590 class C2Tuple_u32ScriptZ {
7591 private:
7592         LDKC2Tuple_u32ScriptZ self;
7593 public:
7594         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
7595         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
7596         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
7597         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
7598         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
7599         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
7600         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
7601         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
7602         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
7603         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
7604 };
7605 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
7606 private:
7607         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
7608 public:
7609         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
7610         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7611         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7612         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
7613         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
7614         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; }
7615         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
7616         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
7617         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
7618         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
7619 };
7620 class CVec_UpdateFailHTLCZ {
7621 private:
7622         LDKCVec_UpdateFailHTLCZ self;
7623 public:
7624         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
7625         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
7626         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
7627         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
7628         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
7629         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
7630         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
7631         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
7632         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
7633         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
7634 };
7635 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
7636 private:
7637         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
7638 public:
7639         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
7640         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7641         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7642         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
7643         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
7644         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
7645         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
7646         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
7647         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
7648         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
7649 };
7650
7651 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
7652         (self.broadcast_transaction)(self.this_arg, tx);
7653 }
7654 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
7655         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
7656         return ret;
7657 }
7658 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
7659         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
7660         return ret;
7661 }
7662 inline LDK::OnionMessage OnionMessageProvider::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
7663         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
7664         return ret;
7665 }
7666 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
7667         (self.process_pending_events)(self.this_arg, handler);
7668 }
7669 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
7670         (self.handle_event)(self.this_arg, event);
7671 }
7672 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
7673         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
7674         return ret;
7675 }
7676 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7677         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
7678 }
7679 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
7680         (self.block_connected)(self.this_arg, block, height);
7681 }
7682 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
7683         (self.block_disconnected)(self.this_arg, header, height);
7684 }
7685 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7686         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
7687 }
7688 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
7689         (self.transaction_unconfirmed)(self.this_arg, txid);
7690 }
7691 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
7692         (self.best_block_updated)(self.this_arg, header, height);
7693 }
7694 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
7695         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
7696         return ret;
7697 }
7698 inline LDK::ChannelMonitorUpdateStatus Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
7699         LDK::ChannelMonitorUpdateStatus ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
7700         return ret;
7701 }
7702 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
7703         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
7704         return ret;
7705 }
7706 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
7707         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
7708         return ret;
7709 }
7710 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
7711         (self.register_tx)(self.this_arg, txid, script_pubkey);
7712 }
7713 inline void Filter::register_output(struct LDKWatchedOutput output) {
7714         (self.register_output)(self.this_arg, output);
7715 }
7716 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) {
7717         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
7718         return ret;
7719 }
7720 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7721         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
7722 }
7723 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
7724         (self.payment_path_successful)(self.this_arg, path);
7725 }
7726 inline void Score::probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7727         (self.probe_failed)(self.this_arg, path, short_channel_id);
7728 }
7729 inline void Score::probe_successful(struct LDKCVec_RouteHopZ path) {
7730         (self.probe_successful)(self.this_arg, path);
7731 }
7732 inline LDK::Score LockableScore::lock() {
7733         LDK::Score ret = (self.lock)(self.this_arg);
7734         return ret;
7735 }
7736 inline uint64_t CustomOnionMessageContents::tlv_type() {
7737         uint64_t ret = (self.tlv_type)(self.this_arg);
7738         return ret;
7739 }
7740 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
7741         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
7742         return ret;
7743 }
7744 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
7745         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
7746         return ret;
7747 }
7748 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7749         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
7750         return ret;
7751 }
7752 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
7753         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
7754         return ret;
7755 }
7756 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7757         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
7758         return ret;
7759 }
7760 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
7761         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
7762         return ret;
7763 }
7764 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
7765         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
7766         return ret;
7767 }
7768 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]) {
7769         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
7770         return ret;
7771 }
7772 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) {
7773         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
7774         return ret;
7775 }
7776 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) {
7777         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
7778         return ret;
7779 }
7780 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
7781         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
7782         return ret;
7783 }
7784 inline LDK::CResult_SignatureNoneZ BaseSign::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
7785         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
7786         return ret;
7787 }
7788 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
7789         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
7790         return ret;
7791 }
7792 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
7793         (self.ready_channel)(self.this_arg, channel_parameters);
7794 }
7795 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
7796         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
7797         return ret;
7798 }
7799 inline LDK::CResult_PublicKeyNoneZ KeysInterface::get_node_id(enum LDKRecipient recipient) {
7800         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
7801         return ret;
7802 }
7803 inline LDK::CResult_SharedSecretNoneZ KeysInterface::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak) {
7804         LDK::CResult_SharedSecretNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
7805         return ret;
7806 }
7807 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
7808         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
7809         return ret;
7810 }
7811 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
7812         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
7813         return ret;
7814 }
7815 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
7816         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
7817         return ret;
7818 }
7819 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
7820         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
7821         return ret;
7822 }
7823 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
7824         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
7825         return ret;
7826 }
7827 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient) {
7828         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
7829         return ret;
7830 }
7831 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
7832         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
7833         return ret;
7834 }
7835 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
7836         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
7837         return ret;
7838 }
7839 inline uint16_t Type::type_id() {
7840         uint16_t ret = (self.type_id)(self.this_arg);
7841         return ret;
7842 }
7843 inline LDK::Str Type::debug_str() {
7844         LDK::Str ret = (self.debug_str)(self.this_arg);
7845         return ret;
7846 }
7847 inline LDKPublicKey Payer::node_id() {
7848         LDKPublicKey ret = (self.node_id)(self.this_arg);
7849         return ret;
7850 }
7851 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
7852         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
7853         return ret;
7854 }
7855 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret) {
7856         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret);
7857         return ret;
7858 }
7859 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage) {
7860         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage);
7861         return ret;
7862 }
7863 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
7864         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
7865         return ret;
7866 }
7867 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
7868         (self.abandon_payment)(self.this_arg, payment_id);
7869 }
7870 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, struct LDKInFlightHtlcs inflight_htlcs) {
7871         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, payment_hash, first_hops, inflight_htlcs);
7872         return ret;
7873 }
7874 inline void Router::notify_payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7875         (self.notify_payment_path_failed)(self.this_arg, path, short_channel_id);
7876 }
7877 inline void Router::notify_payment_path_successful(struct LDKCVec_RouteHopZ path) {
7878         (self.notify_payment_path_successful)(self.this_arg, path);
7879 }
7880 inline void Router::notify_payment_probe_successful(struct LDKCVec_RouteHopZ path) {
7881         (self.notify_payment_probe_successful)(self.this_arg, path);
7882 }
7883 inline void Router::notify_payment_probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7884         (self.notify_payment_probe_failed)(self.this_arg, path, short_channel_id);
7885 }
7886 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
7887         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
7888         return ret;
7889 }
7890 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
7891         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
7892         return ret;
7893 }
7894 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
7895         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
7896         return ret;
7897 }
7898 inline void SocketDescriptor::disconnect_socket() {
7899         (self.disconnect_socket)(self.this_arg);
7900 }
7901 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
7902         bool ret = (self.eq)(self.this_arg, other_arg);
7903         return ret;
7904 }
7905 inline uint64_t SocketDescriptor::hash() {
7906         uint64_t ret = (self.hash)(self.this_arg);
7907         return ret;
7908 }
7909 inline void CustomOnionMessageHandler::handle_custom_message(struct LDKCustomOnionMessageContents msg) {
7910         (self.handle_custom_message)(self.this_arg, msg);
7911 }
7912 inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
7913         LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
7914         return ret;
7915 }
7916 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
7917         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
7918         return ret;
7919 }
7920 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
7921         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
7922         return ret;
7923 }
7924 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
7925         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
7926         return ret;
7927 }
7928 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
7929         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
7930 }
7931 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
7932         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
7933 }
7934 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
7935         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
7936 }
7937 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
7938         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
7939 }
7940 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
7941         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
7942 }
7943 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
7944         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
7945 }
7946 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
7947         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
7948 }
7949 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
7950         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
7951 }
7952 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
7953         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
7954 }
7955 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
7956         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
7957 }
7958 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
7959         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
7960 }
7961 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
7962         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
7963 }
7964 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
7965         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
7966 }
7967 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
7968         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
7969 }
7970 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
7971         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
7972 }
7973 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
7974         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
7975 }
7976 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
7977         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg);
7978         return ret;
7979 }
7980 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
7981         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
7982 }
7983 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
7984         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
7985 }
7986 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
7987         (self.handle_error)(self.this_arg, their_node_id, msg);
7988 }
7989 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
7990         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
7991         return ret;
7992 }
7993 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
7994         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
7995         return ret;
7996 }
7997 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
7998         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
7999         return ret;
8000 }
8001 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
8002         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
8003         return ret;
8004 }
8005 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
8006         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
8007         return ret;
8008 }
8009 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
8010         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
8011         return ret;
8012 }
8013 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKPublicKey starting_point) {
8014         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
8015         return ret;
8016 }
8017 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
8018         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init);
8019         return ret;
8020 }
8021 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
8022         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
8023         return ret;
8024 }
8025 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
8026         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
8027         return ret;
8028 }
8029 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
8030         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
8031         return ret;
8032 }
8033 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
8034         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
8035         return ret;
8036 }
8037 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
8038         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8039         return ret;
8040 }
8041 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8042         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8043         return ret;
8044 }
8045 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
8046         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
8047 }
8048 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
8049         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init);
8050         return ret;
8051 }
8052 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
8053         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
8054 }
8055 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
8056         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8057         return ret;
8058 }
8059 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8060         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8061         return ret;
8062 }
8063 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
8064         (self.log)(self.this_arg, record);
8065 }
8066 inline void FutureCallback::call() {
8067         (self.call)(self.this_arg);
8068 }
8069 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
8070         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
8071         return ret;
8072 }
8073 inline LDK::ChannelMonitorUpdateStatus Persist::update_persisted_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
8074         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
8075         return ret;
8076 }
8077 }