Update auto-generated bindings to 0.0.113
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class HTLCClaim;
6 class CounterpartyCommitmentSecrets;
7 class TxCreationKeys;
8 class ChannelPublicKeys;
9 class HTLCOutputInCommitment;
10 class ChannelTransactionParameters;
11 class CounterpartyChannelTransactionParameters;
12 class DirectedChannelTransactionParameters;
13 class HolderCommitmentTransaction;
14 class BuiltCommitmentTransaction;
15 class ClosingTransaction;
16 class TrustedClosingTransaction;
17 class CommitmentTransaction;
18 class TrustedCommitmentTransaction;
19 class ShutdownScript;
20 class InvalidShutdownScript;
21 class BlindedPath;
22 class BlindedHop;
23 class BackgroundProcessor;
24 class GossipSync;
25 class DefaultRouter;
26 class Router;
27 class ScorerAccountingForInFlightHtlcs;
28 class InFlightHtlcs;
29 class RouteHop;
30 class Route;
31 class RouteParameters;
32 class PaymentParameters;
33 class RouteHint;
34 class RouteHintHop;
35 class BroadcasterInterface;
36 class ConfirmationTarget;
37 class FeeEstimator;
38 class PaymentPurpose;
39 class ClosureReason;
40 class HTLCDestination;
41 class Event;
42 class MessageSendEvent;
43 class MessageSendEventsProvider;
44 class OnionMessageProvider;
45 class EventsProvider;
46 class EventHandler;
47 class BestBlock;
48 class AccessError;
49 class Access;
50 class Listen;
51 class Confirm;
52 class ChannelMonitorUpdateStatus;
53 class Watch;
54 class Filter;
55 class WatchedOutput;
56 class Score;
57 class LockableScore;
58 class WriteableScore;
59 class MultiThreadedLockableScore;
60 class MultiThreadedScoreLock;
61 class ChannelUsage;
62 class FixedPenaltyScorer;
63 class ProbabilisticScorer;
64 class ProbabilisticScoringParameters;
65 class InitFeatures;
66 class NodeFeatures;
67 class ChannelFeatures;
68 class InvoiceFeatures;
69 class OfferFeatures;
70 class InvoiceRequestFeatures;
71 class ChannelTypeFeatures;
72 class OnionMessageContents;
73 class CustomOnionMessageContents;
74 class NodeId;
75 class NetworkGraph;
76 class ReadOnlyNetworkGraph;
77 class NetworkUpdate;
78 class P2PGossipSync;
79 class ChannelUpdateInfo;
80 class ChannelInfo;
81 class DirectedChannelInfo;
82 class EffectiveCapacity;
83 class RoutingFees;
84 class NodeAnnouncementInfo;
85 class NodeAlias;
86 class NodeInfo;
87 class DelayedPaymentOutputDescriptor;
88 class StaticPaymentOutputDescriptor;
89 class SpendableOutputDescriptor;
90 class BaseSign;
91 class Sign;
92 class Recipient;
93 class KeysInterface;
94 class InMemorySigner;
95 class KeysManager;
96 class PhantomKeysManager;
97 class FilesystemPersister;
98 class ChannelManager;
99 class ChainParameters;
100 class CounterpartyForwardingInfo;
101 class ChannelCounterparty;
102 class ChannelDetails;
103 class PaymentSendFailure;
104 class PhantomRouteHints;
105 class ChannelManagerReadArgs;
106 class ChannelHandshakeConfig;
107 class ChannelHandshakeLimits;
108 class ChannelConfig;
109 class UserConfig;
110 class APIError;
111 class BigSize;
112 class Hostname;
113 class PrintableString;
114 class OutPoint;
115 class CustomMessageReader;
116 class Type;
117 class InvoicePayer;
118 class Payer;
119 class Retry;
120 class PaymentError;
121 class ChannelMonitorUpdate;
122 class MonitorEvent;
123 class HTLCUpdate;
124 class Balance;
125 class ChannelMonitor;
126 class ExpandedKey;
127 class CustomMessageHandler;
128 class IgnoringMessageHandler;
129 class ErroringMessageHandler;
130 class MessageHandler;
131 class SocketDescriptor;
132 class PeerHandleError;
133 class PeerManager;
134 class OnionMessenger;
135 class Destination;
136 class SendError;
137 class CustomOnionMessageHandler;
138 class ParseError;
139 class ParseOrSemanticError;
140 class Invoice;
141 class SignedRawInvoice;
142 class RawInvoice;
143 class RawDataPart;
144 class PositiveTimestamp;
145 class SiPrefix;
146 class Currency;
147 class Sha256;
148 class Description;
149 class PayeePubKey;
150 class ExpiryTime;
151 class MinFinalCltvExpiry;
152 class Fallback;
153 class InvoiceSignature;
154 class PrivateRoute;
155 class CreationError;
156 class SemanticError;
157 class SignOrCreationError;
158 class RapidGossipSync;
159 class Persister;
160 class DecodeError;
161 class Init;
162 class ErrorMessage;
163 class WarningMessage;
164 class Ping;
165 class Pong;
166 class OpenChannel;
167 class AcceptChannel;
168 class FundingCreated;
169 class FundingSigned;
170 class ChannelReady;
171 class Shutdown;
172 class ClosingSignedFeeRange;
173 class ClosingSigned;
174 class UpdateAddHTLC;
175 class OnionMessage;
176 class UpdateFulfillHTLC;
177 class UpdateFailHTLC;
178 class UpdateFailMalformedHTLC;
179 class CommitmentSigned;
180 class RevokeAndACK;
181 class UpdateFee;
182 class DataLossProtect;
183 class ChannelReestablish;
184 class AnnouncementSignatures;
185 class NetAddress;
186 class UnsignedNodeAnnouncement;
187 class NodeAnnouncement;
188 class UnsignedChannelAnnouncement;
189 class ChannelAnnouncement;
190 class UnsignedChannelUpdate;
191 class ChannelUpdate;
192 class QueryChannelRange;
193 class ReplyChannelRange;
194 class QueryShortChannelIds;
195 class ReplyShortChannelIdsEnd;
196 class GossipTimestampFilter;
197 class ErrorAction;
198 class LightningError;
199 class CommitmentUpdate;
200 class ChannelMessageHandler;
201 class RoutingMessageHandler;
202 class OnionMessageHandler;
203 class GraphSyncError;
204 class Level;
205 class Record;
206 class Logger;
207 class FutureCallback;
208 class Future;
209 class MonitorUpdateId;
210 class Persist;
211 class LockedChannelMonitor;
212 class ChainMonitor;
213 class CResult_LockedChannelMonitorNoneZ;
214 class CResult_PhantomRouteHintsDecodeErrorZ;
215 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
216 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
217 class CVec_C2Tuple_u32TxOutZZ;
218 class CResult_FundingCreatedDecodeErrorZ;
219 class CResult_ChannelInfoDecodeErrorZ;
220 class CResult_NoneSendErrorZ;
221 class CResult_CVec_u8ZPeerHandleErrorZ;
222 class CResult_GossipTimestampFilterDecodeErrorZ;
223 class COption_NetworkUpdateZ;
224 class COption_u64Z;
225 class CResult_PaymentPreimageAPIErrorZ;
226 class CResult_RouteHintDecodeErrorZ;
227 class COption_FilterZ;
228 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
229 class CResult_CommitmentSignedDecodeErrorZ;
230 class CVec_UpdateAddHTLCZ;
231 class COption_u32Z;
232 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
233 class CVec_C2Tuple_TxidBlockHashZZ;
234 class CResult_CommitmentTransactionDecodeErrorZ;
235 class CResult_TransactionNoneZ;
236 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
237 class CResult_ErrorMessageDecodeErrorZ;
238 class CResult_OpenChannelDecodeErrorZ;
239 class CResult_QueryChannelRangeDecodeErrorZ;
240 class CVec_TransactionZ;
241 class C2Tuple_TxidBlockHashZ;
242 class CResult_ChannelFeaturesDecodeErrorZ;
243 class CResult_ChannelReadyDecodeErrorZ;
244 class CResult_UpdateFeeDecodeErrorZ;
245 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
246 class CResult_boolLightningErrorZ;
247 class CResult_NodeIdDecodeErrorZ;
248 class COption_HTLCDestinationZ;
249 class C2Tuple_BlockHashChannelMonitorZ;
250 class CResult_ShutdownScriptInvalidShutdownScriptZ;
251 class CResult_NodeAnnouncementInfoDecodeErrorZ;
252 class CResult_COption_NetworkUpdateZDecodeErrorZ;
253 class CVec_UpdateFailMalformedHTLCZ;
254 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
255 class CVec_RouteHopZ;
256 class COption_CustomOnionMessageContentsZ;
257 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
258 class CVec_ThirtyTwoBytesZ;
259 class CResult_ClosingSignedDecodeErrorZ;
260 class CResult_NonePaymentErrorZ;
261 class CVec_CResult_NoneAPIErrorZZ;
262 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
263 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
264 class CVec_RouteHintHopZ;
265 class CResult_PaymentParametersDecodeErrorZ;
266 class CVec_U5Z;
267 class CResult_SignDecodeErrorZ;
268 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
269 class COption_AccessZ;
270 class CResult_PongDecodeErrorZ;
271 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
272 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
273 class C2Tuple_SignatureSignatureZ;
274 class C2Tuple_BlockHashChannelManagerZ;
275 class CResult_ChannelTransactionParametersDecodeErrorZ;
276 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
277 class C2Tuple_PaymentHashPaymentIdZ;
278 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
279 class CResult_NoneErrorZ;
280 class CResult_InFlightHtlcsDecodeErrorZ;
281 class CResult_COption_HTLCDestinationZDecodeErrorZ;
282 class CResult_SiPrefixParseErrorZ;
283 class CResult_BlindedHopDecodeErrorZ;
284 class CResult_TrustedCommitmentTransactionNoneZ;
285 class CResult_FixedPenaltyScorerDecodeErrorZ;
286 class CResult_NoneLightningErrorZ;
287 class CResult_NonePeerHandleErrorZ;
288 class CResult_COption_EventZDecodeErrorZ;
289 class CResult_CVec_SignatureZNoneZ;
290 class COption_CVec_NetAddressZZ;
291 class CResult__u832APIErrorZ;
292 class CResult_PaymentIdPaymentErrorZ;
293 class CResult_COption_MonitorEventZDecodeErrorZ;
294 class CResult_RoutingFeesDecodeErrorZ;
295 class CResult_PayeePubKeyErrorZ;
296 class CResult_DescriptionCreationErrorZ;
297 class CResult_QueryShortChannelIdsDecodeErrorZ;
298 class CResult_InvoiceSemanticErrorZ;
299 class CResult_UpdateAddHTLCDecodeErrorZ;
300 class COption_MonitorEventZ;
301 class COption_TypeZ;
302 class CResult_COption_TypeZDecodeErrorZ;
303 class CResult_UpdateFailHTLCDecodeErrorZ;
304 class CResult_InvoiceParseOrSemanticErrorZ;
305 class CResult_RevokeAndACKDecodeErrorZ;
306 class CResult_SpendableOutputDescriptorDecodeErrorZ;
307 class CResult_UnsignedChannelUpdateDecodeErrorZ;
308 class CVec_EventZ;
309 class CResult_NoneSemanticErrorZ;
310 class CVec_C2Tuple_u32ScriptZZ;
311 class CResult_COption_ClosureReasonZDecodeErrorZ;
312 class CResult_PaymentHashPaymentSendFailureZ;
313 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
314 class CResult_RouteParametersDecodeErrorZ;
315 class CResult_PrivateRouteCreationErrorZ;
316 class CResult_NodeAliasDecodeErrorZ;
317 class CVec_UpdateFulfillHTLCZ;
318 class CResult_AnnouncementSignaturesDecodeErrorZ;
319 class CResult_UpdateFulfillHTLCDecodeErrorZ;
320 class CResult_NodeFeaturesDecodeErrorZ;
321 class CResult_InMemorySignerDecodeErrorZ;
322 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
323 class COption_ScalarZ;
324 class CResult_ChannelUpdateInfoDecodeErrorZ;
325 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
326 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
327 class CVec_TxOutZ;
328 class CVec_UpdateFailHTLCZ;
329 class CVec_SpendableOutputDescriptorZ;
330 class COption_C2Tuple_u64u64ZZ;
331 class CResult_ChannelAnnouncementDecodeErrorZ;
332 class CResult_OfferFeaturesDecodeErrorZ;
333 class C2Tuple_SignatureCVec_SignatureZZ;
334 class CResult_HTLCUpdateDecodeErrorZ;
335 class CVec_OutPointZ;
336 class COption_WriteableScoreZ;
337 class CResult_PositiveTimestampCreationErrorZ;
338 class CResult_InvoiceFeaturesDecodeErrorZ;
339 class CResult_ChannelMonitorUpdateDecodeErrorZ;
340 class CResult_ReplyChannelRangeDecodeErrorZ;
341 class CResult_TxOutAccessErrorZ;
342 class CResult_TrustedClosingTransactionNoneZ;
343 class CResult_NetAddressDecodeErrorZ;
344 class C2Tuple_PublicKeyTypeZ;
345 class CResult_ChannelReestablishDecodeErrorZ;
346 class CResult_OnionMessageDecodeErrorZ;
347 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
348 class CResult_InvoiceSignOrCreationErrorZ;
349 class CResult_InitFeaturesDecodeErrorZ;
350 class CResult_PublicKeyNoneZ;
351 class CResult_PingDecodeErrorZ;
352 class CVec_TransactionOutputsZ;
353 class COption_HTLCClaimZ;
354 class CVec_CVec_u8ZZ;
355 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ;
356 class CResult_ShutdownScriptDecodeErrorZ;
357 class CResult_ProbabilisticScorerDecodeErrorZ;
358 class CResult_TxCreationKeysDecodeErrorZ;
359 class C2Tuple_usizeTransactionZ;
360 class CResult_NodeAnnouncementDecodeErrorZ;
361 class CResult_BlindedPathDecodeErrorZ;
362 class CVec_ChannelMonitorZ;
363 class CResult_RouteHopDecodeErrorZ;
364 class CVec_BalanceZ;
365 class CResult_FundingSignedDecodeErrorZ;
366 class CResult_RecoverableSignatureNoneZ;
367 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
368 class CResult_NetworkGraphDecodeErrorZ;
369 class CResult_NodeInfoDecodeErrorZ;
370 class CVec_NodeIdZ;
371 class CResult_RouteLightningErrorZ;
372 class CResult_ChannelPublicKeysDecodeErrorZ;
373 class CVec_u8Z;
374 class CResult_NonePaymentSendFailureZ;
375 class CResult_HolderCommitmentTransactionDecodeErrorZ;
376 class CResult_WarningMessageDecodeErrorZ;
377 class CResult_ChannelCounterpartyDecodeErrorZ;
378 class CResult_SignatureNoneZ;
379 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
380 class CResult_SecretKeyNoneZ;
381 class CResult_InitDecodeErrorZ;
382 class CVec_MonitorUpdateIdZ;
383 class CResult_PaymentPurposeDecodeErrorZ;
384 class CResult_OutPointDecodeErrorZ;
385 class CVec_ChannelDetailsZ;
386 class CVec_MessageSendEventZ;
387 class COption_NetAddressZ;
388 class C2Tuple_OutPointScriptZ;
389 class CResult_RouteHintHopDecodeErrorZ;
390 class CResult_C2Tuple_SignatureSignatureZNoneZ;
391 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
392 class CResult_SharedSecretNoneZ;
393 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
394 class CResult_CVec_CVec_u8ZZNoneZ;
395 class C2Tuple_PaymentHashPaymentSecretZ;
396 class CResult_AcceptChannelDecodeErrorZ;
397 class CVec_SignatureZ;
398 class CVec_u64Z;
399 class CResult_StringErrorZ;
400 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
401 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
402 class COption_EventZ;
403 class CResult_ChannelTypeFeaturesDecodeErrorZ;
404 class CVec_RouteHintZ;
405 class COption_u16Z;
406 class CVec_CVec_RouteHopZZ;
407 class CVec_C2Tuple_PublicKeyTypeZZ;
408 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
409 class CResult_u32GraphSyncErrorZ;
410 class CResult_InvoiceRequestFeaturesDecodeErrorZ;
411 class CVec_PhantomRouteHintsZ;
412 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
413 class CResult_NoneAPIErrorZ;
414 class CVec_NetAddressZ;
415 class CResult_ChannelDetailsDecodeErrorZ;
416 class CVec_PublicKeyZ;
417 class CVec_C2Tuple_usizeTransactionZZ;
418 class C2Tuple_u64u64Z;
419 class C2Tuple_u32TxOutZ;
420 class CResult_PaymentSecretNoneZ;
421 class CResult_ChannelConfigDecodeErrorZ;
422 class CVec_PrivateRouteZ;
423 class CResult_BlindedPathNoneZ;
424 class CResult_ShutdownDecodeErrorZ;
425 class CVec_MonitorEventZ;
426 class CVec_PaymentPreimageZ;
427 class CResult_PublicKeyErrorZ;
428 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
429 class CResult_NoneNoneZ;
430 class COption_ClosureReasonZ;
431 class COption_u128Z;
432 class CVec_APIErrorZ;
433 class CResult_boolPeerHandleErrorZ;
434 class CResult_ChannelUpdateDecodeErrorZ;
435 class CResult_PaymentSecretAPIErrorZ;
436 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
437 class C2Tuple_u32ScriptZ;
438 class CResult_SignedRawInvoiceParseErrorZ;
439 class CResult_RouteDecodeErrorZ;
440 class COption_NoneZ;
441
442 class Str {
443 private:
444         LDKStr self;
445 public:
446         Str(const Str&) = delete;
447         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
448         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
449         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
450         ~Str() { Str_free(self); }
451         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
452         LDKStr* operator &() { return &self; }
453         LDKStr* operator ->() { return &self; }
454         const LDKStr* operator &() const { return &self; }
455         const LDKStr* operator ->() const { return &self; }
456 };
457 class HTLCClaim {
458 private:
459         LDKHTLCClaim self;
460 public:
461         HTLCClaim(const HTLCClaim&) = delete;
462         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
463         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
464         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
465         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
466         LDKHTLCClaim* operator &() { return &self; }
467         LDKHTLCClaim* operator ->() { return &self; }
468         const LDKHTLCClaim* operator &() const { return &self; }
469         const LDKHTLCClaim* operator ->() const { return &self; }
470 };
471 class CounterpartyCommitmentSecrets {
472 private:
473         LDKCounterpartyCommitmentSecrets self;
474 public:
475         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
476         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
477         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
478         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
479         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
480         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
481         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
482         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
483         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
484         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
485 };
486 class TxCreationKeys {
487 private:
488         LDKTxCreationKeys self;
489 public:
490         TxCreationKeys(const TxCreationKeys&) = delete;
491         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
492         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
493         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
494         ~TxCreationKeys() { TxCreationKeys_free(self); }
495         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
496         LDKTxCreationKeys* operator &() { return &self; }
497         LDKTxCreationKeys* operator ->() { return &self; }
498         const LDKTxCreationKeys* operator &() const { return &self; }
499         const LDKTxCreationKeys* operator ->() const { return &self; }
500 };
501 class ChannelPublicKeys {
502 private:
503         LDKChannelPublicKeys self;
504 public:
505         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
506         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
507         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
508         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
509         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
510         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
511         LDKChannelPublicKeys* operator &() { return &self; }
512         LDKChannelPublicKeys* operator ->() { return &self; }
513         const LDKChannelPublicKeys* operator &() const { return &self; }
514         const LDKChannelPublicKeys* operator ->() const { return &self; }
515 };
516 class HTLCOutputInCommitment {
517 private:
518         LDKHTLCOutputInCommitment self;
519 public:
520         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
521         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
522         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
523         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
524         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
525         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
526         LDKHTLCOutputInCommitment* operator &() { return &self; }
527         LDKHTLCOutputInCommitment* operator ->() { return &self; }
528         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
529         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
530 };
531 class ChannelTransactionParameters {
532 private:
533         LDKChannelTransactionParameters self;
534 public:
535         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
536         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
537         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
538         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
539         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
540         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
541         LDKChannelTransactionParameters* operator &() { return &self; }
542         LDKChannelTransactionParameters* operator ->() { return &self; }
543         const LDKChannelTransactionParameters* operator &() const { return &self; }
544         const LDKChannelTransactionParameters* operator ->() const { return &self; }
545 };
546 class CounterpartyChannelTransactionParameters {
547 private:
548         LDKCounterpartyChannelTransactionParameters self;
549 public:
550         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
551         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
552         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
553         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
554         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
555         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
556         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
557         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
558         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
559         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
560 };
561 class DirectedChannelTransactionParameters {
562 private:
563         LDKDirectedChannelTransactionParameters self;
564 public:
565         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
566         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
567         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
568         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
569         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
570         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
571         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
572         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
573         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
574         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
575 };
576 class HolderCommitmentTransaction {
577 private:
578         LDKHolderCommitmentTransaction self;
579 public:
580         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
581         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
582         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
583         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
584         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
585         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
586         LDKHolderCommitmentTransaction* operator &() { return &self; }
587         LDKHolderCommitmentTransaction* operator ->() { return &self; }
588         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
589         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
590 };
591 class BuiltCommitmentTransaction {
592 private:
593         LDKBuiltCommitmentTransaction self;
594 public:
595         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
596         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
597         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
598         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
599         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
600         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
601         LDKBuiltCommitmentTransaction* operator &() { return &self; }
602         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
603         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
604         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
605 };
606 class ClosingTransaction {
607 private:
608         LDKClosingTransaction self;
609 public:
610         ClosingTransaction(const ClosingTransaction&) = delete;
611         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
612         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
613         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
614         ~ClosingTransaction() { ClosingTransaction_free(self); }
615         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
616         LDKClosingTransaction* operator &() { return &self; }
617         LDKClosingTransaction* operator ->() { return &self; }
618         const LDKClosingTransaction* operator &() const { return &self; }
619         const LDKClosingTransaction* operator ->() const { return &self; }
620 };
621 class TrustedClosingTransaction {
622 private:
623         LDKTrustedClosingTransaction self;
624 public:
625         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
626         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
627         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
628         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
629         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
630         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
631         LDKTrustedClosingTransaction* operator &() { return &self; }
632         LDKTrustedClosingTransaction* operator ->() { return &self; }
633         const LDKTrustedClosingTransaction* operator &() const { return &self; }
634         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
635 };
636 class CommitmentTransaction {
637 private:
638         LDKCommitmentTransaction self;
639 public:
640         CommitmentTransaction(const CommitmentTransaction&) = delete;
641         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
642         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
643         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
644         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
645         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
646         LDKCommitmentTransaction* operator &() { return &self; }
647         LDKCommitmentTransaction* operator ->() { return &self; }
648         const LDKCommitmentTransaction* operator &() const { return &self; }
649         const LDKCommitmentTransaction* operator ->() const { return &self; }
650 };
651 class TrustedCommitmentTransaction {
652 private:
653         LDKTrustedCommitmentTransaction self;
654 public:
655         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
656         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
657         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
658         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
659         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
660         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
661         LDKTrustedCommitmentTransaction* operator &() { return &self; }
662         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
663         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
664         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
665 };
666 class ShutdownScript {
667 private:
668         LDKShutdownScript self;
669 public:
670         ShutdownScript(const ShutdownScript&) = delete;
671         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
672         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
673         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
674         ~ShutdownScript() { ShutdownScript_free(self); }
675         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
676         LDKShutdownScript* operator &() { return &self; }
677         LDKShutdownScript* operator ->() { return &self; }
678         const LDKShutdownScript* operator &() const { return &self; }
679         const LDKShutdownScript* operator ->() const { return &self; }
680 };
681 class InvalidShutdownScript {
682 private:
683         LDKInvalidShutdownScript self;
684 public:
685         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
686         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
687         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
688         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
689         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
690         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
691         LDKInvalidShutdownScript* operator &() { return &self; }
692         LDKInvalidShutdownScript* operator ->() { return &self; }
693         const LDKInvalidShutdownScript* operator &() const { return &self; }
694         const LDKInvalidShutdownScript* operator ->() const { return &self; }
695 };
696 class BlindedPath {
697 private:
698         LDKBlindedPath self;
699 public:
700         BlindedPath(const BlindedPath&) = delete;
701         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
702         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
703         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
704         ~BlindedPath() { BlindedPath_free(self); }
705         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
706         LDKBlindedPath* operator &() { return &self; }
707         LDKBlindedPath* operator ->() { return &self; }
708         const LDKBlindedPath* operator &() const { return &self; }
709         const LDKBlindedPath* operator ->() const { return &self; }
710 };
711 class BlindedHop {
712 private:
713         LDKBlindedHop self;
714 public:
715         BlindedHop(const BlindedHop&) = delete;
716         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
717         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
718         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
719         ~BlindedHop() { BlindedHop_free(self); }
720         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
721         LDKBlindedHop* operator &() { return &self; }
722         LDKBlindedHop* operator ->() { return &self; }
723         const LDKBlindedHop* operator &() const { return &self; }
724         const LDKBlindedHop* operator ->() const { return &self; }
725 };
726 class BackgroundProcessor {
727 private:
728         LDKBackgroundProcessor self;
729 public:
730         BackgroundProcessor(const BackgroundProcessor&) = delete;
731         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
732         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
733         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
734         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
735         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
736         LDKBackgroundProcessor* operator &() { return &self; }
737         LDKBackgroundProcessor* operator ->() { return &self; }
738         const LDKBackgroundProcessor* operator &() const { return &self; }
739         const LDKBackgroundProcessor* operator ->() const { return &self; }
740 };
741 class GossipSync {
742 private:
743         LDKGossipSync self;
744 public:
745         GossipSync(const GossipSync&) = delete;
746         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
747         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
748         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
749         ~GossipSync() { GossipSync_free(self); }
750         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
751         LDKGossipSync* operator &() { return &self; }
752         LDKGossipSync* operator ->() { return &self; }
753         const LDKGossipSync* operator &() const { return &self; }
754         const LDKGossipSync* operator ->() const { return &self; }
755 };
756 class DefaultRouter {
757 private:
758         LDKDefaultRouter self;
759 public:
760         DefaultRouter(const DefaultRouter&) = delete;
761         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
762         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
763         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
764         ~DefaultRouter() { DefaultRouter_free(self); }
765         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
766         LDKDefaultRouter* operator &() { return &self; }
767         LDKDefaultRouter* operator ->() { return &self; }
768         const LDKDefaultRouter* operator &() const { return &self; }
769         const LDKDefaultRouter* operator ->() const { return &self; }
770 };
771 class Router {
772 private:
773         LDKRouter self;
774 public:
775         Router(const Router&) = delete;
776         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
777         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
778         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
779         ~Router() { Router_free(self); }
780         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
781         LDKRouter* operator &() { return &self; }
782         LDKRouter* operator ->() { return &self; }
783         const LDKRouter* operator &() const { return &self; }
784         const LDKRouter* operator ->() const { return &self; }
785         /**
786          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
787          * 
788          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
789          */
790         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs);
791         /**
792          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values. Includes
793          *  `PaymentHash` and `PaymentId` to be able to correlate the request with a specific payment.
794          * 
795          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
796          */
797         inline LDK::CResult_RouteLightningErrorZ find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id);
798         /**
799          *  Lets the router know that payment through a specific path has failed.
800          */
801         inline void notify_payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
802         /**
803          *  Lets the router know that payment through a specific path was successful.
804          */
805         inline void notify_payment_path_successful(struct LDKCVec_RouteHopZ path);
806         /**
807          *  Lets the router know that a payment probe was successful.
808          */
809         inline void notify_payment_probe_successful(struct LDKCVec_RouteHopZ path);
810         /**
811          *  Lets the router know that a payment probe failed.
812          */
813         inline void notify_payment_probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
814 };
815 class ScorerAccountingForInFlightHtlcs {
816 private:
817         LDKScorerAccountingForInFlightHtlcs self;
818 public:
819         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
820         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
821         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
822         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
823         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
824         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
825         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
826         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
827         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
828         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
829 };
830 class InFlightHtlcs {
831 private:
832         LDKInFlightHtlcs self;
833 public:
834         InFlightHtlcs(const InFlightHtlcs&) = delete;
835         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
836         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
837         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
838         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
839         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
840         LDKInFlightHtlcs* operator &() { return &self; }
841         LDKInFlightHtlcs* operator ->() { return &self; }
842         const LDKInFlightHtlcs* operator &() const { return &self; }
843         const LDKInFlightHtlcs* operator ->() const { return &self; }
844 };
845 class RouteHop {
846 private:
847         LDKRouteHop self;
848 public:
849         RouteHop(const RouteHop&) = delete;
850         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
851         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
852         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
853         ~RouteHop() { RouteHop_free(self); }
854         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
855         LDKRouteHop* operator &() { return &self; }
856         LDKRouteHop* operator ->() { return &self; }
857         const LDKRouteHop* operator &() const { return &self; }
858         const LDKRouteHop* operator ->() const { return &self; }
859 };
860 class Route {
861 private:
862         LDKRoute self;
863 public:
864         Route(const Route&) = delete;
865         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
866         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
867         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
868         ~Route() { Route_free(self); }
869         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
870         LDKRoute* operator &() { return &self; }
871         LDKRoute* operator ->() { return &self; }
872         const LDKRoute* operator &() const { return &self; }
873         const LDKRoute* operator ->() const { return &self; }
874 };
875 class RouteParameters {
876 private:
877         LDKRouteParameters self;
878 public:
879         RouteParameters(const RouteParameters&) = delete;
880         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
881         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
882         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
883         ~RouteParameters() { RouteParameters_free(self); }
884         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
885         LDKRouteParameters* operator &() { return &self; }
886         LDKRouteParameters* operator ->() { return &self; }
887         const LDKRouteParameters* operator &() const { return &self; }
888         const LDKRouteParameters* operator ->() const { return &self; }
889 };
890 class PaymentParameters {
891 private:
892         LDKPaymentParameters self;
893 public:
894         PaymentParameters(const PaymentParameters&) = delete;
895         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
896         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
897         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
898         ~PaymentParameters() { PaymentParameters_free(self); }
899         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
900         LDKPaymentParameters* operator &() { return &self; }
901         LDKPaymentParameters* operator ->() { return &self; }
902         const LDKPaymentParameters* operator &() const { return &self; }
903         const LDKPaymentParameters* operator ->() const { return &self; }
904 };
905 class RouteHint {
906 private:
907         LDKRouteHint self;
908 public:
909         RouteHint(const RouteHint&) = delete;
910         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
911         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
912         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
913         ~RouteHint() { RouteHint_free(self); }
914         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
915         LDKRouteHint* operator &() { return &self; }
916         LDKRouteHint* operator ->() { return &self; }
917         const LDKRouteHint* operator &() const { return &self; }
918         const LDKRouteHint* operator ->() const { return &self; }
919 };
920 class RouteHintHop {
921 private:
922         LDKRouteHintHop self;
923 public:
924         RouteHintHop(const RouteHintHop&) = delete;
925         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
926         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
927         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
928         ~RouteHintHop() { RouteHintHop_free(self); }
929         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
930         LDKRouteHintHop* operator &() { return &self; }
931         LDKRouteHintHop* operator ->() { return &self; }
932         const LDKRouteHintHop* operator &() const { return &self; }
933         const LDKRouteHintHop* operator ->() const { return &self; }
934 };
935 class BroadcasterInterface {
936 private:
937         LDKBroadcasterInterface self;
938 public:
939         BroadcasterInterface(const BroadcasterInterface&) = delete;
940         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
941         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
942         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
943         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
944         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
945         LDKBroadcasterInterface* operator &() { return &self; }
946         LDKBroadcasterInterface* operator ->() { return &self; }
947         const LDKBroadcasterInterface* operator &() const { return &self; }
948         const LDKBroadcasterInterface* operator ->() const { return &self; }
949         /**
950          *  Sends a transaction out to (hopefully) be mined.
951          */
952         inline void broadcast_transaction(struct LDKTransaction tx);
953 };
954 class ConfirmationTarget {
955 private:
956         LDKConfirmationTarget self;
957 public:
958         ConfirmationTarget(const ConfirmationTarget&) = delete;
959         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
960         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
961         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
962         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
963         LDKConfirmationTarget* operator &() { return &self; }
964         LDKConfirmationTarget* operator ->() { return &self; }
965         const LDKConfirmationTarget* operator &() const { return &self; }
966         const LDKConfirmationTarget* operator ->() const { return &self; }
967 };
968 class FeeEstimator {
969 private:
970         LDKFeeEstimator self;
971 public:
972         FeeEstimator(const FeeEstimator&) = delete;
973         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
974         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
975         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
976         ~FeeEstimator() { FeeEstimator_free(self); }
977         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
978         LDKFeeEstimator* operator &() { return &self; }
979         LDKFeeEstimator* operator ->() { return &self; }
980         const LDKFeeEstimator* operator &() const { return &self; }
981         const LDKFeeEstimator* operator ->() const { return &self; }
982         /**
983          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
984          * 
985          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
986          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
987          * 
988          *  The following unit conversions can be used to convert to sats/KW:
989          *   * satoshis-per-byte * 250
990          *   * satoshis-per-kbyte / 4
991          */
992         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
993 };
994 class PaymentPurpose {
995 private:
996         LDKPaymentPurpose self;
997 public:
998         PaymentPurpose(const PaymentPurpose&) = delete;
999         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
1000         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
1001         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
1002         ~PaymentPurpose() { PaymentPurpose_free(self); }
1003         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
1004         LDKPaymentPurpose* operator &() { return &self; }
1005         LDKPaymentPurpose* operator ->() { return &self; }
1006         const LDKPaymentPurpose* operator &() const { return &self; }
1007         const LDKPaymentPurpose* operator ->() const { return &self; }
1008 };
1009 class ClosureReason {
1010 private:
1011         LDKClosureReason self;
1012 public:
1013         ClosureReason(const ClosureReason&) = delete;
1014         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
1015         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
1016         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
1017         ~ClosureReason() { ClosureReason_free(self); }
1018         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
1019         LDKClosureReason* operator &() { return &self; }
1020         LDKClosureReason* operator ->() { return &self; }
1021         const LDKClosureReason* operator &() const { return &self; }
1022         const LDKClosureReason* operator ->() const { return &self; }
1023 };
1024 class HTLCDestination {
1025 private:
1026         LDKHTLCDestination self;
1027 public:
1028         HTLCDestination(const HTLCDestination&) = delete;
1029         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
1030         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
1031         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
1032         ~HTLCDestination() { HTLCDestination_free(self); }
1033         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
1034         LDKHTLCDestination* operator &() { return &self; }
1035         LDKHTLCDestination* operator ->() { return &self; }
1036         const LDKHTLCDestination* operator &() const { return &self; }
1037         const LDKHTLCDestination* operator ->() const { return &self; }
1038 };
1039 class Event {
1040 private:
1041         LDKEvent self;
1042 public:
1043         Event(const Event&) = delete;
1044         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
1045         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
1046         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
1047         ~Event() { Event_free(self); }
1048         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
1049         LDKEvent* operator &() { return &self; }
1050         LDKEvent* operator ->() { return &self; }
1051         const LDKEvent* operator &() const { return &self; }
1052         const LDKEvent* operator ->() const { return &self; }
1053 };
1054 class MessageSendEvent {
1055 private:
1056         LDKMessageSendEvent self;
1057 public:
1058         MessageSendEvent(const MessageSendEvent&) = delete;
1059         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
1060         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
1061         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
1062         ~MessageSendEvent() { MessageSendEvent_free(self); }
1063         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
1064         LDKMessageSendEvent* operator &() { return &self; }
1065         LDKMessageSendEvent* operator ->() { return &self; }
1066         const LDKMessageSendEvent* operator &() const { return &self; }
1067         const LDKMessageSendEvent* operator ->() const { return &self; }
1068 };
1069 class MessageSendEventsProvider {
1070 private:
1071         LDKMessageSendEventsProvider self;
1072 public:
1073         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
1074         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
1075         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
1076         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
1077         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
1078         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
1079         LDKMessageSendEventsProvider* operator &() { return &self; }
1080         LDKMessageSendEventsProvider* operator ->() { return &self; }
1081         const LDKMessageSendEventsProvider* operator &() const { return &self; }
1082         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
1083         /**
1084          *  Gets the list of pending events which were generated by previous actions, clearing the list
1085          *  in the process.
1086          */
1087         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
1088 };
1089 class OnionMessageProvider {
1090 private:
1091         LDKOnionMessageProvider self;
1092 public:
1093         OnionMessageProvider(const OnionMessageProvider&) = delete;
1094         OnionMessageProvider(OnionMessageProvider&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageProvider)); }
1095         OnionMessageProvider(LDKOnionMessageProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageProvider)); }
1096         operator LDKOnionMessageProvider() && { LDKOnionMessageProvider res = self; memset(&self, 0, sizeof(LDKOnionMessageProvider)); return res; }
1097         ~OnionMessageProvider() { OnionMessageProvider_free(self); }
1098         OnionMessageProvider& operator=(OnionMessageProvider&& o) { OnionMessageProvider_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageProvider)); return *this; }
1099         LDKOnionMessageProvider* operator &() { return &self; }
1100         LDKOnionMessageProvider* operator ->() { return &self; }
1101         const LDKOnionMessageProvider* operator &() const { return &self; }
1102         const LDKOnionMessageProvider* operator ->() const { return &self; }
1103         /**
1104          *  Gets the next pending onion message for the peer with the given node id.
1105          * 
1106          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
1107          */
1108         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
1109 };
1110 class EventsProvider {
1111 private:
1112         LDKEventsProvider self;
1113 public:
1114         EventsProvider(const EventsProvider&) = delete;
1115         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1116         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1117         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1118         ~EventsProvider() { EventsProvider_free(self); }
1119         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1120         LDKEventsProvider* operator &() { return &self; }
1121         LDKEventsProvider* operator ->() { return &self; }
1122         const LDKEventsProvider* operator &() const { return &self; }
1123         const LDKEventsProvider* operator ->() const { return &self; }
1124         /**
1125          *  Processes any events generated since the last call using the given event handler.
1126          * 
1127          *  See the trait-level documentation for requirements.
1128          */
1129         inline void process_pending_events(struct LDKEventHandler handler);
1130 };
1131 class EventHandler {
1132 private:
1133         LDKEventHandler self;
1134 public:
1135         EventHandler(const EventHandler&) = delete;
1136         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1137         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1138         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1139         ~EventHandler() { EventHandler_free(self); }
1140         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1141         LDKEventHandler* operator &() { return &self; }
1142         LDKEventHandler* operator ->() { return &self; }
1143         const LDKEventHandler* operator &() const { return &self; }
1144         const LDKEventHandler* operator ->() const { return &self; }
1145         /**
1146          *  Handles the given [`Event`].
1147          * 
1148          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1149          */
1150         inline void handle_event(struct LDKEvent event);
1151 };
1152 class BestBlock {
1153 private:
1154         LDKBestBlock self;
1155 public:
1156         BestBlock(const BestBlock&) = delete;
1157         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1158         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1159         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1160         ~BestBlock() { BestBlock_free(self); }
1161         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1162         LDKBestBlock* operator &() { return &self; }
1163         LDKBestBlock* operator ->() { return &self; }
1164         const LDKBestBlock* operator &() const { return &self; }
1165         const LDKBestBlock* operator ->() const { return &self; }
1166 };
1167 class AccessError {
1168 private:
1169         LDKAccessError self;
1170 public:
1171         AccessError(const AccessError&) = delete;
1172         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
1173         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
1174         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
1175         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
1176         LDKAccessError* operator &() { return &self; }
1177         LDKAccessError* operator ->() { return &self; }
1178         const LDKAccessError* operator &() const { return &self; }
1179         const LDKAccessError* operator ->() const { return &self; }
1180 };
1181 class Access {
1182 private:
1183         LDKAccess self;
1184 public:
1185         Access(const Access&) = delete;
1186         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
1187         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
1188         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
1189         ~Access() { Access_free(self); }
1190         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
1191         LDKAccess* operator &() { return &self; }
1192         LDKAccess* operator ->() { return &self; }
1193         const LDKAccess* operator &() const { return &self; }
1194         const LDKAccess* operator ->() const { return &self; }
1195         /**
1196          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
1197          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
1198          *  is unknown.
1199          * 
1200          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
1201          */
1202         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
1203 };
1204 class Listen {
1205 private:
1206         LDKListen self;
1207 public:
1208         Listen(const Listen&) = delete;
1209         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1210         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1211         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1212         ~Listen() { Listen_free(self); }
1213         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1214         LDKListen* operator &() { return &self; }
1215         LDKListen* operator ->() { return &self; }
1216         const LDKListen* operator &() const { return &self; }
1217         const LDKListen* operator ->() const { return &self; }
1218         /**
1219          *  Notifies the listener that a block was added at the given height, with the transaction data
1220          *  possibly filtered.
1221          */
1222         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1223         /**
1224          *  Notifies the listener that a block was added at the given height.
1225          */
1226         inline void block_connected(struct LDKu8slice block, uint32_t height);
1227         /**
1228          *  Notifies the listener that a block was removed at the given height.
1229          */
1230         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1231 };
1232 class Confirm {
1233 private:
1234         LDKConfirm self;
1235 public:
1236         Confirm(const Confirm&) = delete;
1237         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1238         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1239         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1240         ~Confirm() { Confirm_free(self); }
1241         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1242         LDKConfirm* operator &() { return &self; }
1243         LDKConfirm* operator ->() { return &self; }
1244         const LDKConfirm* operator &() const { return &self; }
1245         const LDKConfirm* operator ->() const { return &self; }
1246         /**
1247          *  Notifies LDK of transactions confirmed in a block with a given header and height.
1248          * 
1249          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
1250          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1251          *  appearing in the same block do not need to be included in the same call; instead, multiple
1252          *  calls with additional transactions may be made so long as they are made in [chain order].
1253          * 
1254          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1255          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1256          *  longer in the chain as of the last call to [`best_block_updated`].
1257          * 
1258          *  [chain order]: Confirm#order
1259          *  [`best_block_updated`]: Self::best_block_updated
1260          */
1261         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1262         /**
1263          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
1264          * 
1265          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
1266          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
1267          *  given block hash. Once called, the given transaction will not be returned
1268          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
1269          * 
1270          *  [`get_relevant_txids`]: Self::get_relevant_txids
1271          *  [`transactions_confirmed`]: Self::transactions_confirmed
1272          */
1273         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1274         /**
1275          *  Notifies LDK of an update to the best header connected at the given height.
1276          * 
1277          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
1278          *  blocks.
1279          */
1280         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1281         /**
1282          *  Returns transactions that must be monitored for reorganization out of the chain along
1283          *  with the hash of the block as part of which it had been previously confirmed.
1284          * 
1285          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
1286          *  confirmations to be safe from a chain reorganization. Will not include any transactions
1287          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
1288          * 
1289          *  Must be called to determine the subset of transactions that must be monitored for
1290          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1291          *  other interface methods. Thus, this is useful to determine which transactions must be
1292          *  given to [`transaction_unconfirmed`].
1293          * 
1294          *  If any of the returned transactions are confirmed in a block other than the one with the
1295          *  given hash, they need to be unconfirmed and reconfirmed via [`transaction_unconfirmed`] and
1296          *  [`transactions_confirmed`], respectively.
1297          * 
1298          *  [`transactions_confirmed`]: Self::transactions_confirmed
1299          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1300          */
1301         inline LDK::CVec_C2Tuple_TxidBlockHashZZ get_relevant_txids();
1302 };
1303 class ChannelMonitorUpdateStatus {
1304 private:
1305         LDKChannelMonitorUpdateStatus self;
1306 public:
1307         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
1308         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
1309         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
1310         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
1311         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
1312         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
1313         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
1314         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
1315         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
1316 };
1317 class Watch {
1318 private:
1319         LDKWatch self;
1320 public:
1321         Watch(const Watch&) = delete;
1322         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1323         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1324         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1325         ~Watch() { Watch_free(self); }
1326         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1327         LDKWatch* operator &() { return &self; }
1328         LDKWatch* operator ->() { return &self; }
1329         const LDKWatch* operator &() const { return &self; }
1330         const LDKWatch* operator ->() const { return &self; }
1331         /**
1332          *  Watches a channel identified by `funding_txo` using `monitor`.
1333          * 
1334          *  Implementations are responsible for watching the chain for the funding transaction along
1335          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1336          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1337          * 
1338          *  Note: this interface MUST error with [`ChannelMonitorUpdateStatus::PermanentFailure`] if
1339          *  the given `funding_txo` has previously been registered via `watch_channel`.
1340          * 
1341          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1342          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1343          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1344          */
1345         inline LDK::ChannelMonitorUpdateStatus watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1346         /**
1347          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1348          * 
1349          *  Implementations must call [`update_monitor`] with the given update. See
1350          *  [`ChannelMonitorUpdateStatus`] for invariants around returning an error.
1351          * 
1352          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1353          */
1354         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1355         /**
1356          *  Returns any monitor events since the last call. Subsequent calls must only return new
1357          *  events.
1358          * 
1359          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1360          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1361          *  to disk.
1362          * 
1363          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1364          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
1365          */
1366         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1367 };
1368 class Filter {
1369 private:
1370         LDKFilter self;
1371 public:
1372         Filter(const Filter&) = delete;
1373         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1374         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1375         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1376         ~Filter() { Filter_free(self); }
1377         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1378         LDKFilter* operator &() { return &self; }
1379         LDKFilter* operator ->() { return &self; }
1380         const LDKFilter* operator &() const { return &self; }
1381         const LDKFilter* operator ->() const { return &self; }
1382         /**
1383          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1384          *  a spending condition.
1385          */
1386         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1387         /**
1388          *  Registers interest in spends of a transaction output.
1389          * 
1390          *  Note that this method might be called during processing of a new block. You therefore need
1391          *  to ensure that also dependent output spents within an already connected block are correctly
1392          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
1393          *  registered mid-processing.
1394          */
1395         inline void register_output(struct LDKWatchedOutput output);
1396 };
1397 class WatchedOutput {
1398 private:
1399         LDKWatchedOutput self;
1400 public:
1401         WatchedOutput(const WatchedOutput&) = delete;
1402         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1403         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1404         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1405         ~WatchedOutput() { WatchedOutput_free(self); }
1406         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1407         LDKWatchedOutput* operator &() { return &self; }
1408         LDKWatchedOutput* operator ->() { return &self; }
1409         const LDKWatchedOutput* operator &() const { return &self; }
1410         const LDKWatchedOutput* operator ->() const { return &self; }
1411 };
1412 class Score {
1413 private:
1414         LDKScore self;
1415 public:
1416         Score(const Score&) = delete;
1417         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1418         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1419         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1420         ~Score() { Score_free(self); }
1421         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1422         LDKScore* operator &() { return &self; }
1423         LDKScore* operator ->() { return &self; }
1424         const LDKScore* operator &() const { return &self; }
1425         const LDKScore* operator ->() const { return &self; }
1426         /**
1427          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1428          *  given channel in the direction from `source` to `target`.
1429          * 
1430          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1431          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1432          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1433          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1434          *  Thus, implementations should be overflow-safe.
1435          */
1436         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);
1437         /**
1438          *  Handles updating channel penalties after failing to route through a channel.
1439          */
1440         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1441         /**
1442          *  Handles updating channel penalties after successfully routing along a path.
1443          */
1444         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1445         /**
1446          *  Handles updating channel penalties after a probe over the given path failed.
1447          */
1448         inline void probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1449         /**
1450          *  Handles updating channel penalties after a probe over the given path succeeded.
1451          */
1452         inline void probe_successful(struct LDKCVec_RouteHopZ path);
1453 };
1454 class LockableScore {
1455 private:
1456         LDKLockableScore self;
1457 public:
1458         LockableScore(const LockableScore&) = delete;
1459         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1460         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1461         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1462         ~LockableScore() { LockableScore_free(self); }
1463         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1464         LDKLockableScore* operator &() { return &self; }
1465         LDKLockableScore* operator ->() { return &self; }
1466         const LDKLockableScore* operator &() const { return &self; }
1467         const LDKLockableScore* operator ->() const { return &self; }
1468         /**
1469          *  Returns the locked scorer.
1470          */
1471         inline LDK::Score lock();
1472 };
1473 class WriteableScore {
1474 private:
1475         LDKWriteableScore self;
1476 public:
1477         WriteableScore(const WriteableScore&) = delete;
1478         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1479         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1480         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1481         ~WriteableScore() { WriteableScore_free(self); }
1482         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1483         LDKWriteableScore* operator &() { return &self; }
1484         LDKWriteableScore* operator ->() { return &self; }
1485         const LDKWriteableScore* operator &() const { return &self; }
1486         const LDKWriteableScore* operator ->() const { return &self; }
1487 };
1488 class MultiThreadedLockableScore {
1489 private:
1490         LDKMultiThreadedLockableScore self;
1491 public:
1492         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1493         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1494         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1495         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1496         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1497         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1498         LDKMultiThreadedLockableScore* operator &() { return &self; }
1499         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1500         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1501         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1502 };
1503 class MultiThreadedScoreLock {
1504 private:
1505         LDKMultiThreadedScoreLock self;
1506 public:
1507         MultiThreadedScoreLock(const MultiThreadedScoreLock&) = delete;
1508         MultiThreadedScoreLock(MultiThreadedScoreLock&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLock)); }
1509         MultiThreadedScoreLock(LDKMultiThreadedScoreLock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLock)); }
1510         operator LDKMultiThreadedScoreLock() && { LDKMultiThreadedScoreLock res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLock)); return res; }
1511         ~MultiThreadedScoreLock() { MultiThreadedScoreLock_free(self); }
1512         MultiThreadedScoreLock& operator=(MultiThreadedScoreLock&& o) { MultiThreadedScoreLock_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLock)); return *this; }
1513         LDKMultiThreadedScoreLock* operator &() { return &self; }
1514         LDKMultiThreadedScoreLock* operator ->() { return &self; }
1515         const LDKMultiThreadedScoreLock* operator &() const { return &self; }
1516         const LDKMultiThreadedScoreLock* operator ->() const { return &self; }
1517 };
1518 class ChannelUsage {
1519 private:
1520         LDKChannelUsage self;
1521 public:
1522         ChannelUsage(const ChannelUsage&) = delete;
1523         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1524         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1525         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1526         ~ChannelUsage() { ChannelUsage_free(self); }
1527         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1528         LDKChannelUsage* operator &() { return &self; }
1529         LDKChannelUsage* operator ->() { return &self; }
1530         const LDKChannelUsage* operator &() const { return &self; }
1531         const LDKChannelUsage* operator ->() const { return &self; }
1532 };
1533 class FixedPenaltyScorer {
1534 private:
1535         LDKFixedPenaltyScorer self;
1536 public:
1537         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1538         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1539         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1540         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1541         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1542         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1543         LDKFixedPenaltyScorer* operator &() { return &self; }
1544         LDKFixedPenaltyScorer* operator ->() { return &self; }
1545         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1546         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1547 };
1548 class ProbabilisticScorer {
1549 private:
1550         LDKProbabilisticScorer self;
1551 public:
1552         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1553         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1554         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1555         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1556         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1557         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1558         LDKProbabilisticScorer* operator &() { return &self; }
1559         LDKProbabilisticScorer* operator ->() { return &self; }
1560         const LDKProbabilisticScorer* operator &() const { return &self; }
1561         const LDKProbabilisticScorer* operator ->() const { return &self; }
1562 };
1563 class ProbabilisticScoringParameters {
1564 private:
1565         LDKProbabilisticScoringParameters self;
1566 public:
1567         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1568         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1569         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1570         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1571         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1572         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1573         LDKProbabilisticScoringParameters* operator &() { return &self; }
1574         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1575         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1576         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1577 };
1578 class InitFeatures {
1579 private:
1580         LDKInitFeatures self;
1581 public:
1582         InitFeatures(const InitFeatures&) = delete;
1583         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1584         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1585         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1586         ~InitFeatures() { InitFeatures_free(self); }
1587         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1588         LDKInitFeatures* operator &() { return &self; }
1589         LDKInitFeatures* operator ->() { return &self; }
1590         const LDKInitFeatures* operator &() const { return &self; }
1591         const LDKInitFeatures* operator ->() const { return &self; }
1592 };
1593 class NodeFeatures {
1594 private:
1595         LDKNodeFeatures self;
1596 public:
1597         NodeFeatures(const NodeFeatures&) = delete;
1598         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1599         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1600         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1601         ~NodeFeatures() { NodeFeatures_free(self); }
1602         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1603         LDKNodeFeatures* operator &() { return &self; }
1604         LDKNodeFeatures* operator ->() { return &self; }
1605         const LDKNodeFeatures* operator &() const { return &self; }
1606         const LDKNodeFeatures* operator ->() const { return &self; }
1607 };
1608 class ChannelFeatures {
1609 private:
1610         LDKChannelFeatures self;
1611 public:
1612         ChannelFeatures(const ChannelFeatures&) = delete;
1613         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1614         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1615         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1616         ~ChannelFeatures() { ChannelFeatures_free(self); }
1617         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1618         LDKChannelFeatures* operator &() { return &self; }
1619         LDKChannelFeatures* operator ->() { return &self; }
1620         const LDKChannelFeatures* operator &() const { return &self; }
1621         const LDKChannelFeatures* operator ->() const { return &self; }
1622 };
1623 class InvoiceFeatures {
1624 private:
1625         LDKInvoiceFeatures self;
1626 public:
1627         InvoiceFeatures(const InvoiceFeatures&) = delete;
1628         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1629         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1630         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1631         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1632         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1633         LDKInvoiceFeatures* operator &() { return &self; }
1634         LDKInvoiceFeatures* operator ->() { return &self; }
1635         const LDKInvoiceFeatures* operator &() const { return &self; }
1636         const LDKInvoiceFeatures* operator ->() const { return &self; }
1637 };
1638 class OfferFeatures {
1639 private:
1640         LDKOfferFeatures self;
1641 public:
1642         OfferFeatures(const OfferFeatures&) = delete;
1643         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
1644         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
1645         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
1646         ~OfferFeatures() { OfferFeatures_free(self); }
1647         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
1648         LDKOfferFeatures* operator &() { return &self; }
1649         LDKOfferFeatures* operator ->() { return &self; }
1650         const LDKOfferFeatures* operator &() const { return &self; }
1651         const LDKOfferFeatures* operator ->() const { return &self; }
1652 };
1653 class InvoiceRequestFeatures {
1654 private:
1655         LDKInvoiceRequestFeatures self;
1656 public:
1657         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
1658         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
1659         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
1660         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
1661         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
1662         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
1663         LDKInvoiceRequestFeatures* operator &() { return &self; }
1664         LDKInvoiceRequestFeatures* operator ->() { return &self; }
1665         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
1666         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
1667 };
1668 class ChannelTypeFeatures {
1669 private:
1670         LDKChannelTypeFeatures self;
1671 public:
1672         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1673         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1674         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1675         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1676         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1677         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1678         LDKChannelTypeFeatures* operator &() { return &self; }
1679         LDKChannelTypeFeatures* operator ->() { return &self; }
1680         const LDKChannelTypeFeatures* operator &() const { return &self; }
1681         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1682 };
1683 class OnionMessageContents {
1684 private:
1685         LDKOnionMessageContents self;
1686 public:
1687         OnionMessageContents(const OnionMessageContents&) = delete;
1688         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
1689         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
1690         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
1691         ~OnionMessageContents() { OnionMessageContents_free(self); }
1692         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
1693         LDKOnionMessageContents* operator &() { return &self; }
1694         LDKOnionMessageContents* operator ->() { return &self; }
1695         const LDKOnionMessageContents* operator &() const { return &self; }
1696         const LDKOnionMessageContents* operator ->() const { return &self; }
1697 };
1698 class CustomOnionMessageContents {
1699 private:
1700         LDKCustomOnionMessageContents self;
1701 public:
1702         CustomOnionMessageContents(const CustomOnionMessageContents&) = delete;
1703         CustomOnionMessageContents(CustomOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageContents)); }
1704         CustomOnionMessageContents(LDKCustomOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageContents)); }
1705         operator LDKCustomOnionMessageContents() && { LDKCustomOnionMessageContents res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageContents)); return res; }
1706         ~CustomOnionMessageContents() { CustomOnionMessageContents_free(self); }
1707         CustomOnionMessageContents& operator=(CustomOnionMessageContents&& o) { CustomOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageContents)); return *this; }
1708         LDKCustomOnionMessageContents* operator &() { return &self; }
1709         LDKCustomOnionMessageContents* operator ->() { return &self; }
1710         const LDKCustomOnionMessageContents* operator &() const { return &self; }
1711         const LDKCustomOnionMessageContents* operator ->() const { return &self; }
1712         /**
1713          *  Returns the TLV type identifying the message contents. MUST be >= 64.
1714          */
1715         inline uint64_t tlv_type();
1716 };
1717 class NodeId {
1718 private:
1719         LDKNodeId self;
1720 public:
1721         NodeId(const NodeId&) = delete;
1722         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1723         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1724         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1725         ~NodeId() { NodeId_free(self); }
1726         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1727         LDKNodeId* operator &() { return &self; }
1728         LDKNodeId* operator ->() { return &self; }
1729         const LDKNodeId* operator &() const { return &self; }
1730         const LDKNodeId* operator ->() const { return &self; }
1731 };
1732 class NetworkGraph {
1733 private:
1734         LDKNetworkGraph self;
1735 public:
1736         NetworkGraph(const NetworkGraph&) = delete;
1737         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1738         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1739         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1740         ~NetworkGraph() { NetworkGraph_free(self); }
1741         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1742         LDKNetworkGraph* operator &() { return &self; }
1743         LDKNetworkGraph* operator ->() { return &self; }
1744         const LDKNetworkGraph* operator &() const { return &self; }
1745         const LDKNetworkGraph* operator ->() const { return &self; }
1746 };
1747 class ReadOnlyNetworkGraph {
1748 private:
1749         LDKReadOnlyNetworkGraph self;
1750 public:
1751         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1752         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1753         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1754         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1755         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1756         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1757         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1758         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1759         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1760         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1761 };
1762 class NetworkUpdate {
1763 private:
1764         LDKNetworkUpdate self;
1765 public:
1766         NetworkUpdate(const NetworkUpdate&) = delete;
1767         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1768         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1769         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1770         ~NetworkUpdate() { NetworkUpdate_free(self); }
1771         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1772         LDKNetworkUpdate* operator &() { return &self; }
1773         LDKNetworkUpdate* operator ->() { return &self; }
1774         const LDKNetworkUpdate* operator &() const { return &self; }
1775         const LDKNetworkUpdate* operator ->() const { return &self; }
1776 };
1777 class P2PGossipSync {
1778 private:
1779         LDKP2PGossipSync self;
1780 public:
1781         P2PGossipSync(const P2PGossipSync&) = delete;
1782         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1783         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1784         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1785         ~P2PGossipSync() { P2PGossipSync_free(self); }
1786         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1787         LDKP2PGossipSync* operator &() { return &self; }
1788         LDKP2PGossipSync* operator ->() { return &self; }
1789         const LDKP2PGossipSync* operator &() const { return &self; }
1790         const LDKP2PGossipSync* operator ->() const { return &self; }
1791 };
1792 class ChannelUpdateInfo {
1793 private:
1794         LDKChannelUpdateInfo self;
1795 public:
1796         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1797         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1798         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1799         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1800         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1801         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1802         LDKChannelUpdateInfo* operator &() { return &self; }
1803         LDKChannelUpdateInfo* operator ->() { return &self; }
1804         const LDKChannelUpdateInfo* operator &() const { return &self; }
1805         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1806 };
1807 class ChannelInfo {
1808 private:
1809         LDKChannelInfo self;
1810 public:
1811         ChannelInfo(const ChannelInfo&) = delete;
1812         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1813         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1814         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1815         ~ChannelInfo() { ChannelInfo_free(self); }
1816         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1817         LDKChannelInfo* operator &() { return &self; }
1818         LDKChannelInfo* operator ->() { return &self; }
1819         const LDKChannelInfo* operator &() const { return &self; }
1820         const LDKChannelInfo* operator ->() const { return &self; }
1821 };
1822 class DirectedChannelInfo {
1823 private:
1824         LDKDirectedChannelInfo self;
1825 public:
1826         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1827         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1828         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1829         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1830         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1831         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1832         LDKDirectedChannelInfo* operator &() { return &self; }
1833         LDKDirectedChannelInfo* operator ->() { return &self; }
1834         const LDKDirectedChannelInfo* operator &() const { return &self; }
1835         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1836 };
1837 class EffectiveCapacity {
1838 private:
1839         LDKEffectiveCapacity self;
1840 public:
1841         EffectiveCapacity(const EffectiveCapacity&) = delete;
1842         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1843         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1844         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1845         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1846         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1847         LDKEffectiveCapacity* operator &() { return &self; }
1848         LDKEffectiveCapacity* operator ->() { return &self; }
1849         const LDKEffectiveCapacity* operator &() const { return &self; }
1850         const LDKEffectiveCapacity* operator ->() const { return &self; }
1851 };
1852 class RoutingFees {
1853 private:
1854         LDKRoutingFees self;
1855 public:
1856         RoutingFees(const RoutingFees&) = delete;
1857         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1858         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1859         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1860         ~RoutingFees() { RoutingFees_free(self); }
1861         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1862         LDKRoutingFees* operator &() { return &self; }
1863         LDKRoutingFees* operator ->() { return &self; }
1864         const LDKRoutingFees* operator &() const { return &self; }
1865         const LDKRoutingFees* operator ->() const { return &self; }
1866 };
1867 class NodeAnnouncementInfo {
1868 private:
1869         LDKNodeAnnouncementInfo self;
1870 public:
1871         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1872         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1873         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1874         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1875         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1876         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1877         LDKNodeAnnouncementInfo* operator &() { return &self; }
1878         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1879         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1880         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1881 };
1882 class NodeAlias {
1883 private:
1884         LDKNodeAlias self;
1885 public:
1886         NodeAlias(const NodeAlias&) = delete;
1887         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
1888         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
1889         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
1890         ~NodeAlias() { NodeAlias_free(self); }
1891         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
1892         LDKNodeAlias* operator &() { return &self; }
1893         LDKNodeAlias* operator ->() { return &self; }
1894         const LDKNodeAlias* operator &() const { return &self; }
1895         const LDKNodeAlias* operator ->() const { return &self; }
1896 };
1897 class NodeInfo {
1898 private:
1899         LDKNodeInfo self;
1900 public:
1901         NodeInfo(const NodeInfo&) = delete;
1902         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1903         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1904         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1905         ~NodeInfo() { NodeInfo_free(self); }
1906         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1907         LDKNodeInfo* operator &() { return &self; }
1908         LDKNodeInfo* operator ->() { return &self; }
1909         const LDKNodeInfo* operator &() const { return &self; }
1910         const LDKNodeInfo* operator ->() const { return &self; }
1911 };
1912 class DelayedPaymentOutputDescriptor {
1913 private:
1914         LDKDelayedPaymentOutputDescriptor self;
1915 public:
1916         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1917         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1918         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1919         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1920         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1921         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1922         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1923         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1924         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1925         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1926 };
1927 class StaticPaymentOutputDescriptor {
1928 private:
1929         LDKStaticPaymentOutputDescriptor self;
1930 public:
1931         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1932         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1933         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1934         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1935         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1936         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1937         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1938         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1939         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1940         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1941 };
1942 class SpendableOutputDescriptor {
1943 private:
1944         LDKSpendableOutputDescriptor self;
1945 public:
1946         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1947         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1948         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1949         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1950         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1951         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1952         LDKSpendableOutputDescriptor* operator &() { return &self; }
1953         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1954         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1955         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1956 };
1957 class BaseSign {
1958 private:
1959         LDKBaseSign self;
1960 public:
1961         BaseSign(const BaseSign&) = delete;
1962         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1963         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1964         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1965         ~BaseSign() { BaseSign_free(self); }
1966         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1967         LDKBaseSign* operator &() { return &self; }
1968         LDKBaseSign* operator ->() { return &self; }
1969         const LDKBaseSign* operator &() const { return &self; }
1970         const LDKBaseSign* operator ->() const { return &self; }
1971         /**
1972          *  Gets the per-commitment point for a specific commitment number
1973          * 
1974          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1975          */
1976         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1977         /**
1978          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1979          * 
1980          *  An external signer implementation should error here if the commitment was already signed
1981          *  and should refuse to sign it in the future.
1982          * 
1983          *  May be called more than once for the same index.
1984          * 
1985          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1986          */
1987         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1988         /**
1989          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1990          * 
1991          *  This is required in order for the signer to make sure that releasing a commitment
1992          *  secret won't leave us without a broadcastable holder transaction.
1993          *  Policy checks should be implemented in this function, including checking the amount
1994          *  sent to us and checking the HTLCs.
1995          * 
1996          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1997          *  A validating signer should ensure that an HTLC output is removed only when the matching
1998          *  preimage is provided, or when the value to holder is restored.
1999          * 
2000          *  Note that all the relevant preimages will be provided, but there may also be additional
2001          *  irrelevant or duplicate preimages.
2002          */
2003         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
2004         /**
2005          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
2006          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
2007          *  [`BaseSign`] object uniquely and lookup or re-derive its keys.
2008          */
2009         inline LDKThirtyTwoBytes channel_keys_id();
2010         /**
2011          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
2012          * 
2013          *  Note that if signing fails or is rejected, the channel will be force-closed.
2014          * 
2015          *  Policy checks should be implemented in this function, including checking the amount
2016          *  sent to us and checking the HTLCs.
2017          * 
2018          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
2019          *  A validating signer should ensure that an HTLC output is removed only when the matching
2020          *  preimage is provided, or when the value to holder is restored.
2021          * 
2022          *  Note that all the relevant preimages will be provided, but there may also be additional
2023          *  irrelevant or duplicate preimages.
2024          */
2025         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
2026         /**
2027          *  Validate the counterparty's revocation.
2028          * 
2029          *  This is required in order for the signer to make sure that the state has moved
2030          *  forward and it is safe to sign the next counterparty commitment.
2031          */
2032         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
2033         /**
2034          *  Creates a signature for a holder's commitment transaction and its claiming HTLC transactions.
2035          * 
2036          *  This will be called
2037          *  - with a non-revoked `commitment_tx`.
2038          *  - with the latest `commitment_tx` when we initiate a force-close.
2039          *  - with the previous `commitment_tx`, just to get claiming HTLC
2040          *    signatures, if we are reacting to a [`ChannelMonitor`]
2041          *    [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
2042          *    that decided to broadcast before it had been updated to the latest `commitment_tx`.
2043          * 
2044          *  This may be called multiple times for the same transaction.
2045          * 
2046          *  An external signer implementation should check that the commitment has not been revoked.
2047          * 
2048          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2049          */
2050         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
2051         /**
2052          *  Create a signature for the given input in a transaction spending an HTLC transaction output
2053          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
2054          * 
2055          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2056          *  similar, but only a signature for the input at index `input` should be signed for here.
2057          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2058          *  to an upcoming timelock expiration.
2059          * 
2060          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
2061          * 
2062          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2063          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2064          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
2065          *  so).
2066          */
2067         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]);
2068         /**
2069          *  Create a signature for the given input in a transaction spending a commitment transaction
2070          *  HTLC output when our counterparty broadcasts an old state.
2071          * 
2072          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2073          *  similar, but only a signature for the input at index `input` should be signed for here.
2074          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2075          *  to an upcoming timelock expiration.
2076          * 
2077          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
2078          *  signature.
2079          * 
2080          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2081          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2082          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
2083          *  so).
2084          * 
2085          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
2086          *  (which is committed to in the BIP 143 signatures).
2087          */
2088         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);
2089         /**
2090          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
2091          *  transaction, either offered or received.
2092          * 
2093          *  Such a transaction may claim multiples offered outputs at same time if we know the
2094          *  preimage for each when we create it, but only the input at index `input` should be
2095          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
2096          *  needed with regards to an upcoming timelock expiration.
2097          * 
2098          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
2099          *  outputs.
2100          * 
2101          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
2102          * 
2103          *  `per_commitment_point` is the dynamic point corresponding to the channel state
2104          *  detected onchain. It has been generated by our counterparty and is used to derive
2105          *  channel state keys, which are then included in the witness script and committed to in the
2106          *  BIP 143 signature.
2107          */
2108         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);
2109         /**
2110          *  Create a signature for a (proposed) closing transaction.
2111          * 
2112          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
2113          *  chosen to forgo their output as dust.
2114          */
2115         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
2116         /**
2117          *  Computes the signature for a commitment transaction's anchor output used as an
2118          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
2119          */
2120         inline LDK::CResult_SignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
2121         /**
2122          *  Signs a channel announcement message with our funding key and our node secret key (aka
2123          *  node_id or network_key), proving it comes from one of the channel participants.
2124          * 
2125          *  The first returned signature should be from our node secret key, the second from our
2126          *  funding key.
2127          * 
2128          *  Note that if this fails or is rejected, the channel will not be publicly announced and
2129          *  our counterparty may (though likely will not) close the channel on us for violating the
2130          *  protocol.
2131          */
2132         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
2133         /**
2134          *  Set the counterparty static channel data, including basepoints,
2135          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint. Since these
2136          *  are static channel data, they MUST NOT be allowed to change to different values once set,
2137          *  as LDK may call this method more than once.
2138          * 
2139          *  channel_parameters.is_populated() MUST be true.
2140          */
2141         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
2142 };
2143 class Sign {
2144 private:
2145         LDKSign self;
2146 public:
2147         Sign(const Sign&) = delete;
2148         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
2149         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
2150         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
2151         ~Sign() { Sign_free(self); }
2152         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
2153         LDKSign* operator &() { return &self; }
2154         LDKSign* operator ->() { return &self; }
2155         const LDKSign* operator &() const { return &self; }
2156         const LDKSign* operator ->() const { return &self; }
2157 };
2158 class Recipient {
2159 private:
2160         LDKRecipient self;
2161 public:
2162         Recipient(const Recipient&) = delete;
2163         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
2164         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
2165         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
2166         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
2167         LDKRecipient* operator &() { return &self; }
2168         LDKRecipient* operator ->() { return &self; }
2169         const LDKRecipient* operator &() const { return &self; }
2170         const LDKRecipient* operator ->() const { return &self; }
2171 };
2172 class KeysInterface {
2173 private:
2174         LDKKeysInterface self;
2175 public:
2176         KeysInterface(const KeysInterface&) = delete;
2177         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
2178         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
2179         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
2180         ~KeysInterface() { KeysInterface_free(self); }
2181         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
2182         LDKKeysInterface* operator &() { return &self; }
2183         LDKKeysInterface* operator ->() { return &self; }
2184         const LDKKeysInterface* operator &() const { return &self; }
2185         const LDKKeysInterface* operator ->() const { return &self; }
2186         /**
2187          *  Get node secret key based on the provided [`Recipient`].
2188          * 
2189          *  The `node_id`/`network_key` is the public key that corresponds to this secret key.
2190          * 
2191          *  This method must return the same value each time it is called with a given [`Recipient`]
2192          *  parameter.
2193          * 
2194          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2195          */
2196         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
2197         /**
2198          *  Get node id based on the provided [`Recipient`]. This public key corresponds to the secret in
2199          *  [`get_node_secret`].
2200          * 
2201          *  This method must return the same value each time it is called with a given [`Recipient`]
2202          *  parameter.
2203          * 
2204          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2205          * 
2206          *  [`get_node_secret`]: Self::get_node_secret
2207          */
2208         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
2209         /**
2210          *  Gets the ECDH shared secret of our [`node secret`] and `other_key`, multiplying by `tweak` if
2211          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
2212          *  secret, though this is less efficient.
2213          * 
2214          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2215          * 
2216          *  [`node secret`]: Self::get_node_secret
2217          */
2218         inline LDK::CResult_SharedSecretNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
2219         /**
2220          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
2221          * 
2222          *  This method should return a different value each time it is called, to avoid linking
2223          *  on-chain funds across channels as controlled to the same user.
2224          */
2225         inline LDK::CVec_u8Z get_destination_script();
2226         /**
2227          *  Get a script pubkey which we will send funds to when closing a channel.
2228          * 
2229          *  This method should return a different value each time it is called, to avoid linking
2230          *  on-chain funds across channels as controlled to the same user.
2231          */
2232         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
2233         /**
2234          *  Get a new set of [`Sign`] for per-channel secrets. These MUST be unique even if you
2235          *  restarted with some stale data!
2236          * 
2237          *  This method must return a different value each time it is called.
2238          */
2239         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
2240         /**
2241          *  Derives the private key material backing a `Signer`.
2242          * 
2243          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
2244          *  [`KeysInterface::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
2245          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
2246          *  [`BaseSign::channel_keys_id`].
2247          */
2248         inline LDK::Sign derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
2249         /**
2250          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
2251          *  onion packets and for temporary channel IDs. There is no requirement that these be
2252          *  persisted anywhere, though they must be unique across restarts.
2253          * 
2254          *  This method must return a different value each time it is called.
2255          */
2256         inline LDKThirtyTwoBytes get_secure_random_bytes();
2257         /**
2258          *  Reads a [`Signer`] for this [`KeysInterface`] from the given input stream.
2259          *  This is only called during deserialization of other objects which contain
2260          *  [`Sign`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
2261          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
2262          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
2263          *  you've read all of the provided bytes to ensure no corruption occurred.
2264          * 
2265          *  This method is slowly being phased out -- it will only be called when reading objects
2266          *  written by LDK versions prior to 0.0.113.
2267          * 
2268          *  [`Signer`]: Self::Signer
2269          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2270          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2271          */
2272         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
2273         /**
2274          *  Sign an invoice.
2275          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
2276          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
2277          *  blindly signing the hash.
2278          *  The `hrp` is ASCII bytes, while the invoice data is base32-encoded.
2279          * 
2280          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
2281          * 
2282          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2283          */
2284         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient receipient);
2285         /**
2286          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
2287          * 
2288          *  If the implementor of this trait supports [phantom node payments], then every node that is
2289          *  intended to be included in the phantom invoice route hints must return the same value from
2290          *  this method.
2291          * 
2292          *  This method must return the same value each time it is called.
2293          * 
2294          *  [phantom node payments]: PhantomKeysManager
2295          */
2296         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
2297 };
2298 class InMemorySigner {
2299 private:
2300         LDKInMemorySigner self;
2301 public:
2302         InMemorySigner(const InMemorySigner&) = delete;
2303         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
2304         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
2305         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
2306         ~InMemorySigner() { InMemorySigner_free(self); }
2307         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
2308         LDKInMemorySigner* operator &() { return &self; }
2309         LDKInMemorySigner* operator ->() { return &self; }
2310         const LDKInMemorySigner* operator &() const { return &self; }
2311         const LDKInMemorySigner* operator ->() const { return &self; }
2312 };
2313 class KeysManager {
2314 private:
2315         LDKKeysManager self;
2316 public:
2317         KeysManager(const KeysManager&) = delete;
2318         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
2319         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
2320         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
2321         ~KeysManager() { KeysManager_free(self); }
2322         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
2323         LDKKeysManager* operator &() { return &self; }
2324         LDKKeysManager* operator ->() { return &self; }
2325         const LDKKeysManager* operator &() const { return &self; }
2326         const LDKKeysManager* operator ->() const { return &self; }
2327 };
2328 class PhantomKeysManager {
2329 private:
2330         LDKPhantomKeysManager self;
2331 public:
2332         PhantomKeysManager(const PhantomKeysManager&) = delete;
2333         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
2334         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
2335         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
2336         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
2337         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
2338         LDKPhantomKeysManager* operator &() { return &self; }
2339         LDKPhantomKeysManager* operator ->() { return &self; }
2340         const LDKPhantomKeysManager* operator &() const { return &self; }
2341         const LDKPhantomKeysManager* operator ->() const { return &self; }
2342 };
2343 class FilesystemPersister {
2344 private:
2345         LDKFilesystemPersister self;
2346 public:
2347         FilesystemPersister(const FilesystemPersister&) = delete;
2348         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
2349         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
2350         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
2351         ~FilesystemPersister() { FilesystemPersister_free(self); }
2352         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
2353         LDKFilesystemPersister* operator &() { return &self; }
2354         LDKFilesystemPersister* operator ->() { return &self; }
2355         const LDKFilesystemPersister* operator &() const { return &self; }
2356         const LDKFilesystemPersister* operator ->() const { return &self; }
2357 };
2358 class ChannelManager {
2359 private:
2360         LDKChannelManager self;
2361 public:
2362         ChannelManager(const ChannelManager&) = delete;
2363         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2364         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2365         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2366         ~ChannelManager() { ChannelManager_free(self); }
2367         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2368         LDKChannelManager* operator &() { return &self; }
2369         LDKChannelManager* operator ->() { return &self; }
2370         const LDKChannelManager* operator &() const { return &self; }
2371         const LDKChannelManager* operator ->() const { return &self; }
2372 };
2373 class ChainParameters {
2374 private:
2375         LDKChainParameters self;
2376 public:
2377         ChainParameters(const ChainParameters&) = delete;
2378         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2379         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2380         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2381         ~ChainParameters() { ChainParameters_free(self); }
2382         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2383         LDKChainParameters* operator &() { return &self; }
2384         LDKChainParameters* operator ->() { return &self; }
2385         const LDKChainParameters* operator &() const { return &self; }
2386         const LDKChainParameters* operator ->() const { return &self; }
2387 };
2388 class CounterpartyForwardingInfo {
2389 private:
2390         LDKCounterpartyForwardingInfo self;
2391 public:
2392         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2393         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2394         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2395         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2396         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2397         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2398         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2399         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2400         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2401         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2402 };
2403 class ChannelCounterparty {
2404 private:
2405         LDKChannelCounterparty self;
2406 public:
2407         ChannelCounterparty(const ChannelCounterparty&) = delete;
2408         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2409         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2410         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2411         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2412         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2413         LDKChannelCounterparty* operator &() { return &self; }
2414         LDKChannelCounterparty* operator ->() { return &self; }
2415         const LDKChannelCounterparty* operator &() const { return &self; }
2416         const LDKChannelCounterparty* operator ->() const { return &self; }
2417 };
2418 class ChannelDetails {
2419 private:
2420         LDKChannelDetails self;
2421 public:
2422         ChannelDetails(const ChannelDetails&) = delete;
2423         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2424         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2425         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2426         ~ChannelDetails() { ChannelDetails_free(self); }
2427         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2428         LDKChannelDetails* operator &() { return &self; }
2429         LDKChannelDetails* operator ->() { return &self; }
2430         const LDKChannelDetails* operator &() const { return &self; }
2431         const LDKChannelDetails* operator ->() const { return &self; }
2432 };
2433 class PaymentSendFailure {
2434 private:
2435         LDKPaymentSendFailure self;
2436 public:
2437         PaymentSendFailure(const PaymentSendFailure&) = delete;
2438         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
2439         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
2440         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
2441         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
2442         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
2443         LDKPaymentSendFailure* operator &() { return &self; }
2444         LDKPaymentSendFailure* operator ->() { return &self; }
2445         const LDKPaymentSendFailure* operator &() const { return &self; }
2446         const LDKPaymentSendFailure* operator ->() const { return &self; }
2447 };
2448 class PhantomRouteHints {
2449 private:
2450         LDKPhantomRouteHints self;
2451 public:
2452         PhantomRouteHints(const PhantomRouteHints&) = delete;
2453         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2454         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2455         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2456         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2457         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2458         LDKPhantomRouteHints* operator &() { return &self; }
2459         LDKPhantomRouteHints* operator ->() { return &self; }
2460         const LDKPhantomRouteHints* operator &() const { return &self; }
2461         const LDKPhantomRouteHints* operator ->() const { return &self; }
2462 };
2463 class ChannelManagerReadArgs {
2464 private:
2465         LDKChannelManagerReadArgs self;
2466 public:
2467         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2468         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2469         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2470         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2471         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2472         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2473         LDKChannelManagerReadArgs* operator &() { return &self; }
2474         LDKChannelManagerReadArgs* operator ->() { return &self; }
2475         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2476         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2477 };
2478 class ChannelHandshakeConfig {
2479 private:
2480         LDKChannelHandshakeConfig self;
2481 public:
2482         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2483         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2484         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2485         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2486         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2487         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2488         LDKChannelHandshakeConfig* operator &() { return &self; }
2489         LDKChannelHandshakeConfig* operator ->() { return &self; }
2490         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2491         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2492 };
2493 class ChannelHandshakeLimits {
2494 private:
2495         LDKChannelHandshakeLimits self;
2496 public:
2497         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2498         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2499         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2500         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2501         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2502         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2503         LDKChannelHandshakeLimits* operator &() { return &self; }
2504         LDKChannelHandshakeLimits* operator ->() { return &self; }
2505         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2506         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2507 };
2508 class ChannelConfig {
2509 private:
2510         LDKChannelConfig self;
2511 public:
2512         ChannelConfig(const ChannelConfig&) = delete;
2513         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2514         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2515         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2516         ~ChannelConfig() { ChannelConfig_free(self); }
2517         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2518         LDKChannelConfig* operator &() { return &self; }
2519         LDKChannelConfig* operator ->() { return &self; }
2520         const LDKChannelConfig* operator &() const { return &self; }
2521         const LDKChannelConfig* operator ->() const { return &self; }
2522 };
2523 class UserConfig {
2524 private:
2525         LDKUserConfig self;
2526 public:
2527         UserConfig(const UserConfig&) = delete;
2528         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2529         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2530         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2531         ~UserConfig() { UserConfig_free(self); }
2532         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2533         LDKUserConfig* operator &() { return &self; }
2534         LDKUserConfig* operator ->() { return &self; }
2535         const LDKUserConfig* operator &() const { return &self; }
2536         const LDKUserConfig* operator ->() const { return &self; }
2537 };
2538 class APIError {
2539 private:
2540         LDKAPIError self;
2541 public:
2542         APIError(const APIError&) = delete;
2543         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2544         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2545         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2546         ~APIError() { APIError_free(self); }
2547         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2548         LDKAPIError* operator &() { return &self; }
2549         LDKAPIError* operator ->() { return &self; }
2550         const LDKAPIError* operator &() const { return &self; }
2551         const LDKAPIError* operator ->() const { return &self; }
2552 };
2553 class BigSize {
2554 private:
2555         LDKBigSize self;
2556 public:
2557         BigSize(const BigSize&) = delete;
2558         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2559         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2560         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2561         ~BigSize() { BigSize_free(self); }
2562         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2563         LDKBigSize* operator &() { return &self; }
2564         LDKBigSize* operator ->() { return &self; }
2565         const LDKBigSize* operator &() const { return &self; }
2566         const LDKBigSize* operator ->() const { return &self; }
2567 };
2568 class Hostname {
2569 private:
2570         LDKHostname self;
2571 public:
2572         Hostname(const Hostname&) = delete;
2573         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
2574         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
2575         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
2576         ~Hostname() { Hostname_free(self); }
2577         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
2578         LDKHostname* operator &() { return &self; }
2579         LDKHostname* operator ->() { return &self; }
2580         const LDKHostname* operator &() const { return &self; }
2581         const LDKHostname* operator ->() const { return &self; }
2582 };
2583 class PrintableString {
2584 private:
2585         LDKPrintableString self;
2586 public:
2587         PrintableString(const PrintableString&) = delete;
2588         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
2589         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
2590         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
2591         ~PrintableString() { PrintableString_free(self); }
2592         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
2593         LDKPrintableString* operator &() { return &self; }
2594         LDKPrintableString* operator ->() { return &self; }
2595         const LDKPrintableString* operator &() const { return &self; }
2596         const LDKPrintableString* operator ->() const { return &self; }
2597 };
2598 class OutPoint {
2599 private:
2600         LDKOutPoint self;
2601 public:
2602         OutPoint(const OutPoint&) = delete;
2603         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2604         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2605         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2606         ~OutPoint() { OutPoint_free(self); }
2607         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2608         LDKOutPoint* operator &() { return &self; }
2609         LDKOutPoint* operator ->() { return &self; }
2610         const LDKOutPoint* operator &() const { return &self; }
2611         const LDKOutPoint* operator ->() const { return &self; }
2612 };
2613 class CustomMessageReader {
2614 private:
2615         LDKCustomMessageReader self;
2616 public:
2617         CustomMessageReader(const CustomMessageReader&) = delete;
2618         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2619         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2620         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2621         ~CustomMessageReader() { CustomMessageReader_free(self); }
2622         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2623         LDKCustomMessageReader* operator &() { return &self; }
2624         LDKCustomMessageReader* operator ->() { return &self; }
2625         const LDKCustomMessageReader* operator &() const { return &self; }
2626         const LDKCustomMessageReader* operator ->() const { return &self; }
2627         /**
2628          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2629          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2630          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2631          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2632          */
2633         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2634 };
2635 class Type {
2636 private:
2637         LDKType self;
2638 public:
2639         Type(const Type&) = delete;
2640         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2641         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2642         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2643         ~Type() { Type_free(self); }
2644         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2645         LDKType* operator &() { return &self; }
2646         LDKType* operator ->() { return &self; }
2647         const LDKType* operator &() const { return &self; }
2648         const LDKType* operator ->() const { return &self; }
2649         /**
2650          *  Returns the type identifying the message payload.
2651          */
2652         inline uint16_t type_id();
2653         /**
2654          * Return a human-readable "debug" string describing this object
2655          */
2656         inline LDK::Str debug_str();
2657 };
2658 class InvoicePayer {
2659 private:
2660         LDKInvoicePayer self;
2661 public:
2662         InvoicePayer(const InvoicePayer&) = delete;
2663         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2664         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2665         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2666         ~InvoicePayer() { InvoicePayer_free(self); }
2667         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2668         LDKInvoicePayer* operator &() { return &self; }
2669         LDKInvoicePayer* operator ->() { return &self; }
2670         const LDKInvoicePayer* operator &() const { return &self; }
2671         const LDKInvoicePayer* operator ->() const { return &self; }
2672 };
2673 class Payer {
2674 private:
2675         LDKPayer self;
2676 public:
2677         Payer(const Payer&) = delete;
2678         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2679         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2680         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2681         ~Payer() { Payer_free(self); }
2682         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2683         LDKPayer* operator &() { return &self; }
2684         LDKPayer* operator ->() { return &self; }
2685         const LDKPayer* operator &() const { return &self; }
2686         const LDKPayer* operator ->() const { return &self; }
2687         /**
2688          *  Returns the payer's node id.
2689          */
2690         inline LDKPublicKey node_id();
2691         /**
2692          *  Returns the payer's channels.
2693          */
2694         inline LDK::CVec_ChannelDetailsZ first_hops();
2695         /**
2696          *  Sends a payment over the Lightning Network using the given [`Route`].
2697          * 
2698          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2699          */
2700         inline LDK::CResult_NonePaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKThirtyTwoBytes payment_id);
2701         /**
2702          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2703          */
2704         inline LDK::CResult_NonePaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_id);
2705         /**
2706          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2707          */
2708         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2709         /**
2710          *  Signals that no further retries for the given payment will occur.
2711          */
2712         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2713         /**
2714          *  Construct an [`InFlightHtlcs`] containing information about currently used up liquidity
2715          *  across payments.
2716          */
2717         inline LDK::InFlightHtlcs inflight_htlcs();
2718 };
2719 class Retry {
2720 private:
2721         LDKRetry self;
2722 public:
2723         Retry(const Retry&) = delete;
2724         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
2725         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
2726         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
2727         ~Retry() { Retry_free(self); }
2728         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
2729         LDKRetry* operator &() { return &self; }
2730         LDKRetry* operator ->() { return &self; }
2731         const LDKRetry* operator &() const { return &self; }
2732         const LDKRetry* operator ->() const { return &self; }
2733 };
2734 class PaymentError {
2735 private:
2736         LDKPaymentError self;
2737 public:
2738         PaymentError(const PaymentError&) = delete;
2739         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2740         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2741         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2742         ~PaymentError() { PaymentError_free(self); }
2743         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2744         LDKPaymentError* operator &() { return &self; }
2745         LDKPaymentError* operator ->() { return &self; }
2746         const LDKPaymentError* operator &() const { return &self; }
2747         const LDKPaymentError* operator ->() const { return &self; }
2748 };
2749 class ChannelMonitorUpdate {
2750 private:
2751         LDKChannelMonitorUpdate self;
2752 public:
2753         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2754         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2755         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2756         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2757         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2758         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2759         LDKChannelMonitorUpdate* operator &() { return &self; }
2760         LDKChannelMonitorUpdate* operator ->() { return &self; }
2761         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2762         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2763 };
2764 class MonitorEvent {
2765 private:
2766         LDKMonitorEvent self;
2767 public:
2768         MonitorEvent(const MonitorEvent&) = delete;
2769         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2770         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2771         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2772         ~MonitorEvent() { MonitorEvent_free(self); }
2773         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2774         LDKMonitorEvent* operator &() { return &self; }
2775         LDKMonitorEvent* operator ->() { return &self; }
2776         const LDKMonitorEvent* operator &() const { return &self; }
2777         const LDKMonitorEvent* operator ->() const { return &self; }
2778 };
2779 class HTLCUpdate {
2780 private:
2781         LDKHTLCUpdate self;
2782 public:
2783         HTLCUpdate(const HTLCUpdate&) = delete;
2784         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2785         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2786         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2787         ~HTLCUpdate() { HTLCUpdate_free(self); }
2788         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2789         LDKHTLCUpdate* operator &() { return &self; }
2790         LDKHTLCUpdate* operator ->() { return &self; }
2791         const LDKHTLCUpdate* operator &() const { return &self; }
2792         const LDKHTLCUpdate* operator ->() const { return &self; }
2793 };
2794 class Balance {
2795 private:
2796         LDKBalance self;
2797 public:
2798         Balance(const Balance&) = delete;
2799         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2800         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2801         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2802         ~Balance() { Balance_free(self); }
2803         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2804         LDKBalance* operator &() { return &self; }
2805         LDKBalance* operator ->() { return &self; }
2806         const LDKBalance* operator &() const { return &self; }
2807         const LDKBalance* operator ->() const { return &self; }
2808 };
2809 class ChannelMonitor {
2810 private:
2811         LDKChannelMonitor self;
2812 public:
2813         ChannelMonitor(const ChannelMonitor&) = delete;
2814         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2815         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2816         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2817         ~ChannelMonitor() { ChannelMonitor_free(self); }
2818         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2819         LDKChannelMonitor* operator &() { return &self; }
2820         LDKChannelMonitor* operator ->() { return &self; }
2821         const LDKChannelMonitor* operator &() const { return &self; }
2822         const LDKChannelMonitor* operator ->() const { return &self; }
2823 };
2824 class ExpandedKey {
2825 private:
2826         LDKExpandedKey self;
2827 public:
2828         ExpandedKey(const ExpandedKey&) = delete;
2829         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2830         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2831         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2832         ~ExpandedKey() { ExpandedKey_free(self); }
2833         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2834         LDKExpandedKey* operator &() { return &self; }
2835         LDKExpandedKey* operator ->() { return &self; }
2836         const LDKExpandedKey* operator &() const { return &self; }
2837         const LDKExpandedKey* operator ->() const { return &self; }
2838 };
2839 class CustomMessageHandler {
2840 private:
2841         LDKCustomMessageHandler self;
2842 public:
2843         CustomMessageHandler(const CustomMessageHandler&) = delete;
2844         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2845         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2846         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2847         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2848         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2849         LDKCustomMessageHandler* operator &() { return &self; }
2850         LDKCustomMessageHandler* operator ->() { return &self; }
2851         const LDKCustomMessageHandler* operator &() const { return &self; }
2852         const LDKCustomMessageHandler* operator ->() const { return &self; }
2853         /**
2854          *  Called with the message type that was received and the buffer to be read.
2855          *  Can return a `MessageHandlingError` if the message could not be handled.
2856          */
2857         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2858         /**
2859          *  Gets the list of pending messages which were generated by the custom message
2860          *  handler, clearing the list in the process. The first tuple element must
2861          *  correspond to the intended recipients node ids. If no connection to one of the
2862          *  specified node does not exist, the message is simply not sent to it.
2863          */
2864         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2865 };
2866 class IgnoringMessageHandler {
2867 private:
2868         LDKIgnoringMessageHandler self;
2869 public:
2870         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2871         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2872         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2873         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2874         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2875         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2876         LDKIgnoringMessageHandler* operator &() { return &self; }
2877         LDKIgnoringMessageHandler* operator ->() { return &self; }
2878         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2879         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2880 };
2881 class ErroringMessageHandler {
2882 private:
2883         LDKErroringMessageHandler self;
2884 public:
2885         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2886         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2887         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2888         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2889         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2890         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2891         LDKErroringMessageHandler* operator &() { return &self; }
2892         LDKErroringMessageHandler* operator ->() { return &self; }
2893         const LDKErroringMessageHandler* operator &() const { return &self; }
2894         const LDKErroringMessageHandler* operator ->() const { return &self; }
2895 };
2896 class MessageHandler {
2897 private:
2898         LDKMessageHandler self;
2899 public:
2900         MessageHandler(const MessageHandler&) = delete;
2901         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2902         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2903         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2904         ~MessageHandler() { MessageHandler_free(self); }
2905         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2906         LDKMessageHandler* operator &() { return &self; }
2907         LDKMessageHandler* operator ->() { return &self; }
2908         const LDKMessageHandler* operator &() const { return &self; }
2909         const LDKMessageHandler* operator ->() const { return &self; }
2910 };
2911 class SocketDescriptor {
2912 private:
2913         LDKSocketDescriptor self;
2914 public:
2915         SocketDescriptor(const SocketDescriptor&) = delete;
2916         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2917         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2918         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2919         ~SocketDescriptor() { SocketDescriptor_free(self); }
2920         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2921         LDKSocketDescriptor* operator &() { return &self; }
2922         LDKSocketDescriptor* operator ->() { return &self; }
2923         const LDKSocketDescriptor* operator &() const { return &self; }
2924         const LDKSocketDescriptor* operator ->() const { return &self; }
2925         /**
2926          *  Attempts to send some data from the given slice to the peer.
2927          * 
2928          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2929          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2930          *  called and further write attempts may occur until that time.
2931          * 
2932          *  If the returned size is smaller than `data.len()`, a
2933          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2934          *  written. Additionally, until a `send_data` event completes fully, no further
2935          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2936          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2937          *  until then.
2938          * 
2939          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2940          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2941          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2942          *  `resume_read` of false carries no meaning, and should not cause any action.
2943          */
2944         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2945         /**
2946          *  Disconnect the socket pointed to by this SocketDescriptor.
2947          * 
2948          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2949          *  call (doing so is a noop).
2950          */
2951         inline void disconnect_socket();
2952         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2953         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2954         /**
2955          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2956          * This is used, for example, for inclusion of this object in a hash map.
2957          */
2958         inline uint64_t hash();
2959 };
2960 class PeerHandleError {
2961 private:
2962         LDKPeerHandleError self;
2963 public:
2964         PeerHandleError(const PeerHandleError&) = delete;
2965         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2966         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2967         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2968         ~PeerHandleError() { PeerHandleError_free(self); }
2969         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2970         LDKPeerHandleError* operator &() { return &self; }
2971         LDKPeerHandleError* operator ->() { return &self; }
2972         const LDKPeerHandleError* operator &() const { return &self; }
2973         const LDKPeerHandleError* operator ->() const { return &self; }
2974 };
2975 class PeerManager {
2976 private:
2977         LDKPeerManager self;
2978 public:
2979         PeerManager(const PeerManager&) = delete;
2980         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2981         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2982         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2983         ~PeerManager() { PeerManager_free(self); }
2984         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2985         LDKPeerManager* operator &() { return &self; }
2986         LDKPeerManager* operator ->() { return &self; }
2987         const LDKPeerManager* operator &() const { return &self; }
2988         const LDKPeerManager* operator ->() const { return &self; }
2989 };
2990 class OnionMessenger {
2991 private:
2992         LDKOnionMessenger self;
2993 public:
2994         OnionMessenger(const OnionMessenger&) = delete;
2995         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
2996         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
2997         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
2998         ~OnionMessenger() { OnionMessenger_free(self); }
2999         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
3000         LDKOnionMessenger* operator &() { return &self; }
3001         LDKOnionMessenger* operator ->() { return &self; }
3002         const LDKOnionMessenger* operator &() const { return &self; }
3003         const LDKOnionMessenger* operator ->() const { return &self; }
3004 };
3005 class Destination {
3006 private:
3007         LDKDestination self;
3008 public:
3009         Destination(const Destination&) = delete;
3010         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
3011         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
3012         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
3013         ~Destination() { Destination_free(self); }
3014         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
3015         LDKDestination* operator &() { return &self; }
3016         LDKDestination* operator ->() { return &self; }
3017         const LDKDestination* operator &() const { return &self; }
3018         const LDKDestination* operator ->() const { return &self; }
3019 };
3020 class SendError {
3021 private:
3022         LDKSendError self;
3023 public:
3024         SendError(const SendError&) = delete;
3025         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
3026         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
3027         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
3028         ~SendError() { SendError_free(self); }
3029         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
3030         LDKSendError* operator &() { return &self; }
3031         LDKSendError* operator ->() { return &self; }
3032         const LDKSendError* operator &() const { return &self; }
3033         const LDKSendError* operator ->() const { return &self; }
3034 };
3035 class CustomOnionMessageHandler {
3036 private:
3037         LDKCustomOnionMessageHandler self;
3038 public:
3039         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
3040         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
3041         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
3042         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
3043         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
3044         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
3045         LDKCustomOnionMessageHandler* operator &() { return &self; }
3046         LDKCustomOnionMessageHandler* operator ->() { return &self; }
3047         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
3048         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
3049         /**
3050          *  Called with the custom message that was received.
3051          */
3052         inline void handle_custom_message(struct LDKCustomOnionMessageContents msg);
3053         /**
3054          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
3055          *  message type is unknown.
3056          */
3057         inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
3058 };
3059 class ParseError {
3060 private:
3061         LDKParseError self;
3062 public:
3063         ParseError(const ParseError&) = delete;
3064         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
3065         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
3066         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
3067         ~ParseError() { ParseError_free(self); }
3068         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
3069         LDKParseError* operator &() { return &self; }
3070         LDKParseError* operator ->() { return &self; }
3071         const LDKParseError* operator &() const { return &self; }
3072         const LDKParseError* operator ->() const { return &self; }
3073 };
3074 class ParseOrSemanticError {
3075 private:
3076         LDKParseOrSemanticError self;
3077 public:
3078         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
3079         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
3080         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
3081         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
3082         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
3083         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
3084         LDKParseOrSemanticError* operator &() { return &self; }
3085         LDKParseOrSemanticError* operator ->() { return &self; }
3086         const LDKParseOrSemanticError* operator &() const { return &self; }
3087         const LDKParseOrSemanticError* operator ->() const { return &self; }
3088 };
3089 class Invoice {
3090 private:
3091         LDKInvoice self;
3092 public:
3093         Invoice(const Invoice&) = delete;
3094         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
3095         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
3096         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
3097         ~Invoice() { Invoice_free(self); }
3098         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
3099         LDKInvoice* operator &() { return &self; }
3100         LDKInvoice* operator ->() { return &self; }
3101         const LDKInvoice* operator &() const { return &self; }
3102         const LDKInvoice* operator ->() const { return &self; }
3103 };
3104 class SignedRawInvoice {
3105 private:
3106         LDKSignedRawInvoice self;
3107 public:
3108         SignedRawInvoice(const SignedRawInvoice&) = delete;
3109         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
3110         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
3111         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
3112         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
3113         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
3114         LDKSignedRawInvoice* operator &() { return &self; }
3115         LDKSignedRawInvoice* operator ->() { return &self; }
3116         const LDKSignedRawInvoice* operator &() const { return &self; }
3117         const LDKSignedRawInvoice* operator ->() const { return &self; }
3118 };
3119 class RawInvoice {
3120 private:
3121         LDKRawInvoice self;
3122 public:
3123         RawInvoice(const RawInvoice&) = delete;
3124         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
3125         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
3126         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
3127         ~RawInvoice() { RawInvoice_free(self); }
3128         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
3129         LDKRawInvoice* operator &() { return &self; }
3130         LDKRawInvoice* operator ->() { return &self; }
3131         const LDKRawInvoice* operator &() const { return &self; }
3132         const LDKRawInvoice* operator ->() const { return &self; }
3133 };
3134 class RawDataPart {
3135 private:
3136         LDKRawDataPart self;
3137 public:
3138         RawDataPart(const RawDataPart&) = delete;
3139         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
3140         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
3141         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
3142         ~RawDataPart() { RawDataPart_free(self); }
3143         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
3144         LDKRawDataPart* operator &() { return &self; }
3145         LDKRawDataPart* operator ->() { return &self; }
3146         const LDKRawDataPart* operator &() const { return &self; }
3147         const LDKRawDataPart* operator ->() const { return &self; }
3148 };
3149 class PositiveTimestamp {
3150 private:
3151         LDKPositiveTimestamp self;
3152 public:
3153         PositiveTimestamp(const PositiveTimestamp&) = delete;
3154         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
3155         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
3156         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
3157         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
3158         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
3159         LDKPositiveTimestamp* operator &() { return &self; }
3160         LDKPositiveTimestamp* operator ->() { return &self; }
3161         const LDKPositiveTimestamp* operator &() const { return &self; }
3162         const LDKPositiveTimestamp* operator ->() const { return &self; }
3163 };
3164 class SiPrefix {
3165 private:
3166         LDKSiPrefix self;
3167 public:
3168         SiPrefix(const SiPrefix&) = delete;
3169         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
3170         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
3171         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
3172         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
3173         LDKSiPrefix* operator &() { return &self; }
3174         LDKSiPrefix* operator ->() { return &self; }
3175         const LDKSiPrefix* operator &() const { return &self; }
3176         const LDKSiPrefix* operator ->() const { return &self; }
3177 };
3178 class Currency {
3179 private:
3180         LDKCurrency self;
3181 public:
3182         Currency(const Currency&) = delete;
3183         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
3184         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
3185         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
3186         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
3187         LDKCurrency* operator &() { return &self; }
3188         LDKCurrency* operator ->() { return &self; }
3189         const LDKCurrency* operator &() const { return &self; }
3190         const LDKCurrency* operator ->() const { return &self; }
3191 };
3192 class Sha256 {
3193 private:
3194         LDKSha256 self;
3195 public:
3196         Sha256(const Sha256&) = delete;
3197         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
3198         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
3199         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
3200         ~Sha256() { Sha256_free(self); }
3201         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
3202         LDKSha256* operator &() { return &self; }
3203         LDKSha256* operator ->() { return &self; }
3204         const LDKSha256* operator &() const { return &self; }
3205         const LDKSha256* operator ->() const { return &self; }
3206 };
3207 class Description {
3208 private:
3209         LDKDescription self;
3210 public:
3211         Description(const Description&) = delete;
3212         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
3213         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
3214         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
3215         ~Description() { Description_free(self); }
3216         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
3217         LDKDescription* operator &() { return &self; }
3218         LDKDescription* operator ->() { return &self; }
3219         const LDKDescription* operator &() const { return &self; }
3220         const LDKDescription* operator ->() const { return &self; }
3221 };
3222 class PayeePubKey {
3223 private:
3224         LDKPayeePubKey self;
3225 public:
3226         PayeePubKey(const PayeePubKey&) = delete;
3227         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
3228         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
3229         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
3230         ~PayeePubKey() { PayeePubKey_free(self); }
3231         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
3232         LDKPayeePubKey* operator &() { return &self; }
3233         LDKPayeePubKey* operator ->() { return &self; }
3234         const LDKPayeePubKey* operator &() const { return &self; }
3235         const LDKPayeePubKey* operator ->() const { return &self; }
3236 };
3237 class ExpiryTime {
3238 private:
3239         LDKExpiryTime self;
3240 public:
3241         ExpiryTime(const ExpiryTime&) = delete;
3242         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
3243         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
3244         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
3245         ~ExpiryTime() { ExpiryTime_free(self); }
3246         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
3247         LDKExpiryTime* operator &() { return &self; }
3248         LDKExpiryTime* operator ->() { return &self; }
3249         const LDKExpiryTime* operator &() const { return &self; }
3250         const LDKExpiryTime* operator ->() const { return &self; }
3251 };
3252 class MinFinalCltvExpiry {
3253 private:
3254         LDKMinFinalCltvExpiry self;
3255 public:
3256         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
3257         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
3258         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
3259         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
3260         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
3261         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
3262         LDKMinFinalCltvExpiry* operator &() { return &self; }
3263         LDKMinFinalCltvExpiry* operator ->() { return &self; }
3264         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
3265         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
3266 };
3267 class Fallback {
3268 private:
3269         LDKFallback self;
3270 public:
3271         Fallback(const Fallback&) = delete;
3272         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
3273         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
3274         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
3275         ~Fallback() { Fallback_free(self); }
3276         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
3277         LDKFallback* operator &() { return &self; }
3278         LDKFallback* operator ->() { return &self; }
3279         const LDKFallback* operator &() const { return &self; }
3280         const LDKFallback* operator ->() const { return &self; }
3281 };
3282 class InvoiceSignature {
3283 private:
3284         LDKInvoiceSignature self;
3285 public:
3286         InvoiceSignature(const InvoiceSignature&) = delete;
3287         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
3288         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
3289         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
3290         ~InvoiceSignature() { InvoiceSignature_free(self); }
3291         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
3292         LDKInvoiceSignature* operator &() { return &self; }
3293         LDKInvoiceSignature* operator ->() { return &self; }
3294         const LDKInvoiceSignature* operator &() const { return &self; }
3295         const LDKInvoiceSignature* operator ->() const { return &self; }
3296 };
3297 class PrivateRoute {
3298 private:
3299         LDKPrivateRoute self;
3300 public:
3301         PrivateRoute(const PrivateRoute&) = delete;
3302         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
3303         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
3304         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
3305         ~PrivateRoute() { PrivateRoute_free(self); }
3306         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
3307         LDKPrivateRoute* operator &() { return &self; }
3308         LDKPrivateRoute* operator ->() { return &self; }
3309         const LDKPrivateRoute* operator &() const { return &self; }
3310         const LDKPrivateRoute* operator ->() const { return &self; }
3311 };
3312 class CreationError {
3313 private:
3314         LDKCreationError self;
3315 public:
3316         CreationError(const CreationError&) = delete;
3317         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
3318         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
3319         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
3320         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
3321         LDKCreationError* operator &() { return &self; }
3322         LDKCreationError* operator ->() { return &self; }
3323         const LDKCreationError* operator &() const { return &self; }
3324         const LDKCreationError* operator ->() const { return &self; }
3325 };
3326 class SemanticError {
3327 private:
3328         LDKSemanticError self;
3329 public:
3330         SemanticError(const SemanticError&) = delete;
3331         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
3332         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
3333         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
3334         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
3335         LDKSemanticError* operator &() { return &self; }
3336         LDKSemanticError* operator ->() { return &self; }
3337         const LDKSemanticError* operator &() const { return &self; }
3338         const LDKSemanticError* operator ->() const { return &self; }
3339 };
3340 class SignOrCreationError {
3341 private:
3342         LDKSignOrCreationError self;
3343 public:
3344         SignOrCreationError(const SignOrCreationError&) = delete;
3345         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
3346         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
3347         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
3348         ~SignOrCreationError() { SignOrCreationError_free(self); }
3349         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
3350         LDKSignOrCreationError* operator &() { return &self; }
3351         LDKSignOrCreationError* operator ->() { return &self; }
3352         const LDKSignOrCreationError* operator &() const { return &self; }
3353         const LDKSignOrCreationError* operator ->() const { return &self; }
3354 };
3355 class RapidGossipSync {
3356 private:
3357         LDKRapidGossipSync self;
3358 public:
3359         RapidGossipSync(const RapidGossipSync&) = delete;
3360         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
3361         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
3362         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
3363         ~RapidGossipSync() { RapidGossipSync_free(self); }
3364         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
3365         LDKRapidGossipSync* operator &() { return &self; }
3366         LDKRapidGossipSync* operator ->() { return &self; }
3367         const LDKRapidGossipSync* operator &() const { return &self; }
3368         const LDKRapidGossipSync* operator ->() const { return &self; }
3369 };
3370 class Persister {
3371 private:
3372         LDKPersister self;
3373 public:
3374         Persister(const Persister&) = delete;
3375         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3376         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3377         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3378         ~Persister() { Persister_free(self); }
3379         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3380         LDKPersister* operator &() { return &self; }
3381         LDKPersister* operator ->() { return &self; }
3382         const LDKPersister* operator &() const { return &self; }
3383         const LDKPersister* operator ->() const { return &self; }
3384         /**
3385          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3386          */
3387         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3388         /**
3389          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3390          */
3391         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3392         /**
3393          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3394          */
3395         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3396 };
3397 class DecodeError {
3398 private:
3399         LDKDecodeError self;
3400 public:
3401         DecodeError(const DecodeError&) = delete;
3402         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3403         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3404         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3405         ~DecodeError() { DecodeError_free(self); }
3406         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3407         LDKDecodeError* operator &() { return &self; }
3408         LDKDecodeError* operator ->() { return &self; }
3409         const LDKDecodeError* operator &() const { return &self; }
3410         const LDKDecodeError* operator ->() const { return &self; }
3411 };
3412 class Init {
3413 private:
3414         LDKInit self;
3415 public:
3416         Init(const Init&) = delete;
3417         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3418         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3419         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3420         ~Init() { Init_free(self); }
3421         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3422         LDKInit* operator &() { return &self; }
3423         LDKInit* operator ->() { return &self; }
3424         const LDKInit* operator &() const { return &self; }
3425         const LDKInit* operator ->() const { return &self; }
3426 };
3427 class ErrorMessage {
3428 private:
3429         LDKErrorMessage self;
3430 public:
3431         ErrorMessage(const ErrorMessage&) = delete;
3432         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3433         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3434         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3435         ~ErrorMessage() { ErrorMessage_free(self); }
3436         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3437         LDKErrorMessage* operator &() { return &self; }
3438         LDKErrorMessage* operator ->() { return &self; }
3439         const LDKErrorMessage* operator &() const { return &self; }
3440         const LDKErrorMessage* operator ->() const { return &self; }
3441 };
3442 class WarningMessage {
3443 private:
3444         LDKWarningMessage self;
3445 public:
3446         WarningMessage(const WarningMessage&) = delete;
3447         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3448         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3449         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3450         ~WarningMessage() { WarningMessage_free(self); }
3451         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3452         LDKWarningMessage* operator &() { return &self; }
3453         LDKWarningMessage* operator ->() { return &self; }
3454         const LDKWarningMessage* operator &() const { return &self; }
3455         const LDKWarningMessage* operator ->() const { return &self; }
3456 };
3457 class Ping {
3458 private:
3459         LDKPing self;
3460 public:
3461         Ping(const Ping&) = delete;
3462         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3463         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3464         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3465         ~Ping() { Ping_free(self); }
3466         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3467         LDKPing* operator &() { return &self; }
3468         LDKPing* operator ->() { return &self; }
3469         const LDKPing* operator &() const { return &self; }
3470         const LDKPing* operator ->() const { return &self; }
3471 };
3472 class Pong {
3473 private:
3474         LDKPong self;
3475 public:
3476         Pong(const Pong&) = delete;
3477         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3478         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3479         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3480         ~Pong() { Pong_free(self); }
3481         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3482         LDKPong* operator &() { return &self; }
3483         LDKPong* operator ->() { return &self; }
3484         const LDKPong* operator &() const { return &self; }
3485         const LDKPong* operator ->() const { return &self; }
3486 };
3487 class OpenChannel {
3488 private:
3489         LDKOpenChannel self;
3490 public:
3491         OpenChannel(const OpenChannel&) = delete;
3492         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3493         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3494         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3495         ~OpenChannel() { OpenChannel_free(self); }
3496         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3497         LDKOpenChannel* operator &() { return &self; }
3498         LDKOpenChannel* operator ->() { return &self; }
3499         const LDKOpenChannel* operator &() const { return &self; }
3500         const LDKOpenChannel* operator ->() const { return &self; }
3501 };
3502 class AcceptChannel {
3503 private:
3504         LDKAcceptChannel self;
3505 public:
3506         AcceptChannel(const AcceptChannel&) = delete;
3507         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3508         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3509         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3510         ~AcceptChannel() { AcceptChannel_free(self); }
3511         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3512         LDKAcceptChannel* operator &() { return &self; }
3513         LDKAcceptChannel* operator ->() { return &self; }
3514         const LDKAcceptChannel* operator &() const { return &self; }
3515         const LDKAcceptChannel* operator ->() const { return &self; }
3516 };
3517 class FundingCreated {
3518 private:
3519         LDKFundingCreated self;
3520 public:
3521         FundingCreated(const FundingCreated&) = delete;
3522         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3523         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3524         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3525         ~FundingCreated() { FundingCreated_free(self); }
3526         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3527         LDKFundingCreated* operator &() { return &self; }
3528         LDKFundingCreated* operator ->() { return &self; }
3529         const LDKFundingCreated* operator &() const { return &self; }
3530         const LDKFundingCreated* operator ->() const { return &self; }
3531 };
3532 class FundingSigned {
3533 private:
3534         LDKFundingSigned self;
3535 public:
3536         FundingSigned(const FundingSigned&) = delete;
3537         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3538         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3539         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3540         ~FundingSigned() { FundingSigned_free(self); }
3541         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3542         LDKFundingSigned* operator &() { return &self; }
3543         LDKFundingSigned* operator ->() { return &self; }
3544         const LDKFundingSigned* operator &() const { return &self; }
3545         const LDKFundingSigned* operator ->() const { return &self; }
3546 };
3547 class ChannelReady {
3548 private:
3549         LDKChannelReady self;
3550 public:
3551         ChannelReady(const ChannelReady&) = delete;
3552         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3553         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3554         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3555         ~ChannelReady() { ChannelReady_free(self); }
3556         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3557         LDKChannelReady* operator &() { return &self; }
3558         LDKChannelReady* operator ->() { return &self; }
3559         const LDKChannelReady* operator &() const { return &self; }
3560         const LDKChannelReady* operator ->() const { return &self; }
3561 };
3562 class Shutdown {
3563 private:
3564         LDKShutdown self;
3565 public:
3566         Shutdown(const Shutdown&) = delete;
3567         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3568         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3569         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3570         ~Shutdown() { Shutdown_free(self); }
3571         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3572         LDKShutdown* operator &() { return &self; }
3573         LDKShutdown* operator ->() { return &self; }
3574         const LDKShutdown* operator &() const { return &self; }
3575         const LDKShutdown* operator ->() const { return &self; }
3576 };
3577 class ClosingSignedFeeRange {
3578 private:
3579         LDKClosingSignedFeeRange self;
3580 public:
3581         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3582         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3583         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3584         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3585         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3586         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3587         LDKClosingSignedFeeRange* operator &() { return &self; }
3588         LDKClosingSignedFeeRange* operator ->() { return &self; }
3589         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3590         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3591 };
3592 class ClosingSigned {
3593 private:
3594         LDKClosingSigned self;
3595 public:
3596         ClosingSigned(const ClosingSigned&) = delete;
3597         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3598         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3599         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3600         ~ClosingSigned() { ClosingSigned_free(self); }
3601         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3602         LDKClosingSigned* operator &() { return &self; }
3603         LDKClosingSigned* operator ->() { return &self; }
3604         const LDKClosingSigned* operator &() const { return &self; }
3605         const LDKClosingSigned* operator ->() const { return &self; }
3606 };
3607 class UpdateAddHTLC {
3608 private:
3609         LDKUpdateAddHTLC self;
3610 public:
3611         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3612         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3613         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3614         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3615         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3616         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3617         LDKUpdateAddHTLC* operator &() { return &self; }
3618         LDKUpdateAddHTLC* operator ->() { return &self; }
3619         const LDKUpdateAddHTLC* operator &() const { return &self; }
3620         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3621 };
3622 class OnionMessage {
3623 private:
3624         LDKOnionMessage self;
3625 public:
3626         OnionMessage(const OnionMessage&) = delete;
3627         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
3628         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
3629         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
3630         ~OnionMessage() { OnionMessage_free(self); }
3631         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
3632         LDKOnionMessage* operator &() { return &self; }
3633         LDKOnionMessage* operator ->() { return &self; }
3634         const LDKOnionMessage* operator &() const { return &self; }
3635         const LDKOnionMessage* operator ->() const { return &self; }
3636 };
3637 class UpdateFulfillHTLC {
3638 private:
3639         LDKUpdateFulfillHTLC self;
3640 public:
3641         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3642         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3643         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3644         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3645         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3646         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3647         LDKUpdateFulfillHTLC* operator &() { return &self; }
3648         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3649         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3650         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3651 };
3652 class UpdateFailHTLC {
3653 private:
3654         LDKUpdateFailHTLC self;
3655 public:
3656         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3657         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3658         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3659         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3660         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3661         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3662         LDKUpdateFailHTLC* operator &() { return &self; }
3663         LDKUpdateFailHTLC* operator ->() { return &self; }
3664         const LDKUpdateFailHTLC* operator &() const { return &self; }
3665         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3666 };
3667 class UpdateFailMalformedHTLC {
3668 private:
3669         LDKUpdateFailMalformedHTLC self;
3670 public:
3671         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3672         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3673         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3674         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3675         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3676         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3677         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3678         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3679         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3680         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3681 };
3682 class CommitmentSigned {
3683 private:
3684         LDKCommitmentSigned self;
3685 public:
3686         CommitmentSigned(const CommitmentSigned&) = delete;
3687         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3688         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3689         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3690         ~CommitmentSigned() { CommitmentSigned_free(self); }
3691         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3692         LDKCommitmentSigned* operator &() { return &self; }
3693         LDKCommitmentSigned* operator ->() { return &self; }
3694         const LDKCommitmentSigned* operator &() const { return &self; }
3695         const LDKCommitmentSigned* operator ->() const { return &self; }
3696 };
3697 class RevokeAndACK {
3698 private:
3699         LDKRevokeAndACK self;
3700 public:
3701         RevokeAndACK(const RevokeAndACK&) = delete;
3702         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3703         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3704         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3705         ~RevokeAndACK() { RevokeAndACK_free(self); }
3706         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3707         LDKRevokeAndACK* operator &() { return &self; }
3708         LDKRevokeAndACK* operator ->() { return &self; }
3709         const LDKRevokeAndACK* operator &() const { return &self; }
3710         const LDKRevokeAndACK* operator ->() const { return &self; }
3711 };
3712 class UpdateFee {
3713 private:
3714         LDKUpdateFee self;
3715 public:
3716         UpdateFee(const UpdateFee&) = delete;
3717         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3718         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3719         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3720         ~UpdateFee() { UpdateFee_free(self); }
3721         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3722         LDKUpdateFee* operator &() { return &self; }
3723         LDKUpdateFee* operator ->() { return &self; }
3724         const LDKUpdateFee* operator &() const { return &self; }
3725         const LDKUpdateFee* operator ->() const { return &self; }
3726 };
3727 class DataLossProtect {
3728 private:
3729         LDKDataLossProtect self;
3730 public:
3731         DataLossProtect(const DataLossProtect&) = delete;
3732         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3733         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3734         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3735         ~DataLossProtect() { DataLossProtect_free(self); }
3736         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3737         LDKDataLossProtect* operator &() { return &self; }
3738         LDKDataLossProtect* operator ->() { return &self; }
3739         const LDKDataLossProtect* operator &() const { return &self; }
3740         const LDKDataLossProtect* operator ->() const { return &self; }
3741 };
3742 class ChannelReestablish {
3743 private:
3744         LDKChannelReestablish self;
3745 public:
3746         ChannelReestablish(const ChannelReestablish&) = delete;
3747         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3748         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3749         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3750         ~ChannelReestablish() { ChannelReestablish_free(self); }
3751         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3752         LDKChannelReestablish* operator &() { return &self; }
3753         LDKChannelReestablish* operator ->() { return &self; }
3754         const LDKChannelReestablish* operator &() const { return &self; }
3755         const LDKChannelReestablish* operator ->() const { return &self; }
3756 };
3757 class AnnouncementSignatures {
3758 private:
3759         LDKAnnouncementSignatures self;
3760 public:
3761         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3762         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3763         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3764         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3765         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3766         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3767         LDKAnnouncementSignatures* operator &() { return &self; }
3768         LDKAnnouncementSignatures* operator ->() { return &self; }
3769         const LDKAnnouncementSignatures* operator &() const { return &self; }
3770         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3771 };
3772 class NetAddress {
3773 private:
3774         LDKNetAddress self;
3775 public:
3776         NetAddress(const NetAddress&) = delete;
3777         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3778         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3779         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3780         ~NetAddress() { NetAddress_free(self); }
3781         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3782         LDKNetAddress* operator &() { return &self; }
3783         LDKNetAddress* operator ->() { return &self; }
3784         const LDKNetAddress* operator &() const { return &self; }
3785         const LDKNetAddress* operator ->() const { return &self; }
3786 };
3787 class UnsignedNodeAnnouncement {
3788 private:
3789         LDKUnsignedNodeAnnouncement self;
3790 public:
3791         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3792         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3793         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3794         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3795         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3796         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3797         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3798         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3799         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3800         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3801 };
3802 class NodeAnnouncement {
3803 private:
3804         LDKNodeAnnouncement self;
3805 public:
3806         NodeAnnouncement(const NodeAnnouncement&) = delete;
3807         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3808         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3809         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3810         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3811         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3812         LDKNodeAnnouncement* operator &() { return &self; }
3813         LDKNodeAnnouncement* operator ->() { return &self; }
3814         const LDKNodeAnnouncement* operator &() const { return &self; }
3815         const LDKNodeAnnouncement* operator ->() const { return &self; }
3816 };
3817 class UnsignedChannelAnnouncement {
3818 private:
3819         LDKUnsignedChannelAnnouncement self;
3820 public:
3821         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3822         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3823         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3824         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3825         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3826         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3827         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3828         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3829         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3830         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3831 };
3832 class ChannelAnnouncement {
3833 private:
3834         LDKChannelAnnouncement self;
3835 public:
3836         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3837         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3838         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3839         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3840         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3841         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3842         LDKChannelAnnouncement* operator &() { return &self; }
3843         LDKChannelAnnouncement* operator ->() { return &self; }
3844         const LDKChannelAnnouncement* operator &() const { return &self; }
3845         const LDKChannelAnnouncement* operator ->() const { return &self; }
3846 };
3847 class UnsignedChannelUpdate {
3848 private:
3849         LDKUnsignedChannelUpdate self;
3850 public:
3851         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3852         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3853         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3854         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3855         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3856         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3857         LDKUnsignedChannelUpdate* operator &() { return &self; }
3858         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3859         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3860         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3861 };
3862 class ChannelUpdate {
3863 private:
3864         LDKChannelUpdate self;
3865 public:
3866         ChannelUpdate(const ChannelUpdate&) = delete;
3867         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3868         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3869         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3870         ~ChannelUpdate() { ChannelUpdate_free(self); }
3871         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3872         LDKChannelUpdate* operator &() { return &self; }
3873         LDKChannelUpdate* operator ->() { return &self; }
3874         const LDKChannelUpdate* operator &() const { return &self; }
3875         const LDKChannelUpdate* operator ->() const { return &self; }
3876 };
3877 class QueryChannelRange {
3878 private:
3879         LDKQueryChannelRange self;
3880 public:
3881         QueryChannelRange(const QueryChannelRange&) = delete;
3882         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3883         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3884         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3885         ~QueryChannelRange() { QueryChannelRange_free(self); }
3886         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3887         LDKQueryChannelRange* operator &() { return &self; }
3888         LDKQueryChannelRange* operator ->() { return &self; }
3889         const LDKQueryChannelRange* operator &() const { return &self; }
3890         const LDKQueryChannelRange* operator ->() const { return &self; }
3891 };
3892 class ReplyChannelRange {
3893 private:
3894         LDKReplyChannelRange self;
3895 public:
3896         ReplyChannelRange(const ReplyChannelRange&) = delete;
3897         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3898         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3899         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3900         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3901         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3902         LDKReplyChannelRange* operator &() { return &self; }
3903         LDKReplyChannelRange* operator ->() { return &self; }
3904         const LDKReplyChannelRange* operator &() const { return &self; }
3905         const LDKReplyChannelRange* operator ->() const { return &self; }
3906 };
3907 class QueryShortChannelIds {
3908 private:
3909         LDKQueryShortChannelIds self;
3910 public:
3911         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3912         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3913         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3914         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3915         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3916         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3917         LDKQueryShortChannelIds* operator &() { return &self; }
3918         LDKQueryShortChannelIds* operator ->() { return &self; }
3919         const LDKQueryShortChannelIds* operator &() const { return &self; }
3920         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3921 };
3922 class ReplyShortChannelIdsEnd {
3923 private:
3924         LDKReplyShortChannelIdsEnd self;
3925 public:
3926         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3927         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3928         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3929         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3930         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3931         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3932         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3933         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3934         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3935         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3936 };
3937 class GossipTimestampFilter {
3938 private:
3939         LDKGossipTimestampFilter self;
3940 public:
3941         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3942         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3943         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3944         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3945         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3946         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3947         LDKGossipTimestampFilter* operator &() { return &self; }
3948         LDKGossipTimestampFilter* operator ->() { return &self; }
3949         const LDKGossipTimestampFilter* operator &() const { return &self; }
3950         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3951 };
3952 class ErrorAction {
3953 private:
3954         LDKErrorAction self;
3955 public:
3956         ErrorAction(const ErrorAction&) = delete;
3957         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3958         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3959         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3960         ~ErrorAction() { ErrorAction_free(self); }
3961         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3962         LDKErrorAction* operator &() { return &self; }
3963         LDKErrorAction* operator ->() { return &self; }
3964         const LDKErrorAction* operator &() const { return &self; }
3965         const LDKErrorAction* operator ->() const { return &self; }
3966 };
3967 class LightningError {
3968 private:
3969         LDKLightningError self;
3970 public:
3971         LightningError(const LightningError&) = delete;
3972         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3973         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3974         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3975         ~LightningError() { LightningError_free(self); }
3976         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3977         LDKLightningError* operator &() { return &self; }
3978         LDKLightningError* operator ->() { return &self; }
3979         const LDKLightningError* operator &() const { return &self; }
3980         const LDKLightningError* operator ->() const { return &self; }
3981 };
3982 class CommitmentUpdate {
3983 private:
3984         LDKCommitmentUpdate self;
3985 public:
3986         CommitmentUpdate(const CommitmentUpdate&) = delete;
3987         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3988         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3989         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3990         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3991         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3992         LDKCommitmentUpdate* operator &() { return &self; }
3993         LDKCommitmentUpdate* operator ->() { return &self; }
3994         const LDKCommitmentUpdate* operator &() const { return &self; }
3995         const LDKCommitmentUpdate* operator ->() const { return &self; }
3996 };
3997 class ChannelMessageHandler {
3998 private:
3999         LDKChannelMessageHandler self;
4000 public:
4001         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
4002         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
4003         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
4004         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
4005         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
4006         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
4007         LDKChannelMessageHandler* operator &() { return &self; }
4008         LDKChannelMessageHandler* operator ->() { return &self; }
4009         const LDKChannelMessageHandler* operator &() const { return &self; }
4010         const LDKChannelMessageHandler* operator ->() const { return &self; }
4011         /**
4012          *  Handle an incoming open_channel message from the given peer.
4013          */
4014         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
4015         /**
4016          *  Handle an incoming accept_channel message from the given peer.
4017          */
4018         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
4019         /**
4020          *  Handle an incoming funding_created message from the given peer.
4021          */
4022         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
4023         /**
4024          *  Handle an incoming funding_signed message from the given peer.
4025          */
4026         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
4027         /**
4028          *  Handle an incoming channel_ready message from the given peer.
4029          */
4030         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
4031         /**
4032          *  Handle an incoming shutdown message from the given peer.
4033          */
4034         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
4035         /**
4036          *  Handle an incoming closing_signed message from the given peer.
4037          */
4038         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
4039         /**
4040          *  Handle an incoming update_add_htlc message from the given peer.
4041          */
4042         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
4043         /**
4044          *  Handle an incoming update_fulfill_htlc message from the given peer.
4045          */
4046         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
4047         /**
4048          *  Handle an incoming update_fail_htlc message from the given peer.
4049          */
4050         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
4051         /**
4052          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
4053          */
4054         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
4055         /**
4056          *  Handle an incoming commitment_signed message from the given peer.
4057          */
4058         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
4059         /**
4060          *  Handle an incoming revoke_and_ack message from the given peer.
4061          */
4062         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
4063         /**
4064          *  Handle an incoming update_fee message from the given peer.
4065          */
4066         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
4067         /**
4068          *  Handle an incoming announcement_signatures message from the given peer.
4069          */
4070         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
4071         /**
4072          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
4073          *  is believed to be possible in the future (eg they're sending us messages we don't
4074          *  understand or indicate they require unknown feature bits), no_connection_possible is set
4075          *  and any outstanding channels should be failed.
4076          * 
4077          *  Note that in some rare cases this may be called without a corresponding
4078          *  [`Self::peer_connected`].
4079          */
4080         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
4081         /**
4082          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
4083          * 
4084          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4085          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4086          *  message handlers may still wish to communicate with this peer.
4087          */
4088         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
4089         /**
4090          *  Handle an incoming channel_reestablish message from the given peer.
4091          */
4092         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
4093         /**
4094          *  Handle an incoming channel update from the given peer.
4095          */
4096         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
4097         /**
4098          *  Handle an incoming error message from the given peer.
4099          */
4100         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
4101         /**
4102          *  Gets the node feature flags which this handler itself supports. All available handlers are
4103          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4104          *  which are broadcasted in our [`NodeAnnouncement`] message.
4105          */
4106         inline LDK::NodeFeatures provided_node_features();
4107         /**
4108          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4109          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4110          *  which are sent in our [`Init`] message.
4111          * 
4112          *  Note that this method is called before [`Self::peer_connected`].
4113          */
4114         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4115 };
4116 class RoutingMessageHandler {
4117 private:
4118         LDKRoutingMessageHandler self;
4119 public:
4120         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
4121         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
4122         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
4123         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
4124         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
4125         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
4126         LDKRoutingMessageHandler* operator &() { return &self; }
4127         LDKRoutingMessageHandler* operator ->() { return &self; }
4128         const LDKRoutingMessageHandler* operator &() const { return &self; }
4129         const LDKRoutingMessageHandler* operator ->() const { return &self; }
4130         /**
4131          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
4132          *  false or returning an Err otherwise.
4133          */
4134         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
4135         /**
4136          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
4137          *  or returning an Err otherwise.
4138          */
4139         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
4140         /**
4141          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
4142          *  false or returning an Err otherwise.
4143          */
4144         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
4145         /**
4146          *  Gets channel announcements and updates required to dump our routing table to a remote node,
4147          *  starting at the short_channel_id indicated by starting_point and including announcements
4148          *  for a single channel.
4149          */
4150         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
4151         /**
4152          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4153          *  the node *after* the provided pubkey and including up to one announcement immediately
4154          *  higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
4155          *  If None is provided for starting_point, we start at the first node.
4156          * 
4157          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4158          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4159          */
4160         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKPublicKey starting_point);
4161         /**
4162          *  Called when a connection is established with a peer. This can be used to
4163          *  perform routing table synchronization using a strategy defined by the
4164          *  implementor.
4165          * 
4166          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4167          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4168          *  message handlers may still wish to communicate with this peer.
4169          */
4170         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
4171         /**
4172          *  Handles the reply of a query we initiated to learn about channels
4173          *  for a given range of blocks. We can expect to receive one or more
4174          *  replies to a single query.
4175          */
4176         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4177         /**
4178          *  Handles the reply of a query we initiated asking for routing gossip
4179          *  messages for a list of channels. We should receive this message when
4180          *  a node has completed its best effort to send us the pertaining routing
4181          *  gossip messages.
4182          */
4183         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4184         /**
4185          *  Handles when a peer asks us to send a list of short_channel_ids
4186          *  for the requested range of blocks.
4187          */
4188         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4189         /**
4190          *  Handles when a peer asks us to send routing gossip messages for a
4191          *  list of short_channel_ids.
4192          */
4193         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4194         /**
4195          *  Gets the node feature flags which this handler itself supports. All available handlers are
4196          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4197          *  which are broadcasted in our [`NodeAnnouncement`] message.
4198          */
4199         inline LDK::NodeFeatures provided_node_features();
4200         /**
4201          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4202          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4203          *  which are sent in our [`Init`] message.
4204          * 
4205          *  Note that this method is called before [`Self::peer_connected`].
4206          */
4207         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4208 };
4209 class OnionMessageHandler {
4210 private:
4211         LDKOnionMessageHandler self;
4212 public:
4213         OnionMessageHandler(const OnionMessageHandler&) = delete;
4214         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
4215         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
4216         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
4217         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
4218         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
4219         LDKOnionMessageHandler* operator &() { return &self; }
4220         LDKOnionMessageHandler* operator ->() { return &self; }
4221         const LDKOnionMessageHandler* operator &() const { return &self; }
4222         const LDKOnionMessageHandler* operator ->() const { return &self; }
4223         /**
4224          *  Handle an incoming onion_message message from the given peer.
4225          */
4226         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
4227         /**
4228          *  Called when a connection is established with a peer. Can be used to track which peers
4229          *  advertise onion message support and are online.
4230          * 
4231          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4232          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4233          *  message handlers may still wish to communicate with this peer.
4234          */
4235         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
4236         /**
4237          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
4238          *  drop and refuse to forward onion messages to this peer.
4239          * 
4240          *  Note that in some rare cases this may be called without a corresponding
4241          *  [`Self::peer_connected`].
4242          */
4243         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
4244         /**
4245          *  Gets the node feature flags which this handler itself supports. All available handlers are
4246          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4247          *  which are broadcasted in our [`NodeAnnouncement`] message.
4248          */
4249         inline LDK::NodeFeatures provided_node_features();
4250         /**
4251          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4252          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4253          *  which are sent in our [`Init`] message.
4254          * 
4255          *  Note that this method is called before [`Self::peer_connected`].
4256          */
4257         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4258 };
4259 class GraphSyncError {
4260 private:
4261         LDKGraphSyncError self;
4262 public:
4263         GraphSyncError(const GraphSyncError&) = delete;
4264         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
4265         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
4266         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
4267         ~GraphSyncError() { GraphSyncError_free(self); }
4268         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
4269         LDKGraphSyncError* operator &() { return &self; }
4270         LDKGraphSyncError* operator ->() { return &self; }
4271         const LDKGraphSyncError* operator &() const { return &self; }
4272         const LDKGraphSyncError* operator ->() const { return &self; }
4273 };
4274 class Level {
4275 private:
4276         LDKLevel self;
4277 public:
4278         Level(const Level&) = delete;
4279         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
4280         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
4281         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
4282         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
4283         LDKLevel* operator &() { return &self; }
4284         LDKLevel* operator ->() { return &self; }
4285         const LDKLevel* operator &() const { return &self; }
4286         const LDKLevel* operator ->() const { return &self; }
4287 };
4288 class Record {
4289 private:
4290         LDKRecord self;
4291 public:
4292         Record(const Record&) = delete;
4293         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
4294         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
4295         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
4296         ~Record() { Record_free(self); }
4297         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
4298         LDKRecord* operator &() { return &self; }
4299         LDKRecord* operator ->() { return &self; }
4300         const LDKRecord* operator &() const { return &self; }
4301         const LDKRecord* operator ->() const { return &self; }
4302 };
4303 class Logger {
4304 private:
4305         LDKLogger self;
4306 public:
4307         Logger(const Logger&) = delete;
4308         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
4309         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
4310         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
4311         ~Logger() { Logger_free(self); }
4312         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
4313         LDKLogger* operator &() { return &self; }
4314         LDKLogger* operator ->() { return &self; }
4315         const LDKLogger* operator &() const { return &self; }
4316         const LDKLogger* operator ->() const { return &self; }
4317         /**
4318          *  Logs the `Record`
4319          */
4320         inline void log(const struct LDKRecord *NONNULL_PTR record);
4321 };
4322 class FutureCallback {
4323 private:
4324         LDKFutureCallback self;
4325 public:
4326         FutureCallback(const FutureCallback&) = delete;
4327         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
4328         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
4329         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
4330         ~FutureCallback() { FutureCallback_free(self); }
4331         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
4332         LDKFutureCallback* operator &() { return &self; }
4333         LDKFutureCallback* operator ->() { return &self; }
4334         const LDKFutureCallback* operator &() const { return &self; }
4335         const LDKFutureCallback* operator ->() const { return &self; }
4336         /**
4337          *  The method which is called.
4338          */
4339         inline void call();
4340 };
4341 class Future {
4342 private:
4343         LDKFuture self;
4344 public:
4345         Future(const Future&) = delete;
4346         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
4347         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
4348         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
4349         ~Future() { Future_free(self); }
4350         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
4351         LDKFuture* operator &() { return &self; }
4352         LDKFuture* operator ->() { return &self; }
4353         const LDKFuture* operator &() const { return &self; }
4354         const LDKFuture* operator ->() const { return &self; }
4355 };
4356 class MonitorUpdateId {
4357 private:
4358         LDKMonitorUpdateId self;
4359 public:
4360         MonitorUpdateId(const MonitorUpdateId&) = delete;
4361         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
4362         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
4363         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
4364         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
4365         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
4366         LDKMonitorUpdateId* operator &() { return &self; }
4367         LDKMonitorUpdateId* operator ->() { return &self; }
4368         const LDKMonitorUpdateId* operator &() const { return &self; }
4369         const LDKMonitorUpdateId* operator ->() const { return &self; }
4370 };
4371 class Persist {
4372 private:
4373         LDKPersist self;
4374 public:
4375         Persist(const Persist&) = delete;
4376         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
4377         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
4378         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
4379         ~Persist() { Persist_free(self); }
4380         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
4381         LDKPersist* operator &() { return &self; }
4382         LDKPersist* operator ->() { return &self; }
4383         const LDKPersist* operator &() const { return &self; }
4384         const LDKPersist* operator ->() const { return &self; }
4385         /**
4386          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
4387          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
4388          * 
4389          *  The data can be stored any way you want, but the identifier provided by LDK is the
4390          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
4391          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
4392          * 
4393          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4394          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4395          * 
4396          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
4397          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4398          * 
4399          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
4400          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4401          */
4402         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4403         /**
4404          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
4405          *  update.
4406          * 
4407          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
4408          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
4409          *  details.
4410          * 
4411          *  During blockchain synchronization operations, this may be called with no
4412          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
4413          *  Note that after the full [`ChannelMonitor`] is persisted any previous
4414          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
4415          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
4416          * 
4417          *  If an implementer chooses to persist the updates only, they need to make
4418          *  sure that all the updates are applied to the `ChannelMonitors` *before*
4419          *  the set of channel monitors is given to the `ChannelManager`
4420          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
4421          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
4422          *  persisted, then there is no need to persist individual updates.
4423          * 
4424          *  Note that there could be a performance tradeoff between persisting complete
4425          *  channel monitors on every update vs. persisting only updates and applying
4426          *  them in batches. The size of each monitor grows `O(number of state updates)`
4427          *  whereas updates are small and `O(1)`.
4428          * 
4429          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4430          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4431          * 
4432          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
4433          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
4434          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4435          * 
4436          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4437          * 
4438          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
4439          */
4440         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);
4441 };
4442 class LockedChannelMonitor {
4443 private:
4444         LDKLockedChannelMonitor self;
4445 public:
4446         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
4447         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
4448         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
4449         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
4450         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
4451         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
4452         LDKLockedChannelMonitor* operator &() { return &self; }
4453         LDKLockedChannelMonitor* operator ->() { return &self; }
4454         const LDKLockedChannelMonitor* operator &() const { return &self; }
4455         const LDKLockedChannelMonitor* operator ->() const { return &self; }
4456 };
4457 class ChainMonitor {
4458 private:
4459         LDKChainMonitor self;
4460 public:
4461         ChainMonitor(const ChainMonitor&) = delete;
4462         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
4463         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
4464         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
4465         ~ChainMonitor() { ChainMonitor_free(self); }
4466         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
4467         LDKChainMonitor* operator &() { return &self; }
4468         LDKChainMonitor* operator ->() { return &self; }
4469         const LDKChainMonitor* operator &() const { return &self; }
4470         const LDKChainMonitor* operator ->() const { return &self; }
4471 };
4472 class CResult_LockedChannelMonitorNoneZ {
4473 private:
4474         LDKCResult_LockedChannelMonitorNoneZ self;
4475 public:
4476         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
4477         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
4478         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
4479         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
4480         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
4481         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
4482         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
4483         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
4484         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
4485         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
4486 };
4487 class CResult_PhantomRouteHintsDecodeErrorZ {
4488 private:
4489         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
4490 public:
4491         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
4492         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
4493         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
4494         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
4495         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
4496         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
4497         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
4498         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
4499         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
4500         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
4501 };
4502 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
4503 private:
4504         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
4505 public:
4506         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
4507         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4508         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4509         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
4510         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
4511         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; }
4512         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
4513         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
4514         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
4515         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
4516 };
4517 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
4518 private:
4519         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
4520 public:
4521         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
4522         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4523         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)); }
4524         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
4525         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
4526         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; }
4527         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
4528         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
4529         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
4530         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
4531 };
4532 class CVec_C2Tuple_u32TxOutZZ {
4533 private:
4534         LDKCVec_C2Tuple_u32TxOutZZ self;
4535 public:
4536         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4537         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4538         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4539         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4540         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4541         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; }
4542         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4543         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4544         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4545         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4546 };
4547 class CResult_FundingCreatedDecodeErrorZ {
4548 private:
4549         LDKCResult_FundingCreatedDecodeErrorZ self;
4550 public:
4551         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4552         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4553         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4554         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4555         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4556         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4557         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4558         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4559         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4560         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4561 };
4562 class CResult_ChannelInfoDecodeErrorZ {
4563 private:
4564         LDKCResult_ChannelInfoDecodeErrorZ self;
4565 public:
4566         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4567         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4568         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4569         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4570         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4571         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4572         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4573         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4574         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4575         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4576 };
4577 class CResult_NoneSendErrorZ {
4578 private:
4579         LDKCResult_NoneSendErrorZ self;
4580 public:
4581         CResult_NoneSendErrorZ(const CResult_NoneSendErrorZ&) = delete;
4582         CResult_NoneSendErrorZ(CResult_NoneSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); }
4583         CResult_NoneSendErrorZ(LDKCResult_NoneSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSendErrorZ)); }
4584         operator LDKCResult_NoneSendErrorZ() && { LDKCResult_NoneSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSendErrorZ)); return res; }
4585         ~CResult_NoneSendErrorZ() { CResult_NoneSendErrorZ_free(self); }
4586         CResult_NoneSendErrorZ& operator=(CResult_NoneSendErrorZ&& o) { CResult_NoneSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); return *this; }
4587         LDKCResult_NoneSendErrorZ* operator &() { return &self; }
4588         LDKCResult_NoneSendErrorZ* operator ->() { return &self; }
4589         const LDKCResult_NoneSendErrorZ* operator &() const { return &self; }
4590         const LDKCResult_NoneSendErrorZ* operator ->() const { return &self; }
4591 };
4592 class CResult_CVec_u8ZPeerHandleErrorZ {
4593 private:
4594         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4595 public:
4596         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4597         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4598         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4599         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4600         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4601         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; }
4602         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4603         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4604         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4605         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4606 };
4607 class CResult_GossipTimestampFilterDecodeErrorZ {
4608 private:
4609         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4610 public:
4611         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4612         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4613         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4614         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4615         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4616         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4617         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4618         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4619         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4620         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4621 };
4622 class COption_NetworkUpdateZ {
4623 private:
4624         LDKCOption_NetworkUpdateZ self;
4625 public:
4626         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4627         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4628         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4629         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4630         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4631         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4632         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4633         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4634         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4635         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4636 };
4637 class COption_u64Z {
4638 private:
4639         LDKCOption_u64Z self;
4640 public:
4641         COption_u64Z(const COption_u64Z&) = delete;
4642         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4643         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4644         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4645         ~COption_u64Z() { COption_u64Z_free(self); }
4646         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4647         LDKCOption_u64Z* operator &() { return &self; }
4648         LDKCOption_u64Z* operator ->() { return &self; }
4649         const LDKCOption_u64Z* operator &() const { return &self; }
4650         const LDKCOption_u64Z* operator ->() const { return &self; }
4651 };
4652 class CResult_PaymentPreimageAPIErrorZ {
4653 private:
4654         LDKCResult_PaymentPreimageAPIErrorZ self;
4655 public:
4656         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4657         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4658         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4659         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4660         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4661         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4662         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4663         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4664         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4665         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4666 };
4667 class CResult_RouteHintDecodeErrorZ {
4668 private:
4669         LDKCResult_RouteHintDecodeErrorZ self;
4670 public:
4671         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4672         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4673         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4674         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4675         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4676         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4677         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4678         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4679         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4680         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4681 };
4682 class COption_FilterZ {
4683 private:
4684         LDKCOption_FilterZ self;
4685 public:
4686         COption_FilterZ(const COption_FilterZ&) = delete;
4687         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4688         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4689         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4690         ~COption_FilterZ() { COption_FilterZ_free(self); }
4691         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4692         LDKCOption_FilterZ* operator &() { return &self; }
4693         LDKCOption_FilterZ* operator ->() { return &self; }
4694         const LDKCOption_FilterZ* operator &() const { return &self; }
4695         const LDKCOption_FilterZ* operator ->() const { return &self; }
4696 };
4697 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
4698 private:
4699         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
4700 public:
4701         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
4702         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4703         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4704         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
4705         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
4706         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; }
4707         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
4708         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
4709         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
4710         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
4711 };
4712 class CResult_CommitmentSignedDecodeErrorZ {
4713 private:
4714         LDKCResult_CommitmentSignedDecodeErrorZ self;
4715 public:
4716         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4717         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4718         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4719         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4720         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4721         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4722         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4723         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4724         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4725         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4726 };
4727 class CVec_UpdateAddHTLCZ {
4728 private:
4729         LDKCVec_UpdateAddHTLCZ self;
4730 public:
4731         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4732         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4733         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4734         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4735         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4736         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4737         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4738         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4739         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4740         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4741 };
4742 class COption_u32Z {
4743 private:
4744         LDKCOption_u32Z self;
4745 public:
4746         COption_u32Z(const COption_u32Z&) = delete;
4747         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4748         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4749         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4750         ~COption_u32Z() { COption_u32Z_free(self); }
4751         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4752         LDKCOption_u32Z* operator &() { return &self; }
4753         LDKCOption_u32Z* operator ->() { return &self; }
4754         const LDKCOption_u32Z* operator &() const { return &self; }
4755         const LDKCOption_u32Z* operator ->() const { return &self; }
4756 };
4757 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4758 private:
4759         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4760 public:
4761         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4762         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4763         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4764         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4765         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4766         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4767         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4768         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4769         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4770         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4771 };
4772 class CVec_C2Tuple_TxidBlockHashZZ {
4773 private:
4774         LDKCVec_C2Tuple_TxidBlockHashZZ self;
4775 public:
4776         CVec_C2Tuple_TxidBlockHashZZ(const CVec_C2Tuple_TxidBlockHashZZ&) = delete;
4777         CVec_C2Tuple_TxidBlockHashZZ(CVec_C2Tuple_TxidBlockHashZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidBlockHashZZ)); }
4778         CVec_C2Tuple_TxidBlockHashZZ(LDKCVec_C2Tuple_TxidBlockHashZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); }
4779         operator LDKCVec_C2Tuple_TxidBlockHashZZ() && { LDKCVec_C2Tuple_TxidBlockHashZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); return res; }
4780         ~CVec_C2Tuple_TxidBlockHashZZ() { CVec_C2Tuple_TxidBlockHashZZ_free(self); }
4781         CVec_C2Tuple_TxidBlockHashZZ& operator=(CVec_C2Tuple_TxidBlockHashZZ&& o) { CVec_C2Tuple_TxidBlockHashZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_TxidBlockHashZZ)); return *this; }
4782         LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() { return &self; }
4783         LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() { return &self; }
4784         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() const { return &self; }
4785         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() const { return &self; }
4786 };
4787 class CResult_CommitmentTransactionDecodeErrorZ {
4788 private:
4789         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4790 public:
4791         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4792         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4793         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4794         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4795         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4796         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4797         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4798         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4799         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4800         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4801 };
4802 class CResult_TransactionNoneZ {
4803 private:
4804         LDKCResult_TransactionNoneZ self;
4805 public:
4806         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4807         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4808         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4809         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4810         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4811         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4812         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4813         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4814         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4815         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4816 };
4817 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4818 private:
4819         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4820 public:
4821         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4822         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4823         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4824         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4825         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4826         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4827         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4828         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4829         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4830         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4831 };
4832 class CResult_ErrorMessageDecodeErrorZ {
4833 private:
4834         LDKCResult_ErrorMessageDecodeErrorZ self;
4835 public:
4836         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4837         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4838         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4839         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4840         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4841         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4842         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4843         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4844         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4845         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4846 };
4847 class CResult_OpenChannelDecodeErrorZ {
4848 private:
4849         LDKCResult_OpenChannelDecodeErrorZ self;
4850 public:
4851         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4852         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4853         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4854         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4855         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4856         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4857         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4858         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4859         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4860         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4861 };
4862 class CResult_QueryChannelRangeDecodeErrorZ {
4863 private:
4864         LDKCResult_QueryChannelRangeDecodeErrorZ self;
4865 public:
4866         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
4867         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
4868         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
4869         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
4870         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
4871         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
4872         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
4873         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
4874         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
4875         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4876 };
4877 class CVec_TransactionZ {
4878 private:
4879         LDKCVec_TransactionZ self;
4880 public:
4881         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
4882         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
4883         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
4884         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
4885         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
4886         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
4887         LDKCVec_TransactionZ* operator &() { return &self; }
4888         LDKCVec_TransactionZ* operator ->() { return &self; }
4889         const LDKCVec_TransactionZ* operator &() const { return &self; }
4890         const LDKCVec_TransactionZ* operator ->() const { return &self; }
4891 };
4892 class C2Tuple_TxidBlockHashZ {
4893 private:
4894         LDKC2Tuple_TxidBlockHashZ self;
4895 public:
4896         C2Tuple_TxidBlockHashZ(const C2Tuple_TxidBlockHashZ&) = delete;
4897         C2Tuple_TxidBlockHashZ(C2Tuple_TxidBlockHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); }
4898         C2Tuple_TxidBlockHashZ(LDKC2Tuple_TxidBlockHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); }
4899         operator LDKC2Tuple_TxidBlockHashZ() && { LDKC2Tuple_TxidBlockHashZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); return res; }
4900         ~C2Tuple_TxidBlockHashZ() { C2Tuple_TxidBlockHashZ_free(self); }
4901         C2Tuple_TxidBlockHashZ& operator=(C2Tuple_TxidBlockHashZ&& o) { C2Tuple_TxidBlockHashZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); return *this; }
4902         LDKC2Tuple_TxidBlockHashZ* operator &() { return &self; }
4903         LDKC2Tuple_TxidBlockHashZ* operator ->() { return &self; }
4904         const LDKC2Tuple_TxidBlockHashZ* operator &() const { return &self; }
4905         const LDKC2Tuple_TxidBlockHashZ* operator ->() const { return &self; }
4906 };
4907 class CResult_ChannelFeaturesDecodeErrorZ {
4908 private:
4909         LDKCResult_ChannelFeaturesDecodeErrorZ self;
4910 public:
4911         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
4912         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
4913         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
4914         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
4915         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
4916         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
4917         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
4918         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
4919         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
4920         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
4921 };
4922 class CResult_ChannelReadyDecodeErrorZ {
4923 private:
4924         LDKCResult_ChannelReadyDecodeErrorZ self;
4925 public:
4926         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
4927         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
4928         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
4929         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
4930         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
4931         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
4932         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
4933         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
4934         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
4935         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
4936 };
4937 class CResult_UpdateFeeDecodeErrorZ {
4938 private:
4939         LDKCResult_UpdateFeeDecodeErrorZ self;
4940 public:
4941         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
4942         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
4943         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
4944         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
4945         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
4946         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
4947         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
4948         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
4949         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
4950         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
4951 };
4952 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
4953 private:
4954         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
4955 public:
4956         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4957         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4958         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4959         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4960         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4961         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4962         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4963         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4964         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4965         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4966 };
4967 class CResult_boolLightningErrorZ {
4968 private:
4969         LDKCResult_boolLightningErrorZ self;
4970 public:
4971         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4972         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4973         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4974         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4975         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4976         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4977         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4978         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4979         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4980         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4981 };
4982 class CResult_NodeIdDecodeErrorZ {
4983 private:
4984         LDKCResult_NodeIdDecodeErrorZ self;
4985 public:
4986         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
4987         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
4988         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
4989         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
4990         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
4991         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
4992         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
4993         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
4994         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
4995         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
4996 };
4997 class COption_HTLCDestinationZ {
4998 private:
4999         LDKCOption_HTLCDestinationZ self;
5000 public:
5001         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
5002         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
5003         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
5004         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
5005         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
5006         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
5007         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
5008         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
5009         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
5010         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
5011 };
5012 class C2Tuple_BlockHashChannelMonitorZ {
5013 private:
5014         LDKC2Tuple_BlockHashChannelMonitorZ self;
5015 public:
5016         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
5017         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
5018         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
5019         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
5020         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
5021         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
5022         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
5023         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
5024         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
5025         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
5026 };
5027 class CResult_ShutdownScriptInvalidShutdownScriptZ {
5028 private:
5029         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
5030 public:
5031         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
5032         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
5033         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
5034         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
5035         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
5036         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
5037         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
5038         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
5039         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
5040         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
5041 };
5042 class CResult_NodeAnnouncementInfoDecodeErrorZ {
5043 private:
5044         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
5045 public:
5046         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
5047         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
5048         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
5049         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
5050         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
5051         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
5052         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
5053         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
5054         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
5055         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
5056 };
5057 class CResult_COption_NetworkUpdateZDecodeErrorZ {
5058 private:
5059         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
5060 public:
5061         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
5062         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
5063         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
5064         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
5065         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
5066         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; }
5067         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
5068         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
5069         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
5070         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
5071 };
5072 class CVec_UpdateFailMalformedHTLCZ {
5073 private:
5074         LDKCVec_UpdateFailMalformedHTLCZ self;
5075 public:
5076         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
5077         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
5078         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
5079         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
5080         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
5081         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
5082         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
5083         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
5084         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
5085         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
5086 };
5087 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
5088 private:
5089         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
5090 public:
5091         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
5092         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5093         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5094         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
5095         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
5096         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ& operator=(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return *this; }
5097         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
5098         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
5099         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
5100         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
5101 };
5102 class CVec_RouteHopZ {
5103 private:
5104         LDKCVec_RouteHopZ self;
5105 public:
5106         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5107         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5108         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5109         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5110         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5111         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5112         LDKCVec_RouteHopZ* operator &() { return &self; }
5113         LDKCVec_RouteHopZ* operator ->() { return &self; }
5114         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5115         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5116 };
5117 class COption_CustomOnionMessageContentsZ {
5118 private:
5119         LDKCOption_CustomOnionMessageContentsZ self;
5120 public:
5121         COption_CustomOnionMessageContentsZ(const COption_CustomOnionMessageContentsZ&) = delete;
5122         COption_CustomOnionMessageContentsZ(COption_CustomOnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); }
5123         COption_CustomOnionMessageContentsZ(LDKCOption_CustomOnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); }
5124         operator LDKCOption_CustomOnionMessageContentsZ() && { LDKCOption_CustomOnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); return res; }
5125         ~COption_CustomOnionMessageContentsZ() { COption_CustomOnionMessageContentsZ_free(self); }
5126         COption_CustomOnionMessageContentsZ& operator=(COption_CustomOnionMessageContentsZ&& o) { COption_CustomOnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); return *this; }
5127         LDKCOption_CustomOnionMessageContentsZ* operator &() { return &self; }
5128         LDKCOption_CustomOnionMessageContentsZ* operator ->() { return &self; }
5129         const LDKCOption_CustomOnionMessageContentsZ* operator &() const { return &self; }
5130         const LDKCOption_CustomOnionMessageContentsZ* operator ->() const { return &self; }
5131 };
5132 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5133 private:
5134         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5135 public:
5136         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5137         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5138         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5139         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5140         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5141         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; }
5142         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5143         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5144         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5145         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5146 };
5147 class CVec_ThirtyTwoBytesZ {
5148 private:
5149         LDKCVec_ThirtyTwoBytesZ self;
5150 public:
5151         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5152         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5153         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5154         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5155         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5156         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5157         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5158         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5159         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5160         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5161 };
5162 class CResult_ClosingSignedDecodeErrorZ {
5163 private:
5164         LDKCResult_ClosingSignedDecodeErrorZ self;
5165 public:
5166         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5167         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5168         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5169         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5170         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5171         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5172         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5173         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5174         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5175         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5176 };
5177 class CResult_NonePaymentErrorZ {
5178 private:
5179         LDKCResult_NonePaymentErrorZ self;
5180 public:
5181         CResult_NonePaymentErrorZ(const CResult_NonePaymentErrorZ&) = delete;
5182         CResult_NonePaymentErrorZ(CResult_NonePaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); }
5183         CResult_NonePaymentErrorZ(LDKCResult_NonePaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); }
5184         operator LDKCResult_NonePaymentErrorZ() && { LDKCResult_NonePaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); return res; }
5185         ~CResult_NonePaymentErrorZ() { CResult_NonePaymentErrorZ_free(self); }
5186         CResult_NonePaymentErrorZ& operator=(CResult_NonePaymentErrorZ&& o) { CResult_NonePaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); return *this; }
5187         LDKCResult_NonePaymentErrorZ* operator &() { return &self; }
5188         LDKCResult_NonePaymentErrorZ* operator ->() { return &self; }
5189         const LDKCResult_NonePaymentErrorZ* operator &() const { return &self; }
5190         const LDKCResult_NonePaymentErrorZ* operator ->() const { return &self; }
5191 };
5192 class CVec_CResult_NoneAPIErrorZZ {
5193 private:
5194         LDKCVec_CResult_NoneAPIErrorZZ self;
5195 public:
5196         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5197         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5198         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5199         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5200         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5201         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; }
5202         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5203         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5204         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5205         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5206 };
5207 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5208 private:
5209         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5210 public:
5211         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5212         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5213         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5214         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5215         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5216         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5217         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5218         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5219         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5220         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5221 };
5222 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5223 private:
5224         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5225 public:
5226         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5227         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5228         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5229         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5230         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5231         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; }
5232         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5233         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5234         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5235         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5236 };
5237 class CVec_RouteHintHopZ {
5238 private:
5239         LDKCVec_RouteHintHopZ self;
5240 public:
5241         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5242         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5243         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5244         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5245         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5246         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5247         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5248         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5249         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5250         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5251 };
5252 class CResult_PaymentParametersDecodeErrorZ {
5253 private:
5254         LDKCResult_PaymentParametersDecodeErrorZ self;
5255 public:
5256         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5257         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5258         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5259         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5260         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5261         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5262         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5263         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5264         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5265         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5266 };
5267 class CVec_U5Z {
5268 private:
5269         LDKCVec_U5Z self;
5270 public:
5271         CVec_U5Z(const CVec_U5Z&) = delete;
5272         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
5273         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
5274         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
5275         ~CVec_U5Z() { CVec_U5Z_free(self); }
5276         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
5277         LDKCVec_U5Z* operator &() { return &self; }
5278         LDKCVec_U5Z* operator ->() { return &self; }
5279         const LDKCVec_U5Z* operator &() const { return &self; }
5280         const LDKCVec_U5Z* operator ->() const { return &self; }
5281 };
5282 class CResult_SignDecodeErrorZ {
5283 private:
5284         LDKCResult_SignDecodeErrorZ self;
5285 public:
5286         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5287         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5288         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5289         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5290         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5291         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5292         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5293         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5294         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5295         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5296 };
5297 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5298 private:
5299         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5300 public:
5301         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5302         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5303         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5304         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5305         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5306         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5307         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5308         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5309         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5310         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5311 };
5312 class COption_AccessZ {
5313 private:
5314         LDKCOption_AccessZ self;
5315 public:
5316         COption_AccessZ(const COption_AccessZ&) = delete;
5317         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
5318         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
5319         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
5320         ~COption_AccessZ() { COption_AccessZ_free(self); }
5321         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
5322         LDKCOption_AccessZ* operator &() { return &self; }
5323         LDKCOption_AccessZ* operator ->() { return &self; }
5324         const LDKCOption_AccessZ* operator &() const { return &self; }
5325         const LDKCOption_AccessZ* operator ->() const { return &self; }
5326 };
5327 class CResult_PongDecodeErrorZ {
5328 private:
5329         LDKCResult_PongDecodeErrorZ self;
5330 public:
5331         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5332         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5333         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5334         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5335         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5336         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5337         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5338         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5339         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5340         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5341 };
5342 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
5343 private:
5344         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
5345 public:
5346         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
5347         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5348         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5349         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
5350         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
5351         C2Tuple_OutPointCVec_MonitorUpdateIdZZ& operator=(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return *this; }
5352         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
5353         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
5354         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
5355         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
5356 };
5357 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5358 private:
5359         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5360 public:
5361         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5362         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5363         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5364         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5365         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5366         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; }
5367         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5368         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5369         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5370         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5371 };
5372 class C2Tuple_SignatureSignatureZ {
5373 private:
5374         LDKC2Tuple_SignatureSignatureZ self;
5375 public:
5376         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
5377         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
5378         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
5379         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
5380         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
5381         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
5382         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
5383         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
5384         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
5385         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
5386 };
5387 class C2Tuple_BlockHashChannelManagerZ {
5388 private:
5389         LDKC2Tuple_BlockHashChannelManagerZ self;
5390 public:
5391         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5392         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5393         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5394         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5395         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5396         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5397         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5398         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5399         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5400         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5401 };
5402 class CResult_ChannelTransactionParametersDecodeErrorZ {
5403 private:
5404         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5405 public:
5406         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5407         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5408         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5409         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5410         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5411         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5412         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5413         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5414         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5415         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5416 };
5417 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5418 private:
5419         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5420 public:
5421         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5422         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5423         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5424         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5425         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5426         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5427         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5428         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5429         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5430         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5431 };
5432 class C2Tuple_PaymentHashPaymentIdZ {
5433 private:
5434         LDKC2Tuple_PaymentHashPaymentIdZ self;
5435 public:
5436         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5437         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5438         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5439         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5440         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5441         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5442         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5443         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5444         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5445         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5446 };
5447 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5448 private:
5449         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5450 public:
5451         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5452         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5453         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5454         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5455         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5456         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; }
5457         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5458         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5459         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5460         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5461 };
5462 class CResult_NoneErrorZ {
5463 private:
5464         LDKCResult_NoneErrorZ self;
5465 public:
5466         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5467         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5468         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5469         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5470         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5471         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5472         LDKCResult_NoneErrorZ* operator &() { return &self; }
5473         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5474         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5475         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5476 };
5477 class CResult_InFlightHtlcsDecodeErrorZ {
5478 private:
5479         LDKCResult_InFlightHtlcsDecodeErrorZ self;
5480 public:
5481         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
5482         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
5483         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
5484         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
5485         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
5486         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
5487         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
5488         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
5489         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
5490         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
5491 };
5492 class CResult_COption_HTLCDestinationZDecodeErrorZ {
5493 private:
5494         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
5495 public:
5496         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
5497         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
5498         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
5499         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
5500         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
5501         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; }
5502         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
5503         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
5504         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
5505         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
5506 };
5507 class CResult_SiPrefixParseErrorZ {
5508 private:
5509         LDKCResult_SiPrefixParseErrorZ self;
5510 public:
5511         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5512         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5513         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5514         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5515         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5516         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5517         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5518         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5519         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5520         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
5521 };
5522 class CResult_BlindedHopDecodeErrorZ {
5523 private:
5524         LDKCResult_BlindedHopDecodeErrorZ self;
5525 public:
5526         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
5527         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
5528         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
5529         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
5530         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
5531         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
5532         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
5533         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
5534         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
5535         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
5536 };
5537 class CResult_TrustedCommitmentTransactionNoneZ {
5538 private:
5539         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5540 public:
5541         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5542         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5543         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5544         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5545         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5546         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5547         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5548         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5549         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5550         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
5551 };
5552 class CResult_FixedPenaltyScorerDecodeErrorZ {
5553 private:
5554         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
5555 public:
5556         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
5557         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
5558         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
5559         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
5560         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
5561         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
5562         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
5563         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
5564         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
5565         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
5566 };
5567 class CResult_NoneLightningErrorZ {
5568 private:
5569         LDKCResult_NoneLightningErrorZ self;
5570 public:
5571         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
5572         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
5573         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
5574         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
5575         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
5576         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
5577         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
5578         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
5579         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
5580         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
5581 };
5582 class CResult_NonePeerHandleErrorZ {
5583 private:
5584         LDKCResult_NonePeerHandleErrorZ self;
5585 public:
5586         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
5587         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
5588         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
5589         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
5590         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
5591         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
5592         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
5593         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
5594         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
5595         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
5596 };
5597 class CResult_COption_EventZDecodeErrorZ {
5598 private:
5599         LDKCResult_COption_EventZDecodeErrorZ self;
5600 public:
5601         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
5602         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
5603         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
5604         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
5605         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
5606         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; }
5607         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
5608         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
5609         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
5610         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
5611 };
5612 class CResult_CVec_SignatureZNoneZ {
5613 private:
5614         LDKCResult_CVec_SignatureZNoneZ self;
5615 public:
5616         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
5617         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
5618         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
5619         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
5620         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
5621         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; }
5622         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
5623         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
5624         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
5625         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
5626 };
5627 class COption_CVec_NetAddressZZ {
5628 private:
5629         LDKCOption_CVec_NetAddressZZ self;
5630 public:
5631         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
5632         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
5633         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
5634         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
5635         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
5636         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; }
5637         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
5638         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
5639         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
5640         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
5641 };
5642 class CResult__u832APIErrorZ {
5643 private:
5644         LDKCResult__u832APIErrorZ self;
5645 public:
5646         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
5647         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
5648         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
5649         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
5650         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
5651         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
5652         LDKCResult__u832APIErrorZ* operator &() { return &self; }
5653         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
5654         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
5655         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
5656 };
5657 class CResult_PaymentIdPaymentErrorZ {
5658 private:
5659         LDKCResult_PaymentIdPaymentErrorZ self;
5660 public:
5661         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
5662         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
5663         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
5664         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
5665         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
5666         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
5667         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
5668         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
5669         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
5670         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
5671 };
5672 class CResult_COption_MonitorEventZDecodeErrorZ {
5673 private:
5674         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
5675 public:
5676         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
5677         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
5678         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
5679         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
5680         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
5681         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; }
5682         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
5683         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
5684         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
5685         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
5686 };
5687 class CResult_RoutingFeesDecodeErrorZ {
5688 private:
5689         LDKCResult_RoutingFeesDecodeErrorZ self;
5690 public:
5691         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
5692         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
5693         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
5694         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
5695         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
5696         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
5697         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
5698         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
5699         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
5700         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
5701 };
5702 class CResult_PayeePubKeyErrorZ {
5703 private:
5704         LDKCResult_PayeePubKeyErrorZ self;
5705 public:
5706         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
5707         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
5708         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
5709         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
5710         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
5711         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
5712         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
5713         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
5714         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
5715         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
5716 };
5717 class CResult_DescriptionCreationErrorZ {
5718 private:
5719         LDKCResult_DescriptionCreationErrorZ self;
5720 public:
5721         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
5722         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
5723         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
5724         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
5725         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
5726         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
5727         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
5728         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
5729         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
5730         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
5731 };
5732 class CResult_QueryShortChannelIdsDecodeErrorZ {
5733 private:
5734         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
5735 public:
5736         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
5737         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
5738         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
5739         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
5740         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
5741         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
5742         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
5743         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
5744         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
5745         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
5746 };
5747 class CResult_InvoiceSemanticErrorZ {
5748 private:
5749         LDKCResult_InvoiceSemanticErrorZ self;
5750 public:
5751         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
5752         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
5753         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
5754         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
5755         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
5756         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
5757         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
5758         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
5759         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
5760         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
5761 };
5762 class CResult_UpdateAddHTLCDecodeErrorZ {
5763 private:
5764         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
5765 public:
5766         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
5767         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
5768         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
5769         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
5770         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
5771         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
5772         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
5773         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
5774         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
5775         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
5776 };
5777 class COption_MonitorEventZ {
5778 private:
5779         LDKCOption_MonitorEventZ self;
5780 public:
5781         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
5782         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
5783         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
5784         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
5785         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
5786         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
5787         LDKCOption_MonitorEventZ* operator &() { return &self; }
5788         LDKCOption_MonitorEventZ* operator ->() { return &self; }
5789         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
5790         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
5791 };
5792 class COption_TypeZ {
5793 private:
5794         LDKCOption_TypeZ self;
5795 public:
5796         COption_TypeZ(const COption_TypeZ&) = delete;
5797         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
5798         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
5799         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
5800         ~COption_TypeZ() { COption_TypeZ_free(self); }
5801         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
5802         LDKCOption_TypeZ* operator &() { return &self; }
5803         LDKCOption_TypeZ* operator ->() { return &self; }
5804         const LDKCOption_TypeZ* operator &() const { return &self; }
5805         const LDKCOption_TypeZ* operator ->() const { return &self; }
5806 };
5807 class CResult_COption_TypeZDecodeErrorZ {
5808 private:
5809         LDKCResult_COption_TypeZDecodeErrorZ self;
5810 public:
5811         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
5812         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
5813         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
5814         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
5815         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
5816         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; }
5817         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
5818         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
5819         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
5820         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
5821 };
5822 class CResult_UpdateFailHTLCDecodeErrorZ {
5823 private:
5824         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
5825 public:
5826         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
5827         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
5828         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
5829         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
5830         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
5831         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
5832         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
5833         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
5834         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
5835         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
5836 };
5837 class CResult_InvoiceParseOrSemanticErrorZ {
5838 private:
5839         LDKCResult_InvoiceParseOrSemanticErrorZ self;
5840 public:
5841         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
5842         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
5843         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
5844         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
5845         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
5846         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
5847         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
5848         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
5849         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
5850         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
5851 };
5852 class CResult_RevokeAndACKDecodeErrorZ {
5853 private:
5854         LDKCResult_RevokeAndACKDecodeErrorZ self;
5855 public:
5856         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
5857         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
5858         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
5859         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
5860         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
5861         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
5862         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
5863         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
5864         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
5865         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
5866 };
5867 class CResult_SpendableOutputDescriptorDecodeErrorZ {
5868 private:
5869         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
5870 public:
5871         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
5872         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
5873         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
5874         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
5875         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
5876         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
5877         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5878         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5879         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5880         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5881 };
5882 class CResult_UnsignedChannelUpdateDecodeErrorZ {
5883 private:
5884         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
5885 public:
5886         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
5887         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
5888         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
5889         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
5890         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
5891         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
5892         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
5893         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
5894         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
5895         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
5896 };
5897 class CVec_EventZ {
5898 private:
5899         LDKCVec_EventZ self;
5900 public:
5901         CVec_EventZ(const CVec_EventZ&) = delete;
5902         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
5903         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
5904         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
5905         ~CVec_EventZ() { CVec_EventZ_free(self); }
5906         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
5907         LDKCVec_EventZ* operator &() { return &self; }
5908         LDKCVec_EventZ* operator ->() { return &self; }
5909         const LDKCVec_EventZ* operator &() const { return &self; }
5910         const LDKCVec_EventZ* operator ->() const { return &self; }
5911 };
5912 class CResult_NoneSemanticErrorZ {
5913 private:
5914         LDKCResult_NoneSemanticErrorZ self;
5915 public:
5916         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
5917         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
5918         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
5919         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
5920         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
5921         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
5922         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
5923         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
5924         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
5925         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
5926 };
5927 class CVec_C2Tuple_u32ScriptZZ {
5928 private:
5929         LDKCVec_C2Tuple_u32ScriptZZ self;
5930 public:
5931         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
5932         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
5933         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
5934         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
5935         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
5936         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; }
5937         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
5938         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
5939         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
5940         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
5941 };
5942 class CResult_COption_ClosureReasonZDecodeErrorZ {
5943 private:
5944         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
5945 public:
5946         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
5947         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
5948         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
5949         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
5950         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
5951         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; }
5952         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
5953         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
5954         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
5955         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
5956 };
5957 class CResult_PaymentHashPaymentSendFailureZ {
5958 private:
5959         LDKCResult_PaymentHashPaymentSendFailureZ self;
5960 public:
5961         CResult_PaymentHashPaymentSendFailureZ(const CResult_PaymentHashPaymentSendFailureZ&) = delete;
5962         CResult_PaymentHashPaymentSendFailureZ(CResult_PaymentHashPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); }
5963         CResult_PaymentHashPaymentSendFailureZ(LDKCResult_PaymentHashPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); }
5964         operator LDKCResult_PaymentHashPaymentSendFailureZ() && { LDKCResult_PaymentHashPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); return res; }
5965         ~CResult_PaymentHashPaymentSendFailureZ() { CResult_PaymentHashPaymentSendFailureZ_free(self); }
5966         CResult_PaymentHashPaymentSendFailureZ& operator=(CResult_PaymentHashPaymentSendFailureZ&& o) { CResult_PaymentHashPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); return *this; }
5967         LDKCResult_PaymentHashPaymentSendFailureZ* operator &() { return &self; }
5968         LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() { return &self; }
5969         const LDKCResult_PaymentHashPaymentSendFailureZ* operator &() const { return &self; }
5970         const LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() const { return &self; }
5971 };
5972 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
5973 private:
5974         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
5975 public:
5976         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
5977         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
5978         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
5979         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
5980         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
5981         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
5982         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
5983         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
5984         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
5985         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
5986 };
5987 class CResult_RouteParametersDecodeErrorZ {
5988 private:
5989         LDKCResult_RouteParametersDecodeErrorZ self;
5990 public:
5991         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
5992         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
5993         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
5994         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
5995         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
5996         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
5997         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
5998         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
5999         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6000         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6001 };
6002 class CResult_PrivateRouteCreationErrorZ {
6003 private:
6004         LDKCResult_PrivateRouteCreationErrorZ self;
6005 public:
6006         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6007         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6008         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6009         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6010         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6011         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6012         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6013         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6014         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6015         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6016 };
6017 class CResult_NodeAliasDecodeErrorZ {
6018 private:
6019         LDKCResult_NodeAliasDecodeErrorZ self;
6020 public:
6021         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
6022         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
6023         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
6024         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
6025         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
6026         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
6027         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
6028         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
6029         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
6030         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
6031 };
6032 class CVec_UpdateFulfillHTLCZ {
6033 private:
6034         LDKCVec_UpdateFulfillHTLCZ self;
6035 public:
6036         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6037         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6038         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6039         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6040         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6041         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6042         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6043         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6044         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6045         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6046 };
6047 class CResult_AnnouncementSignaturesDecodeErrorZ {
6048 private:
6049         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6050 public:
6051         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6052         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6053         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6054         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6055         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6056         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6057         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6058         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6059         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6060         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6061 };
6062 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6063 private:
6064         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6065 public:
6066         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6067         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6068         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6069         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6070         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6071         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6072         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6073         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6074         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6075         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6076 };
6077 class CResult_NodeFeaturesDecodeErrorZ {
6078 private:
6079         LDKCResult_NodeFeaturesDecodeErrorZ self;
6080 public:
6081         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6082         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6083         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6084         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6085         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6086         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6087         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6088         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6089         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6090         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6091 };
6092 class CResult_InMemorySignerDecodeErrorZ {
6093 private:
6094         LDKCResult_InMemorySignerDecodeErrorZ self;
6095 public:
6096         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6097         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6098         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6099         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6100         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6101         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6102         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6103         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6104         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6105         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6106 };
6107 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
6108 private:
6109         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
6110 public:
6111         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
6112         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6113         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6114         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
6115         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
6116         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
6117         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
6118         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
6119         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
6120         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
6121 };
6122 class COption_ScalarZ {
6123 private:
6124         LDKCOption_ScalarZ self;
6125 public:
6126         COption_ScalarZ(const COption_ScalarZ&) = delete;
6127         COption_ScalarZ(COption_ScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScalarZ)); }
6128         COption_ScalarZ(LDKCOption_ScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScalarZ)); }
6129         operator LDKCOption_ScalarZ() && { LDKCOption_ScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_ScalarZ)); return res; }
6130         ~COption_ScalarZ() { COption_ScalarZ_free(self); }
6131         COption_ScalarZ& operator=(COption_ScalarZ&& o) { COption_ScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScalarZ)); return *this; }
6132         LDKCOption_ScalarZ* operator &() { return &self; }
6133         LDKCOption_ScalarZ* operator ->() { return &self; }
6134         const LDKCOption_ScalarZ* operator &() const { return &self; }
6135         const LDKCOption_ScalarZ* operator ->() const { return &self; }
6136 };
6137 class CResult_ChannelUpdateInfoDecodeErrorZ {
6138 private:
6139         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6140 public:
6141         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6142         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6143         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6144         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6145         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6146         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6147         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6148         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6149         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6150         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6151 };
6152 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6153 private:
6154         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6155 public:
6156         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6157         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6158         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6159         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6160         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6161         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6162         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6163         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6164         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6165         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6166 };
6167 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
6168 private:
6169         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
6170 public:
6171         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
6172         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6173         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6174         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
6175         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
6176         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; }
6177         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
6178         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
6179         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
6180         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
6181 };
6182 class CVec_TxOutZ {
6183 private:
6184         LDKCVec_TxOutZ self;
6185 public:
6186         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6187         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6188         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6189         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6190         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6191         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6192         LDKCVec_TxOutZ* operator &() { return &self; }
6193         LDKCVec_TxOutZ* operator ->() { return &self; }
6194         const LDKCVec_TxOutZ* operator &() const { return &self; }
6195         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6196 };
6197 class CVec_UpdateFailHTLCZ {
6198 private:
6199         LDKCVec_UpdateFailHTLCZ self;
6200 public:
6201         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
6202         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
6203         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
6204         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
6205         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
6206         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
6207         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
6208         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
6209         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
6210         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
6211 };
6212 class CVec_SpendableOutputDescriptorZ {
6213 private:
6214         LDKCVec_SpendableOutputDescriptorZ self;
6215 public:
6216         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
6217         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
6218         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
6219         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
6220         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
6221         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
6222         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
6223         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
6224         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
6225         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
6226 };
6227 class COption_C2Tuple_u64u64ZZ {
6228 private:
6229         LDKCOption_C2Tuple_u64u64ZZ self;
6230 public:
6231         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
6232         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
6233         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
6234         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
6235         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
6236         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; }
6237         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
6238         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
6239         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
6240         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
6241 };
6242 class CResult_ChannelAnnouncementDecodeErrorZ {
6243 private:
6244         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
6245 public:
6246         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
6247         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
6248         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
6249         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
6250         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
6251         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
6252         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
6253         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
6254         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
6255         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6256 };
6257 class CResult_OfferFeaturesDecodeErrorZ {
6258 private:
6259         LDKCResult_OfferFeaturesDecodeErrorZ self;
6260 public:
6261         CResult_OfferFeaturesDecodeErrorZ(const CResult_OfferFeaturesDecodeErrorZ&) = delete;
6262         CResult_OfferFeaturesDecodeErrorZ(CResult_OfferFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferFeaturesDecodeErrorZ)); }
6263         CResult_OfferFeaturesDecodeErrorZ(LDKCResult_OfferFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferFeaturesDecodeErrorZ)); }
6264         operator LDKCResult_OfferFeaturesDecodeErrorZ() && { LDKCResult_OfferFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferFeaturesDecodeErrorZ)); return res; }
6265         ~CResult_OfferFeaturesDecodeErrorZ() { CResult_OfferFeaturesDecodeErrorZ_free(self); }
6266         CResult_OfferFeaturesDecodeErrorZ& operator=(CResult_OfferFeaturesDecodeErrorZ&& o) { CResult_OfferFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferFeaturesDecodeErrorZ)); return *this; }
6267         LDKCResult_OfferFeaturesDecodeErrorZ* operator &() { return &self; }
6268         LDKCResult_OfferFeaturesDecodeErrorZ* operator ->() { return &self; }
6269         const LDKCResult_OfferFeaturesDecodeErrorZ* operator &() const { return &self; }
6270         const LDKCResult_OfferFeaturesDecodeErrorZ* operator ->() const { return &self; }
6271 };
6272 class C2Tuple_SignatureCVec_SignatureZZ {
6273 private:
6274         LDKC2Tuple_SignatureCVec_SignatureZZ self;
6275 public:
6276         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
6277         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
6278         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
6279         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
6280         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
6281         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; }
6282         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
6283         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
6284         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
6285         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
6286 };
6287 class CResult_HTLCUpdateDecodeErrorZ {
6288 private:
6289         LDKCResult_HTLCUpdateDecodeErrorZ self;
6290 public:
6291         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
6292         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
6293         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
6294         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
6295         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
6296         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
6297         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
6298         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
6299         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
6300         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
6301 };
6302 class CVec_OutPointZ {
6303 private:
6304         LDKCVec_OutPointZ self;
6305 public:
6306         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
6307         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
6308         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
6309         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
6310         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
6311         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
6312         LDKCVec_OutPointZ* operator &() { return &self; }
6313         LDKCVec_OutPointZ* operator ->() { return &self; }
6314         const LDKCVec_OutPointZ* operator &() const { return &self; }
6315         const LDKCVec_OutPointZ* operator ->() const { return &self; }
6316 };
6317 class COption_WriteableScoreZ {
6318 private:
6319         LDKCOption_WriteableScoreZ self;
6320 public:
6321         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
6322         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
6323         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
6324         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
6325         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
6326         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
6327         LDKCOption_WriteableScoreZ* operator &() { return &self; }
6328         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
6329         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
6330         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
6331 };
6332 class CResult_PositiveTimestampCreationErrorZ {
6333 private:
6334         LDKCResult_PositiveTimestampCreationErrorZ self;
6335 public:
6336         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
6337         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
6338         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
6339         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
6340         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
6341         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
6342         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
6343         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
6344         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
6345         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
6346 };
6347 class CResult_InvoiceFeaturesDecodeErrorZ {
6348 private:
6349         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
6350 public:
6351         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
6352         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
6353         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
6354         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
6355         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
6356         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
6357         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
6358         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
6359         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
6360         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
6361 };
6362 class CResult_ChannelMonitorUpdateDecodeErrorZ {
6363 private:
6364         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
6365 public:
6366         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
6367         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
6368         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
6369         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
6370         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
6371         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
6372         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
6373         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
6374         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
6375         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
6376 };
6377 class CResult_ReplyChannelRangeDecodeErrorZ {
6378 private:
6379         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
6380 public:
6381         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
6382         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
6383         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
6384         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
6385         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
6386         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
6387         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
6388         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
6389         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
6390         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
6391 };
6392 class CResult_TxOutAccessErrorZ {
6393 private:
6394         LDKCResult_TxOutAccessErrorZ self;
6395 public:
6396         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
6397         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
6398         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
6399         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
6400         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
6401         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
6402         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
6403         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
6404         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
6405         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
6406 };
6407 class CResult_TrustedClosingTransactionNoneZ {
6408 private:
6409         LDKCResult_TrustedClosingTransactionNoneZ self;
6410 public:
6411         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
6412         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
6413         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
6414         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
6415         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
6416         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
6417         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
6418         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
6419         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
6420         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
6421 };
6422 class CResult_NetAddressDecodeErrorZ {
6423 private:
6424         LDKCResult_NetAddressDecodeErrorZ self;
6425 public:
6426         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
6427         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
6428         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
6429         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
6430         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
6431         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
6432         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
6433         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
6434         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
6435         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
6436 };
6437 class C2Tuple_PublicKeyTypeZ {
6438 private:
6439         LDKC2Tuple_PublicKeyTypeZ self;
6440 public:
6441         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
6442         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
6443         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
6444         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
6445         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
6446         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
6447         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
6448         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
6449         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
6450         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
6451 };
6452 class CResult_ChannelReestablishDecodeErrorZ {
6453 private:
6454         LDKCResult_ChannelReestablishDecodeErrorZ self;
6455 public:
6456         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
6457         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
6458         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
6459         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
6460         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
6461         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
6462         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
6463         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
6464         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
6465         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
6466 };
6467 class CResult_OnionMessageDecodeErrorZ {
6468 private:
6469         LDKCResult_OnionMessageDecodeErrorZ self;
6470 public:
6471         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
6472         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
6473         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
6474         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
6475         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
6476         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
6477         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
6478         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
6479         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
6480         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
6481 };
6482 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
6483 private:
6484         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
6485 public:
6486         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
6487         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
6488         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
6489         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
6490         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
6491         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
6492         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
6493         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
6494         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
6495         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6496 };
6497 class CResult_InvoiceSignOrCreationErrorZ {
6498 private:
6499         LDKCResult_InvoiceSignOrCreationErrorZ self;
6500 public:
6501         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
6502         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
6503         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
6504         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
6505         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
6506         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
6507         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
6508         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
6509         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
6510         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
6511 };
6512 class CResult_InitFeaturesDecodeErrorZ {
6513 private:
6514         LDKCResult_InitFeaturesDecodeErrorZ self;
6515 public:
6516         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
6517         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
6518         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
6519         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
6520         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
6521         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
6522         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
6523         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
6524         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
6525         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
6526 };
6527 class CResult_PublicKeyNoneZ {
6528 private:
6529         LDKCResult_PublicKeyNoneZ self;
6530 public:
6531         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
6532         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
6533         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
6534         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
6535         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
6536         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
6537         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
6538         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
6539         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
6540         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
6541 };
6542 class CResult_PingDecodeErrorZ {
6543 private:
6544         LDKCResult_PingDecodeErrorZ self;
6545 public:
6546         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
6547         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
6548         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
6549         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
6550         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
6551         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
6552         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
6553         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
6554         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
6555         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
6556 };
6557 class CVec_TransactionOutputsZ {
6558 private:
6559         LDKCVec_TransactionOutputsZ self;
6560 public:
6561         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
6562         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
6563         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
6564         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
6565         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
6566         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
6567         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
6568         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
6569         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
6570         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
6571 };
6572 class COption_HTLCClaimZ {
6573 private:
6574         LDKCOption_HTLCClaimZ self;
6575 public:
6576         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
6577         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
6578         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
6579         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
6580         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
6581         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
6582         LDKCOption_HTLCClaimZ* operator &() { return &self; }
6583         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
6584         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
6585         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
6586 };
6587 class CVec_CVec_u8ZZ {
6588 private:
6589         LDKCVec_CVec_u8ZZ self;
6590 public:
6591         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
6592         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
6593         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
6594         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
6595         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
6596         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; }
6597         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
6598         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
6599         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
6600         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
6601 };
6602 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ {
6603 private:
6604         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ self;
6605 public:
6606         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(const CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&) = delete;
6607         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
6608         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
6609         operator LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return res; }
6610         ~CResult_COption_CustomOnionMessageContentsZDecodeErrorZ() { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); }
6611         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; }
6612         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
6613         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
6614         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
6615         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
6616 };
6617 class CResult_ShutdownScriptDecodeErrorZ {
6618 private:
6619         LDKCResult_ShutdownScriptDecodeErrorZ self;
6620 public:
6621         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
6622         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
6623         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
6624         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
6625         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
6626         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
6627         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
6628         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
6629         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
6630         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
6631 };
6632 class CResult_ProbabilisticScorerDecodeErrorZ {
6633 private:
6634         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
6635 public:
6636         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
6637         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
6638         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
6639         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
6640         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
6641         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
6642         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
6643         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
6644         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
6645         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
6646 };
6647 class CResult_TxCreationKeysDecodeErrorZ {
6648 private:
6649         LDKCResult_TxCreationKeysDecodeErrorZ self;
6650 public:
6651         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
6652         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
6653         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
6654         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
6655         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
6656         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
6657         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
6658         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
6659         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
6660         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
6661 };
6662 class C2Tuple_usizeTransactionZ {
6663 private:
6664         LDKC2Tuple_usizeTransactionZ self;
6665 public:
6666         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
6667         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
6668         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
6669         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
6670         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
6671         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
6672         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
6673         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
6674         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
6675         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
6676 };
6677 class CResult_NodeAnnouncementDecodeErrorZ {
6678 private:
6679         LDKCResult_NodeAnnouncementDecodeErrorZ self;
6680 public:
6681         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
6682         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
6683         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
6684         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
6685         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
6686         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
6687         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
6688         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
6689         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
6690         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6691 };
6692 class CResult_BlindedPathDecodeErrorZ {
6693 private:
6694         LDKCResult_BlindedPathDecodeErrorZ self;
6695 public:
6696         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
6697         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
6698         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
6699         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
6700         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
6701         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
6702         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
6703         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
6704         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
6705         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
6706 };
6707 class CVec_ChannelMonitorZ {
6708 private:
6709         LDKCVec_ChannelMonitorZ self;
6710 public:
6711         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
6712         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
6713         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
6714         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
6715         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
6716         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
6717         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
6718         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
6719         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
6720         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
6721 };
6722 class CResult_RouteHopDecodeErrorZ {
6723 private:
6724         LDKCResult_RouteHopDecodeErrorZ self;
6725 public:
6726         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
6727         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
6728         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
6729         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
6730         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
6731         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
6732         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
6733         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
6734         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
6735         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
6736 };
6737 class CVec_BalanceZ {
6738 private:
6739         LDKCVec_BalanceZ self;
6740 public:
6741         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
6742         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
6743         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
6744         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
6745         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
6746         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
6747         LDKCVec_BalanceZ* operator &() { return &self; }
6748         LDKCVec_BalanceZ* operator ->() { return &self; }
6749         const LDKCVec_BalanceZ* operator &() const { return &self; }
6750         const LDKCVec_BalanceZ* operator ->() const { return &self; }
6751 };
6752 class CResult_FundingSignedDecodeErrorZ {
6753 private:
6754         LDKCResult_FundingSignedDecodeErrorZ self;
6755 public:
6756         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
6757         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
6758         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
6759         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
6760         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
6761         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
6762         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
6763         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
6764         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
6765         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
6766 };
6767 class CResult_RecoverableSignatureNoneZ {
6768 private:
6769         LDKCResult_RecoverableSignatureNoneZ self;
6770 public:
6771         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
6772         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
6773         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
6774         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
6775         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
6776         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
6777         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
6778         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
6779         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
6780         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
6781 };
6782 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
6783 private:
6784         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
6785 public:
6786         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
6787         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
6788         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
6789         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
6790         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
6791         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; }
6792         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
6793         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
6794         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
6795         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
6796 };
6797 class CResult_NetworkGraphDecodeErrorZ {
6798 private:
6799         LDKCResult_NetworkGraphDecodeErrorZ self;
6800 public:
6801         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
6802         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
6803         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
6804         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
6805         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
6806         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
6807         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
6808         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
6809         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
6810         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
6811 };
6812 class CResult_NodeInfoDecodeErrorZ {
6813 private:
6814         LDKCResult_NodeInfoDecodeErrorZ self;
6815 public:
6816         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
6817         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
6818         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
6819         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
6820         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
6821         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
6822         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
6823         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
6824         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
6825         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
6826 };
6827 class CVec_NodeIdZ {
6828 private:
6829         LDKCVec_NodeIdZ self;
6830 public:
6831         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
6832         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
6833         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
6834         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
6835         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
6836         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
6837         LDKCVec_NodeIdZ* operator &() { return &self; }
6838         LDKCVec_NodeIdZ* operator ->() { return &self; }
6839         const LDKCVec_NodeIdZ* operator &() const { return &self; }
6840         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
6841 };
6842 class CResult_RouteLightningErrorZ {
6843 private:
6844         LDKCResult_RouteLightningErrorZ self;
6845 public:
6846         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
6847         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
6848         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
6849         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
6850         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
6851         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
6852         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
6853         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
6854         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
6855         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
6856 };
6857 class CResult_ChannelPublicKeysDecodeErrorZ {
6858 private:
6859         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
6860 public:
6861         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
6862         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
6863         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
6864         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
6865         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
6866         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
6867         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
6868         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
6869         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
6870         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
6871 };
6872 class CVec_u8Z {
6873 private:
6874         LDKCVec_u8Z self;
6875 public:
6876         CVec_u8Z(const CVec_u8Z&) = delete;
6877         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
6878         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
6879         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
6880         ~CVec_u8Z() { CVec_u8Z_free(self); }
6881         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
6882         LDKCVec_u8Z* operator &() { return &self; }
6883         LDKCVec_u8Z* operator ->() { return &self; }
6884         const LDKCVec_u8Z* operator &() const { return &self; }
6885         const LDKCVec_u8Z* operator ->() const { return &self; }
6886 };
6887 class CResult_NonePaymentSendFailureZ {
6888 private:
6889         LDKCResult_NonePaymentSendFailureZ self;
6890 public:
6891         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
6892         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
6893         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
6894         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
6895         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
6896         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
6897         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
6898         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
6899         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
6900         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
6901 };
6902 class CResult_HolderCommitmentTransactionDecodeErrorZ {
6903 private:
6904         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
6905 public:
6906         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
6907         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
6908         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
6909         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
6910         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
6911         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
6912         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6913         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6914         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6915         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6916 };
6917 class CResult_WarningMessageDecodeErrorZ {
6918 private:
6919         LDKCResult_WarningMessageDecodeErrorZ self;
6920 public:
6921         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
6922         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
6923         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
6924         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
6925         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
6926         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
6927         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
6928         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
6929         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
6930         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
6931 };
6932 class CResult_ChannelCounterpartyDecodeErrorZ {
6933 private:
6934         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
6935 public:
6936         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
6937         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
6938         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
6939         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
6940         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
6941         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
6942         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
6943         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
6944         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
6945         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
6946 };
6947 class CResult_SignatureNoneZ {
6948 private:
6949         LDKCResult_SignatureNoneZ self;
6950 public:
6951         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
6952         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
6953         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
6954         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
6955         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
6956         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
6957         LDKCResult_SignatureNoneZ* operator &() { return &self; }
6958         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
6959         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
6960         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
6961 };
6962 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
6963 private:
6964         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
6965 public:
6966         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
6967         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
6968         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
6969         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
6970         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
6971         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; }
6972         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
6973         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
6974         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
6975         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
6976 };
6977 class CResult_SecretKeyNoneZ {
6978 private:
6979         LDKCResult_SecretKeyNoneZ self;
6980 public:
6981         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
6982         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
6983         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
6984         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
6985         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
6986         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
6987         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
6988         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
6989         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
6990         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
6991 };
6992 class CResult_InitDecodeErrorZ {
6993 private:
6994         LDKCResult_InitDecodeErrorZ self;
6995 public:
6996         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
6997         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
6998         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
6999         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
7000         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
7001         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
7002         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
7003         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
7004         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
7005         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
7006 };
7007 class CVec_MonitorUpdateIdZ {
7008 private:
7009         LDKCVec_MonitorUpdateIdZ self;
7010 public:
7011         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
7012         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
7013         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
7014         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
7015         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
7016         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
7017         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
7018         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
7019         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
7020         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
7021 };
7022 class CResult_PaymentPurposeDecodeErrorZ {
7023 private:
7024         LDKCResult_PaymentPurposeDecodeErrorZ self;
7025 public:
7026         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
7027         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
7028         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
7029         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
7030         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
7031         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
7032         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
7033         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
7034         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
7035         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
7036 };
7037 class CResult_OutPointDecodeErrorZ {
7038 private:
7039         LDKCResult_OutPointDecodeErrorZ self;
7040 public:
7041         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
7042         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
7043         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
7044         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
7045         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
7046         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
7047         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
7048         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
7049         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
7050         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
7051 };
7052 class CVec_ChannelDetailsZ {
7053 private:
7054         LDKCVec_ChannelDetailsZ self;
7055 public:
7056         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
7057         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
7058         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
7059         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
7060         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
7061         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
7062         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
7063         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
7064         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
7065         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
7066 };
7067 class CVec_MessageSendEventZ {
7068 private:
7069         LDKCVec_MessageSendEventZ self;
7070 public:
7071         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
7072         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
7073         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
7074         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
7075         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
7076         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
7077         LDKCVec_MessageSendEventZ* operator &() { return &self; }
7078         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
7079         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
7080         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
7081 };
7082 class COption_NetAddressZ {
7083 private:
7084         LDKCOption_NetAddressZ self;
7085 public:
7086         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
7087         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
7088         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
7089         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
7090         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
7091         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
7092         LDKCOption_NetAddressZ* operator &() { return &self; }
7093         LDKCOption_NetAddressZ* operator ->() { return &self; }
7094         const LDKCOption_NetAddressZ* operator &() const { return &self; }
7095         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
7096 };
7097 class C2Tuple_OutPointScriptZ {
7098 private:
7099         LDKC2Tuple_OutPointScriptZ self;
7100 public:
7101         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
7102         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
7103         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
7104         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
7105         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
7106         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
7107         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
7108         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
7109         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
7110         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
7111 };
7112 class CResult_RouteHintHopDecodeErrorZ {
7113 private:
7114         LDKCResult_RouteHintHopDecodeErrorZ self;
7115 public:
7116         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
7117         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
7118         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
7119         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
7120         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
7121         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
7122         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
7123         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
7124         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
7125         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
7126 };
7127 class CResult_C2Tuple_SignatureSignatureZNoneZ {
7128 private:
7129         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
7130 public:
7131         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
7132         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
7133         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
7134         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
7135         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
7136         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; }
7137         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
7138         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
7139         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
7140         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
7141 };
7142 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
7143 private:
7144         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
7145 public:
7146         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
7147         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7148         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7149         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
7150         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
7151         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
7152         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
7153         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
7154         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
7155         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
7156 };
7157 class CResult_SharedSecretNoneZ {
7158 private:
7159         LDKCResult_SharedSecretNoneZ self;
7160 public:
7161         CResult_SharedSecretNoneZ(const CResult_SharedSecretNoneZ&) = delete;
7162         CResult_SharedSecretNoneZ(CResult_SharedSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); }
7163         CResult_SharedSecretNoneZ(LDKCResult_SharedSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); }
7164         operator LDKCResult_SharedSecretNoneZ() && { LDKCResult_SharedSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); return res; }
7165         ~CResult_SharedSecretNoneZ() { CResult_SharedSecretNoneZ_free(self); }
7166         CResult_SharedSecretNoneZ& operator=(CResult_SharedSecretNoneZ&& o) { CResult_SharedSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); return *this; }
7167         LDKCResult_SharedSecretNoneZ* operator &() { return &self; }
7168         LDKCResult_SharedSecretNoneZ* operator ->() { return &self; }
7169         const LDKCResult_SharedSecretNoneZ* operator &() const { return &self; }
7170         const LDKCResult_SharedSecretNoneZ* operator ->() const { return &self; }
7171 };
7172 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
7173 private:
7174         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
7175 public:
7176         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
7177         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7178         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7179         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
7180         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
7181         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; }
7182         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
7183         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
7184         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
7185         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
7186 };
7187 class CResult_CVec_CVec_u8ZZNoneZ {
7188 private:
7189         LDKCResult_CVec_CVec_u8ZZNoneZ self;
7190 public:
7191         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
7192         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
7193         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
7194         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
7195         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
7196         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; }
7197         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
7198         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
7199         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
7200         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
7201 };
7202 class C2Tuple_PaymentHashPaymentSecretZ {
7203 private:
7204         LDKC2Tuple_PaymentHashPaymentSecretZ self;
7205 public:
7206         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
7207         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
7208         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
7209         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
7210         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
7211         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
7212         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
7213         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
7214         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
7215         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
7216 };
7217 class CResult_AcceptChannelDecodeErrorZ {
7218 private:
7219         LDKCResult_AcceptChannelDecodeErrorZ self;
7220 public:
7221         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
7222         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
7223         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
7224         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
7225         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
7226         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
7227         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
7228         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
7229         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
7230         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
7231 };
7232 class CVec_SignatureZ {
7233 private:
7234         LDKCVec_SignatureZ self;
7235 public:
7236         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
7237         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
7238         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
7239         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
7240         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
7241         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
7242         LDKCVec_SignatureZ* operator &() { return &self; }
7243         LDKCVec_SignatureZ* operator ->() { return &self; }
7244         const LDKCVec_SignatureZ* operator &() const { return &self; }
7245         const LDKCVec_SignatureZ* operator ->() const { return &self; }
7246 };
7247 class CVec_u64Z {
7248 private:
7249         LDKCVec_u64Z self;
7250 public:
7251         CVec_u64Z(const CVec_u64Z&) = delete;
7252         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
7253         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
7254         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
7255         ~CVec_u64Z() { CVec_u64Z_free(self); }
7256         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
7257         LDKCVec_u64Z* operator &() { return &self; }
7258         LDKCVec_u64Z* operator ->() { return &self; }
7259         const LDKCVec_u64Z* operator &() const { return &self; }
7260         const LDKCVec_u64Z* operator ->() const { return &self; }
7261 };
7262 class CResult_StringErrorZ {
7263 private:
7264         LDKCResult_StringErrorZ self;
7265 public:
7266         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
7267         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
7268         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
7269         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
7270         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
7271         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
7272         LDKCResult_StringErrorZ* operator &() { return &self; }
7273         LDKCResult_StringErrorZ* operator ->() { return &self; }
7274         const LDKCResult_StringErrorZ* operator &() const { return &self; }
7275         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
7276 };
7277 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
7278 private:
7279         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
7280 public:
7281         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
7282         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7283         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7284         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
7285         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
7286         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; }
7287         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
7288         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
7289         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
7290         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
7291 };
7292 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
7293 private:
7294         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
7295 public:
7296         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
7297         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7298         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7299         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
7300         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
7301         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; }
7302         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
7303         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
7304         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
7305         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
7306 };
7307 class COption_EventZ {
7308 private:
7309         LDKCOption_EventZ self;
7310 public:
7311         COption_EventZ(const COption_EventZ&) = delete;
7312         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
7313         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
7314         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
7315         ~COption_EventZ() { COption_EventZ_free(self); }
7316         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
7317         LDKCOption_EventZ* operator &() { return &self; }
7318         LDKCOption_EventZ* operator ->() { return &self; }
7319         const LDKCOption_EventZ* operator &() const { return &self; }
7320         const LDKCOption_EventZ* operator ->() const { return &self; }
7321 };
7322 class CResult_ChannelTypeFeaturesDecodeErrorZ {
7323 private:
7324         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
7325 public:
7326         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
7327         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
7328         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
7329         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
7330         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
7331         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
7332         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
7333         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
7334         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
7335         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
7336 };
7337 class CVec_RouteHintZ {
7338 private:
7339         LDKCVec_RouteHintZ self;
7340 public:
7341         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
7342         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
7343         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
7344         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
7345         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
7346         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
7347         LDKCVec_RouteHintZ* operator &() { return &self; }
7348         LDKCVec_RouteHintZ* operator ->() { return &self; }
7349         const LDKCVec_RouteHintZ* operator &() const { return &self; }
7350         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
7351 };
7352 class COption_u16Z {
7353 private:
7354         LDKCOption_u16Z self;
7355 public:
7356         COption_u16Z(const COption_u16Z&) = delete;
7357         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
7358         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
7359         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
7360         ~COption_u16Z() { COption_u16Z_free(self); }
7361         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
7362         LDKCOption_u16Z* operator &() { return &self; }
7363         LDKCOption_u16Z* operator ->() { return &self; }
7364         const LDKCOption_u16Z* operator &() const { return &self; }
7365         const LDKCOption_u16Z* operator ->() const { return &self; }
7366 };
7367 class CVec_CVec_RouteHopZZ {
7368 private:
7369         LDKCVec_CVec_RouteHopZZ self;
7370 public:
7371         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
7372         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
7373         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
7374         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
7375         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
7376         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; }
7377         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
7378         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
7379         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
7380         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
7381 };
7382 class CVec_C2Tuple_PublicKeyTypeZZ {
7383 private:
7384         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
7385 public:
7386         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
7387         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
7388         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
7389         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
7390         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
7391         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; }
7392         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
7393         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
7394         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
7395         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
7396 };
7397 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
7398 private:
7399         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
7400 public:
7401         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
7402         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
7403         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
7404         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
7405         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
7406         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; }
7407         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
7408         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
7409         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
7410         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
7411 };
7412 class CResult_u32GraphSyncErrorZ {
7413 private:
7414         LDKCResult_u32GraphSyncErrorZ self;
7415 public:
7416         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
7417         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
7418         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
7419         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
7420         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
7421         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
7422         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
7423         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
7424         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
7425         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
7426 };
7427 class CResult_InvoiceRequestFeaturesDecodeErrorZ {
7428 private:
7429         LDKCResult_InvoiceRequestFeaturesDecodeErrorZ self;
7430 public:
7431         CResult_InvoiceRequestFeaturesDecodeErrorZ(const CResult_InvoiceRequestFeaturesDecodeErrorZ&) = delete;
7432         CResult_InvoiceRequestFeaturesDecodeErrorZ(CResult_InvoiceRequestFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestFeaturesDecodeErrorZ)); }
7433         CResult_InvoiceRequestFeaturesDecodeErrorZ(LDKCResult_InvoiceRequestFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestFeaturesDecodeErrorZ)); }
7434         operator LDKCResult_InvoiceRequestFeaturesDecodeErrorZ() && { LDKCResult_InvoiceRequestFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestFeaturesDecodeErrorZ)); return res; }
7435         ~CResult_InvoiceRequestFeaturesDecodeErrorZ() { CResult_InvoiceRequestFeaturesDecodeErrorZ_free(self); }
7436         CResult_InvoiceRequestFeaturesDecodeErrorZ& operator=(CResult_InvoiceRequestFeaturesDecodeErrorZ&& o) { CResult_InvoiceRequestFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestFeaturesDecodeErrorZ)); return *this; }
7437         LDKCResult_InvoiceRequestFeaturesDecodeErrorZ* operator &() { return &self; }
7438         LDKCResult_InvoiceRequestFeaturesDecodeErrorZ* operator ->() { return &self; }
7439         const LDKCResult_InvoiceRequestFeaturesDecodeErrorZ* operator &() const { return &self; }
7440         const LDKCResult_InvoiceRequestFeaturesDecodeErrorZ* operator ->() const { return &self; }
7441 };
7442 class CVec_PhantomRouteHintsZ {
7443 private:
7444         LDKCVec_PhantomRouteHintsZ self;
7445 public:
7446         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
7447         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
7448         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
7449         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
7450         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
7451         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
7452         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
7453         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
7454         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
7455         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
7456 };
7457 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
7458 private:
7459         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
7460 public:
7461         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
7462         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
7463         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
7464         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
7465         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
7466         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
7467         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
7468         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
7469         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
7470         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
7471 };
7472 class CResult_NoneAPIErrorZ {
7473 private:
7474         LDKCResult_NoneAPIErrorZ self;
7475 public:
7476         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
7477         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
7478         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
7479         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
7480         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
7481         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
7482         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
7483         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
7484         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
7485         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
7486 };
7487 class CVec_NetAddressZ {
7488 private:
7489         LDKCVec_NetAddressZ self;
7490 public:
7491         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
7492         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
7493         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
7494         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
7495         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
7496         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
7497         LDKCVec_NetAddressZ* operator &() { return &self; }
7498         LDKCVec_NetAddressZ* operator ->() { return &self; }
7499         const LDKCVec_NetAddressZ* operator &() const { return &self; }
7500         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
7501 };
7502 class CResult_ChannelDetailsDecodeErrorZ {
7503 private:
7504         LDKCResult_ChannelDetailsDecodeErrorZ self;
7505 public:
7506         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
7507         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
7508         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
7509         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
7510         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
7511         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
7512         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
7513         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
7514         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
7515         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
7516 };
7517 class CVec_PublicKeyZ {
7518 private:
7519         LDKCVec_PublicKeyZ self;
7520 public:
7521         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
7522         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
7523         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
7524         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
7525         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
7526         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
7527         LDKCVec_PublicKeyZ* operator &() { return &self; }
7528         LDKCVec_PublicKeyZ* operator ->() { return &self; }
7529         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
7530         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
7531 };
7532 class CVec_C2Tuple_usizeTransactionZZ {
7533 private:
7534         LDKCVec_C2Tuple_usizeTransactionZZ self;
7535 public:
7536         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
7537         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
7538         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
7539         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
7540         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
7541         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; }
7542         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
7543         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
7544         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
7545         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
7546 };
7547 class C2Tuple_u64u64Z {
7548 private:
7549         LDKC2Tuple_u64u64Z self;
7550 public:
7551         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
7552         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
7553         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
7554         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
7555         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
7556         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
7557         LDKC2Tuple_u64u64Z* operator &() { return &self; }
7558         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
7559         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
7560         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
7561 };
7562 class C2Tuple_u32TxOutZ {
7563 private:
7564         LDKC2Tuple_u32TxOutZ self;
7565 public:
7566         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
7567         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
7568         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
7569         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
7570         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
7571         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
7572         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
7573         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
7574         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
7575         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
7576 };
7577 class CResult_PaymentSecretNoneZ {
7578 private:
7579         LDKCResult_PaymentSecretNoneZ self;
7580 public:
7581         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
7582         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
7583         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
7584         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
7585         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
7586         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
7587         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
7588         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
7589         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
7590         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
7591 };
7592 class CResult_ChannelConfigDecodeErrorZ {
7593 private:
7594         LDKCResult_ChannelConfigDecodeErrorZ self;
7595 public:
7596         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
7597         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
7598         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
7599         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
7600         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
7601         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
7602         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
7603         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
7604         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
7605         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
7606 };
7607 class CVec_PrivateRouteZ {
7608 private:
7609         LDKCVec_PrivateRouteZ self;
7610 public:
7611         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
7612         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
7613         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
7614         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
7615         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
7616         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
7617         LDKCVec_PrivateRouteZ* operator &() { return &self; }
7618         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
7619         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
7620         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
7621 };
7622 class CResult_BlindedPathNoneZ {
7623 private:
7624         LDKCResult_BlindedPathNoneZ self;
7625 public:
7626         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
7627         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
7628         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
7629         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
7630         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
7631         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
7632         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
7633         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
7634         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
7635         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
7636 };
7637 class CResult_ShutdownDecodeErrorZ {
7638 private:
7639         LDKCResult_ShutdownDecodeErrorZ self;
7640 public:
7641         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
7642         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
7643         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
7644         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
7645         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
7646         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
7647         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
7648         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
7649         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
7650         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
7651 };
7652 class CVec_MonitorEventZ {
7653 private:
7654         LDKCVec_MonitorEventZ self;
7655 public:
7656         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
7657         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
7658         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
7659         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
7660         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
7661         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
7662         LDKCVec_MonitorEventZ* operator &() { return &self; }
7663         LDKCVec_MonitorEventZ* operator ->() { return &self; }
7664         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
7665         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
7666 };
7667 class CVec_PaymentPreimageZ {
7668 private:
7669         LDKCVec_PaymentPreimageZ self;
7670 public:
7671         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
7672         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
7673         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
7674         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
7675         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
7676         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
7677         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
7678         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
7679         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
7680         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
7681 };
7682 class CResult_PublicKeyErrorZ {
7683 private:
7684         LDKCResult_PublicKeyErrorZ self;
7685 public:
7686         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
7687         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
7688         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
7689         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
7690         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
7691         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
7692         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
7693         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
7694         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
7695         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
7696 };
7697 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
7698 private:
7699         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
7700 public:
7701         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
7702         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7703         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7704         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
7705         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
7706         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; }
7707         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
7708         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
7709         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
7710         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
7711 };
7712 class CResult_NoneNoneZ {
7713 private:
7714         LDKCResult_NoneNoneZ self;
7715 public:
7716         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
7717         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
7718         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
7719         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
7720         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
7721         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
7722         LDKCResult_NoneNoneZ* operator &() { return &self; }
7723         LDKCResult_NoneNoneZ* operator ->() { return &self; }
7724         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
7725         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
7726 };
7727 class COption_ClosureReasonZ {
7728 private:
7729         LDKCOption_ClosureReasonZ self;
7730 public:
7731         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
7732         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
7733         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
7734         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
7735         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
7736         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
7737         LDKCOption_ClosureReasonZ* operator &() { return &self; }
7738         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
7739         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
7740         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
7741 };
7742 class COption_u128Z {
7743 private:
7744         LDKCOption_u128Z self;
7745 public:
7746         COption_u128Z(const COption_u128Z&) = delete;
7747         COption_u128Z(COption_u128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u128Z)); }
7748         COption_u128Z(LDKCOption_u128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u128Z)); }
7749         operator LDKCOption_u128Z() && { LDKCOption_u128Z res = self; memset(&self, 0, sizeof(LDKCOption_u128Z)); return res; }
7750         ~COption_u128Z() { COption_u128Z_free(self); }
7751         COption_u128Z& operator=(COption_u128Z&& o) { COption_u128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u128Z)); return *this; }
7752         LDKCOption_u128Z* operator &() { return &self; }
7753         LDKCOption_u128Z* operator ->() { return &self; }
7754         const LDKCOption_u128Z* operator &() const { return &self; }
7755         const LDKCOption_u128Z* operator ->() const { return &self; }
7756 };
7757 class CVec_APIErrorZ {
7758 private:
7759         LDKCVec_APIErrorZ self;
7760 public:
7761         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
7762         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
7763         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
7764         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
7765         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
7766         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
7767         LDKCVec_APIErrorZ* operator &() { return &self; }
7768         LDKCVec_APIErrorZ* operator ->() { return &self; }
7769         const LDKCVec_APIErrorZ* operator &() const { return &self; }
7770         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
7771 };
7772 class CResult_boolPeerHandleErrorZ {
7773 private:
7774         LDKCResult_boolPeerHandleErrorZ self;
7775 public:
7776         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
7777         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
7778         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
7779         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
7780         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
7781         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
7782         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
7783         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
7784         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
7785         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
7786 };
7787 class CResult_ChannelUpdateDecodeErrorZ {
7788 private:
7789         LDKCResult_ChannelUpdateDecodeErrorZ self;
7790 public:
7791         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
7792         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
7793         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
7794         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
7795         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
7796         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
7797         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
7798         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
7799         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
7800         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
7801 };
7802 class CResult_PaymentSecretAPIErrorZ {
7803 private:
7804         LDKCResult_PaymentSecretAPIErrorZ self;
7805 public:
7806         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
7807         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
7808         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
7809         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
7810         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
7811         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
7812         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
7813         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
7814         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
7815         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
7816 };
7817 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
7818 private:
7819         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
7820 public:
7821         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
7822         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
7823         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
7824         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
7825         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
7826         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
7827         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
7828         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
7829         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
7830         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
7831 };
7832 class C2Tuple_u32ScriptZ {
7833 private:
7834         LDKC2Tuple_u32ScriptZ self;
7835 public:
7836         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
7837         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
7838         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
7839         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
7840         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
7841         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
7842         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
7843         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
7844         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
7845         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
7846 };
7847 class CResult_SignedRawInvoiceParseErrorZ {
7848 private:
7849         LDKCResult_SignedRawInvoiceParseErrorZ self;
7850 public:
7851         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
7852         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
7853         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
7854         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
7855         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
7856         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
7857         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
7858         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
7859         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
7860         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
7861 };
7862 class CResult_RouteDecodeErrorZ {
7863 private:
7864         LDKCResult_RouteDecodeErrorZ self;
7865 public:
7866         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
7867         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
7868         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
7869         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
7870         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
7871         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
7872         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
7873         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
7874         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
7875         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
7876 };
7877 class COption_NoneZ {
7878 private:
7879         LDKCOption_NoneZ self;
7880 public:
7881         COption_NoneZ(const COption_NoneZ&) = delete;
7882         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
7883         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
7884         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
7885         ~COption_NoneZ() { COption_NoneZ_free(self); }
7886         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
7887         LDKCOption_NoneZ* operator &() { return &self; }
7888         LDKCOption_NoneZ* operator ->() { return &self; }
7889         const LDKCOption_NoneZ* operator &() const { return &self; }
7890         const LDKCOption_NoneZ* operator ->() const { return &self; }
7891 };
7892
7893 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs) {
7894         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
7895         return ret;
7896 }
7897 inline LDK::CResult_RouteLightningErrorZ Router::find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id) {
7898         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
7899         return ret;
7900 }
7901 inline void Router::notify_payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7902         (self.notify_payment_path_failed)(self.this_arg, path, short_channel_id);
7903 }
7904 inline void Router::notify_payment_path_successful(struct LDKCVec_RouteHopZ path) {
7905         (self.notify_payment_path_successful)(self.this_arg, path);
7906 }
7907 inline void Router::notify_payment_probe_successful(struct LDKCVec_RouteHopZ path) {
7908         (self.notify_payment_probe_successful)(self.this_arg, path);
7909 }
7910 inline void Router::notify_payment_probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7911         (self.notify_payment_probe_failed)(self.this_arg, path, short_channel_id);
7912 }
7913 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
7914         (self.broadcast_transaction)(self.this_arg, tx);
7915 }
7916 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
7917         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
7918         return ret;
7919 }
7920 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
7921         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
7922         return ret;
7923 }
7924 inline LDK::OnionMessage OnionMessageProvider::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
7925         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
7926         return ret;
7927 }
7928 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
7929         (self.process_pending_events)(self.this_arg, handler);
7930 }
7931 inline void EventHandler::handle_event(struct LDKEvent event) {
7932         (self.handle_event)(self.this_arg, event);
7933 }
7934 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
7935         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
7936         return ret;
7937 }
7938 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7939         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
7940 }
7941 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
7942         (self.block_connected)(self.this_arg, block, height);
7943 }
7944 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
7945         (self.block_disconnected)(self.this_arg, header, height);
7946 }
7947 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7948         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
7949 }
7950 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
7951         (self.transaction_unconfirmed)(self.this_arg, txid);
7952 }
7953 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
7954         (self.best_block_updated)(self.this_arg, header, height);
7955 }
7956 inline LDK::CVec_C2Tuple_TxidBlockHashZZ Confirm::get_relevant_txids() {
7957         LDK::CVec_C2Tuple_TxidBlockHashZZ ret = (self.get_relevant_txids)(self.this_arg);
7958         return ret;
7959 }
7960 inline LDK::ChannelMonitorUpdateStatus Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
7961         LDK::ChannelMonitorUpdateStatus ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
7962         return ret;
7963 }
7964 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
7965         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
7966         return ret;
7967 }
7968 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
7969         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
7970         return ret;
7971 }
7972 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
7973         (self.register_tx)(self.this_arg, txid, script_pubkey);
7974 }
7975 inline void Filter::register_output(struct LDKWatchedOutput output) {
7976         (self.register_output)(self.this_arg, output);
7977 }
7978 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) {
7979         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
7980         return ret;
7981 }
7982 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7983         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
7984 }
7985 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
7986         (self.payment_path_successful)(self.this_arg, path);
7987 }
7988 inline void Score::probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7989         (self.probe_failed)(self.this_arg, path, short_channel_id);
7990 }
7991 inline void Score::probe_successful(struct LDKCVec_RouteHopZ path) {
7992         (self.probe_successful)(self.this_arg, path);
7993 }
7994 inline LDK::Score LockableScore::lock() {
7995         LDK::Score ret = (self.lock)(self.this_arg);
7996         return ret;
7997 }
7998 inline uint64_t CustomOnionMessageContents::tlv_type() {
7999         uint64_t ret = (self.tlv_type)(self.this_arg);
8000         return ret;
8001 }
8002 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
8003         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
8004         return ret;
8005 }
8006 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
8007         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
8008         return ret;
8009 }
8010 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8011         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
8012         return ret;
8013 }
8014 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
8015         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
8016         return ret;
8017 }
8018 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8019         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
8020         return ret;
8021 }
8022 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
8023         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
8024         return ret;
8025 }
8026 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
8027         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
8028         return ret;
8029 }
8030 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]) {
8031         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
8032         return ret;
8033 }
8034 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) {
8035         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
8036         return ret;
8037 }
8038 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) {
8039         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
8040         return ret;
8041 }
8042 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
8043         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
8044         return ret;
8045 }
8046 inline LDK::CResult_SignatureNoneZ BaseSign::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
8047         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
8048         return ret;
8049 }
8050 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
8051         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
8052         return ret;
8053 }
8054 inline void BaseSign::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
8055         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
8056 }
8057 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
8058         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
8059         return ret;
8060 }
8061 inline LDK::CResult_PublicKeyNoneZ KeysInterface::get_node_id(enum LDKRecipient recipient) {
8062         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
8063         return ret;
8064 }
8065 inline LDK::CResult_SharedSecretNoneZ KeysInterface::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak) {
8066         LDK::CResult_SharedSecretNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
8067         return ret;
8068 }
8069 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
8070         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
8071         return ret;
8072 }
8073 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
8074         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
8075         return ret;
8076 }
8077 inline LDKThirtyTwoBytes KeysInterface::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
8078         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
8079         return ret;
8080 }
8081 inline LDK::Sign KeysInterface::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
8082         LDK::Sign ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
8083         return ret;
8084 }
8085 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
8086         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
8087         return ret;
8088 }
8089 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
8090         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
8091         return ret;
8092 }
8093 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient receipient) {
8094         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
8095         return ret;
8096 }
8097 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
8098         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
8099         return ret;
8100 }
8101 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
8102         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
8103         return ret;
8104 }
8105 inline uint16_t Type::type_id() {
8106         uint16_t ret = (self.type_id)(self.this_arg);
8107         return ret;
8108 }
8109 inline LDK::Str Type::debug_str() {
8110         LDK::Str ret = (self.debug_str)(self.this_arg);
8111         return ret;
8112 }
8113 inline LDKPublicKey Payer::node_id() {
8114         LDKPublicKey ret = (self.node_id)(self.this_arg);
8115         return ret;
8116 }
8117 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
8118         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
8119         return ret;
8120 }
8121 inline LDK::CResult_NonePaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKThirtyTwoBytes payment_id) {
8122         LDK::CResult_NonePaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret, payment_id);
8123         return ret;
8124 }
8125 inline LDK::CResult_NonePaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_id) {
8126         LDK::CResult_NonePaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage, payment_id);
8127         return ret;
8128 }
8129 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
8130         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
8131         return ret;
8132 }
8133 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
8134         (self.abandon_payment)(self.this_arg, payment_id);
8135 }
8136 inline LDK::InFlightHtlcs Payer::inflight_htlcs() {
8137         LDK::InFlightHtlcs ret = (self.inflight_htlcs)(self.this_arg);
8138         return ret;
8139 }
8140 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
8141         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
8142         return ret;
8143 }
8144 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
8145         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
8146         return ret;
8147 }
8148 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
8149         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
8150         return ret;
8151 }
8152 inline void SocketDescriptor::disconnect_socket() {
8153         (self.disconnect_socket)(self.this_arg);
8154 }
8155 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
8156         bool ret = (self.eq)(self.this_arg, other_arg);
8157         return ret;
8158 }
8159 inline uint64_t SocketDescriptor::hash() {
8160         uint64_t ret = (self.hash)(self.this_arg);
8161         return ret;
8162 }
8163 inline void CustomOnionMessageHandler::handle_custom_message(struct LDKCustomOnionMessageContents msg) {
8164         (self.handle_custom_message)(self.this_arg, msg);
8165 }
8166 inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
8167         LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
8168         return ret;
8169 }
8170 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
8171         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
8172         return ret;
8173 }
8174 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
8175         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
8176         return ret;
8177 }
8178 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
8179         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
8180         return ret;
8181 }
8182 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
8183         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
8184 }
8185 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
8186         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
8187 }
8188 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
8189         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
8190 }
8191 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
8192         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
8193 }
8194 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
8195         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
8196 }
8197 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
8198         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
8199 }
8200 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
8201         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
8202 }
8203 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
8204         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
8205 }
8206 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
8207         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
8208 }
8209 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
8210         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
8211 }
8212 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
8213         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
8214 }
8215 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
8216         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
8217 }
8218 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
8219         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
8220 }
8221 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
8222         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
8223 }
8224 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
8225         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
8226 }
8227 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
8228         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
8229 }
8230 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
8231         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg);
8232         return ret;
8233 }
8234 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
8235         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
8236 }
8237 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
8238         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
8239 }
8240 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
8241         (self.handle_error)(self.this_arg, their_node_id, msg);
8242 }
8243 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
8244         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8245         return ret;
8246 }
8247 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8248         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8249         return ret;
8250 }
8251 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
8252         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
8253         return ret;
8254 }
8255 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
8256         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
8257         return ret;
8258 }
8259 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
8260         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
8261         return ret;
8262 }
8263 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
8264         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
8265         return ret;
8266 }
8267 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKPublicKey starting_point) {
8268         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
8269         return ret;
8270 }
8271 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
8272         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init);
8273         return ret;
8274 }
8275 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
8276         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
8277         return ret;
8278 }
8279 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
8280         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
8281         return ret;
8282 }
8283 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
8284         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
8285         return ret;
8286 }
8287 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
8288         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
8289         return ret;
8290 }
8291 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
8292         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8293         return ret;
8294 }
8295 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8296         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8297         return ret;
8298 }
8299 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
8300         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
8301 }
8302 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
8303         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init);
8304         return ret;
8305 }
8306 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
8307         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
8308 }
8309 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
8310         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8311         return ret;
8312 }
8313 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8314         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8315         return ret;
8316 }
8317 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
8318         (self.log)(self.this_arg, record);
8319 }
8320 inline void FutureCallback::call() {
8321         (self.call)(self.this_arg);
8322 }
8323 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
8324         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
8325         return ret;
8326 }
8327 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) {
8328         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
8329         return ret;
8330 }
8331 }