Update auto-generated bindings for LDK 0.0.115
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class Refund;
6 class Retry;
7 class RetryableSendFailure;
8 class PaymentSendFailure;
9 class RecipientOnionFields;
10 class HTLCClaim;
11 class CounterpartyCommitmentSecrets;
12 class TxCreationKeys;
13 class ChannelPublicKeys;
14 class HTLCOutputInCommitment;
15 class ChannelTransactionParameters;
16 class CounterpartyChannelTransactionParameters;
17 class DirectedChannelTransactionParameters;
18 class HolderCommitmentTransaction;
19 class BuiltCommitmentTransaction;
20 class ClosingTransaction;
21 class TrustedClosingTransaction;
22 class CommitmentTransaction;
23 class TrustedCommitmentTransaction;
24 class ShutdownScript;
25 class InvalidShutdownScript;
26 class UnsignedInvoice;
27 class BlindedPayInfo;
28 class BackgroundProcessor;
29 class GossipSync;
30 class DefaultRouter;
31 class Router;
32 class ScorerAccountingForInFlightHtlcs;
33 class InFlightHtlcs;
34 class RouteHop;
35 class BlindedTail;
36 class Path;
37 class Route;
38 class RouteParameters;
39 class PaymentParameters;
40 class Hints;
41 class RouteHint;
42 class RouteHintHop;
43 class BroadcasterInterface;
44 class ConfirmationTarget;
45 class FeeEstimator;
46 class BestBlock;
47 class Listen;
48 class Confirm;
49 class ChannelMonitorUpdateStatus;
50 class Watch;
51 class Filter;
52 class WatchedOutput;
53 class Score;
54 class LockableScore;
55 class WriteableScore;
56 class MultiThreadedLockableScore;
57 class MultiThreadedScoreLock;
58 class ChannelUsage;
59 class FixedPenaltyScorer;
60 class ProbabilisticScorer;
61 class ProbabilisticScoringParameters;
62 class OnionMessageContents;
63 class CustomOnionMessageContents;
64 class InitFeatures;
65 class NodeFeatures;
66 class ChannelFeatures;
67 class InvoiceFeatures;
68 class OfferFeatures;
69 class InvoiceRequestFeatures;
70 class Bolt12InvoiceFeatures;
71 class BlindedHopFeatures;
72 class ChannelTypeFeatures;
73 class PaymentPurpose;
74 class PathFailure;
75 class ClosureReason;
76 class HTLCDestination;
77 class PaymentFailureReason;
78 class Event;
79 class MessageSendEvent;
80 class MessageSendEventsProvider;
81 class OnionMessageProvider;
82 class EventsProvider;
83 class EventHandler;
84 class Offer;
85 class Amount;
86 class Quantity;
87 class NodeId;
88 class NetworkGraph;
89 class ReadOnlyNetworkGraph;
90 class NetworkUpdate;
91 class P2PGossipSync;
92 class ChannelUpdateInfo;
93 class ChannelInfo;
94 class DirectedChannelInfo;
95 class EffectiveCapacity;
96 class RoutingFees;
97 class NodeAnnouncementInfo;
98 class NodeAlias;
99 class NodeInfo;
100 class DelayedPaymentOutputDescriptor;
101 class StaticPaymentOutputDescriptor;
102 class SpendableOutputDescriptor;
103 class ChannelSigner;
104 class EcdsaChannelSigner;
105 class WriteableEcdsaChannelSigner;
106 class Recipient;
107 class EntropySource;
108 class NodeSigner;
109 class SignerProvider;
110 class InMemorySigner;
111 class KeysManager;
112 class PhantomKeysManager;
113 class FilesystemPersister;
114 class FailureCode;
115 class ChannelManager;
116 class ChainParameters;
117 class CounterpartyForwardingInfo;
118 class ChannelCounterparty;
119 class ChannelDetails;
120 class RecentPaymentDetails;
121 class PhantomRouteHints;
122 class ChannelManagerReadArgs;
123 class ChannelHandshakeConfig;
124 class ChannelHandshakeLimits;
125 class ChannelConfig;
126 class UserConfig;
127 class APIError;
128 class BigSize;
129 class Hostname;
130 class UntrustedString;
131 class PrintableString;
132 class OutPoint;
133 class CustomMessageReader;
134 class Type;
135 class PaymentError;
136 class ChannelMonitorUpdate;
137 class MonitorEvent;
138 class HTLCUpdate;
139 class Balance;
140 class ChannelMonitor;
141 class ExpandedKey;
142 class CustomMessageHandler;
143 class IgnoringMessageHandler;
144 class ErroringMessageHandler;
145 class MessageHandler;
146 class SocketDescriptor;
147 class PeerHandleError;
148 class PeerManager;
149 class UtxoLookupError;
150 class UtxoResult;
151 class UtxoLookup;
152 class UtxoFuture;
153 class OnionMessenger;
154 class Destination;
155 class SendError;
156 class CustomOnionMessageHandler;
157 class BlindedPath;
158 class BlindedHop;
159 class ParseError;
160 class ParseOrSemanticError;
161 class Invoice;
162 class SignedRawInvoice;
163 class RawInvoice;
164 class RawDataPart;
165 class PositiveTimestamp;
166 class SiPrefix;
167 class Currency;
168 class Sha256;
169 class Description;
170 class PayeePubKey;
171 class ExpiryTime;
172 class MinFinalCltvExpiryDelta;
173 class Fallback;
174 class InvoiceSignature;
175 class PrivateRoute;
176 class CreationError;
177 class SemanticError;
178 class SignOrCreationError;
179 class Persister;
180 class DecodeError;
181 class Init;
182 class ErrorMessage;
183 class WarningMessage;
184 class Ping;
185 class Pong;
186 class OpenChannel;
187 class AcceptChannel;
188 class FundingCreated;
189 class FundingSigned;
190 class ChannelReady;
191 class Shutdown;
192 class ClosingSignedFeeRange;
193 class ClosingSigned;
194 class UpdateAddHTLC;
195 class OnionMessage;
196 class UpdateFulfillHTLC;
197 class UpdateFailHTLC;
198 class UpdateFailMalformedHTLC;
199 class CommitmentSigned;
200 class RevokeAndACK;
201 class UpdateFee;
202 class DataLossProtect;
203 class ChannelReestablish;
204 class AnnouncementSignatures;
205 class NetAddress;
206 class UnsignedGossipMessage;
207 class UnsignedNodeAnnouncement;
208 class NodeAnnouncement;
209 class UnsignedChannelAnnouncement;
210 class ChannelAnnouncement;
211 class UnsignedChannelUpdate;
212 class ChannelUpdate;
213 class QueryChannelRange;
214 class ReplyChannelRange;
215 class QueryShortChannelIds;
216 class ReplyShortChannelIdsEnd;
217 class GossipTimestampFilter;
218 class ErrorAction;
219 class LightningError;
220 class CommitmentUpdate;
221 class ChannelMessageHandler;
222 class RoutingMessageHandler;
223 class OnionMessageHandler;
224 class UnsignedInvoiceRequest;
225 class InvoiceRequest;
226 class Level;
227 class Record;
228 class Logger;
229 class FutureCallback;
230 class Future;
231 class Sleeper;
232 class MonitorUpdateId;
233 class Persist;
234 class LockedChannelMonitor;
235 class ChainMonitor;
236 class GraphSyncError;
237 class RapidGossipSync;
238 class CResult_LockedChannelMonitorNoneZ;
239 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ;
240 class CResult_PhantomRouteHintsDecodeErrorZ;
241 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
242 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
243 class CVec_C2Tuple_u32TxOutZZ;
244 class CResult_FundingCreatedDecodeErrorZ;
245 class CResult_ChannelInfoDecodeErrorZ;
246 class CResult_NoneSendErrorZ;
247 class CResult_CVec_u8ZPeerHandleErrorZ;
248 class CResult_GossipTimestampFilterDecodeErrorZ;
249 class COption_NetworkUpdateZ;
250 class COption_u64Z;
251 class CResult_PaymentPreimageAPIErrorZ;
252 class CResult_RouteHintDecodeErrorZ;
253 class COption_FilterZ;
254 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
255 class CResult_COption_APIErrorZDecodeErrorZ;
256 class CVec_UpdateAddHTLCZ;
257 class CResult_CommitmentSignedDecodeErrorZ;
258 class COption_u32Z;
259 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
260 class CVec_C2Tuple_TxidBlockHashZZ;
261 class CResult_CommitmentTransactionDecodeErrorZ;
262 class CResult_TransactionNoneZ;
263 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
264 class COption_DurationZ;
265 class CResult_ErrorMessageDecodeErrorZ;
266 class CResult_OpenChannelDecodeErrorZ;
267 class COption_APIErrorZ;
268 class CResult_QueryChannelRangeDecodeErrorZ;
269 class CVec_TransactionZ;
270 class C2Tuple_TxidBlockHashZ;
271 class CResult_ChannelFeaturesDecodeErrorZ;
272 class CResult_ChannelReadyDecodeErrorZ;
273 class CResult_UpdateFeeDecodeErrorZ;
274 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
275 class CResult_boolLightningErrorZ;
276 class CResult_NodeIdDecodeErrorZ;
277 class COption_HTLCDestinationZ;
278 class C2Tuple_BlockHashChannelMonitorZ;
279 class CResult_ShutdownScriptInvalidShutdownScriptZ;
280 class CResult_NodeAnnouncementInfoDecodeErrorZ;
281 class CResult_COption_NetworkUpdateZDecodeErrorZ;
282 class CResult_NoneRetryableSendFailureZ;
283 class CVec_UpdateFailMalformedHTLCZ;
284 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
285 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ;
286 class CVec_RouteHopZ;
287 class COption_CustomOnionMessageContentsZ;
288 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
289 class CVec_ThirtyTwoBytesZ;
290 class CResult_ClosingSignedDecodeErrorZ;
291 class CResult_NonePaymentErrorZ;
292 class CVec_CResult_NoneAPIErrorZZ;
293 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
294 class CVec_RecentPaymentDetailsZ;
295 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
296 class CVec_RouteHintHopZ;
297 class CResult_UntrustedStringDecodeErrorZ;
298 class CResult_PaymentParametersDecodeErrorZ;
299 class CVec_U5Z;
300 class COption_UtxoLookupZ;
301 class CResult_PongDecodeErrorZ;
302 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
303 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
304 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
305 class C2Tuple_BlockHashChannelManagerZ;
306 class CResult_ChannelTransactionParametersDecodeErrorZ;
307 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ;
308 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
309 class C2Tuple_PaymentHashPaymentIdZ;
310 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
311 class CResult_NoneErrorZ;
312 class CResult_InFlightHtlcsDecodeErrorZ;
313 class CResult_COption_HTLCDestinationZDecodeErrorZ;
314 class CResult_SiPrefixParseErrorZ;
315 class CResult_BlindedHopDecodeErrorZ;
316 class CResult_TrustedCommitmentTransactionNoneZ;
317 class CResult_FixedPenaltyScorerDecodeErrorZ;
318 class CVec_BlindedPathZ;
319 class CResult_NoneLightningErrorZ;
320 class CResult_PaymentHashRetryableSendFailureZ;
321 class CResult_COption_EventZDecodeErrorZ;
322 class CResult_CVec_SignatureZNoneZ;
323 class COption_CVec_NetAddressZZ;
324 class CResult_PaymentFailureReasonDecodeErrorZ;
325 class C2Tuple_PublicKeyCOption_NetAddressZZ;
326 class CResult__u832APIErrorZ;
327 class CResult_PaymentIdPaymentErrorZ;
328 class CResult_COption_MonitorEventZDecodeErrorZ;
329 class CResult_RoutingFeesDecodeErrorZ;
330 class CResult_NonePeerHandleErrorZ;
331 class CResult_PayeePubKeyErrorZ;
332 class CResult_DescriptionCreationErrorZ;
333 class CResult_QueryShortChannelIdsDecodeErrorZ;
334 class CResult_InvoiceSemanticErrorZ;
335 class CResult_UpdateAddHTLCDecodeErrorZ;
336 class COption_MonitorEventZ;
337 class COption_TypeZ;
338 class CResult_COption_TypeZDecodeErrorZ;
339 class CResult_COption_PathFailureZDecodeErrorZ;
340 class CResult_UpdateFailHTLCDecodeErrorZ;
341 class CResult_InvoiceParseOrSemanticErrorZ;
342 class CResult_RevokeAndACKDecodeErrorZ;
343 class CResult_SpendableOutputDescriptorDecodeErrorZ;
344 class CResult_UnsignedChannelUpdateDecodeErrorZ;
345 class CVec_EventZ;
346 class CResult_NoneSemanticErrorZ;
347 class CVec_C2Tuple_u32ScriptZZ;
348 class CVec_BlindedHopZ;
349 class CResult_COption_ClosureReasonZDecodeErrorZ;
350 class CResult_PaymentHashPaymentSendFailureZ;
351 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
352 class CResult_RouteParametersDecodeErrorZ;
353 class CResult_PrivateRouteCreationErrorZ;
354 class CResult_NodeAliasDecodeErrorZ;
355 class CVec_UpdateFulfillHTLCZ;
356 class CResult_AnnouncementSignaturesDecodeErrorZ;
357 class CResult_UpdateFulfillHTLCDecodeErrorZ;
358 class CResult_NodeFeaturesDecodeErrorZ;
359 class CResult_InMemorySignerDecodeErrorZ;
360 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
361 class COption_PathFailureZ;
362 class COption_ScalarZ;
363 class CResult_ChannelUpdateInfoDecodeErrorZ;
364 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
365 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
366 class CVec_TxOutZ;
367 class CVec_UpdateFailHTLCZ;
368 class CVec_SpendableOutputDescriptorZ;
369 class COption_C2Tuple_u64u64ZZ;
370 class CResult_ChannelAnnouncementDecodeErrorZ;
371 class CResult_HTLCUpdateDecodeErrorZ;
372 class C2Tuple_SignatureCVec_SignatureZZ;
373 class CVec_OutPointZ;
374 class COption_WriteableScoreZ;
375 class CResult_PositiveTimestampCreationErrorZ;
376 class C2Tuple__u168_u168Z;
377 class CResult_InvoiceFeaturesDecodeErrorZ;
378 class C2Tuple_BlindedPayInfoBlindedPathZ;
379 class CResult_ChannelMonitorUpdateDecodeErrorZ;
380 class CResult_ReplyChannelRangeDecodeErrorZ;
381 class CResult_TrustedClosingTransactionNoneZ;
382 class CResult_NetAddressDecodeErrorZ;
383 class C2Tuple_PublicKeyTypeZ;
384 class CResult_ChannelReestablishDecodeErrorZ;
385 class CResult_OnionMessageDecodeErrorZ;
386 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
387 class CResult_InvoiceSignOrCreationErrorZ;
388 class CResult_InitFeaturesDecodeErrorZ;
389 class CResult_PublicKeyNoneZ;
390 class CResult_PingDecodeErrorZ;
391 class CResult_BlindedHopFeaturesDecodeErrorZ;
392 class CVec_TransactionOutputsZ;
393 class COption_HTLCClaimZ;
394 class CVec_CVec_u8ZZ;
395 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ;
396 class CResult_ShutdownScriptDecodeErrorZ;
397 class CResult_ProbabilisticScorerDecodeErrorZ;
398 class C2Tuple_usizeTransactionZ;
399 class CResult_TxCreationKeysDecodeErrorZ;
400 class CResult_NodeAnnouncementDecodeErrorZ;
401 class CVec_ChannelMonitorZ;
402 class CResult_BlindedPathDecodeErrorZ;
403 class CVec_FutureZ;
404 class CResult_RouteHopDecodeErrorZ;
405 class CVec_BalanceZ;
406 class CResult_FundingSignedDecodeErrorZ;
407 class CResult_RecoverableSignatureNoneZ;
408 class C2Tuple_Z;
409 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
410 class CVec_PathZ;
411 class CResult_NetworkGraphDecodeErrorZ;
412 class CResult_NodeInfoDecodeErrorZ;
413 class CVec_NodeIdZ;
414 class CVec_u8Z;
415 class CResult_ChannelPublicKeysDecodeErrorZ;
416 class CResult_RouteLightningErrorZ;
417 class CResult_NonePaymentSendFailureZ;
418 class CResult_HolderCommitmentTransactionDecodeErrorZ;
419 class CResult_WarningMessageDecodeErrorZ;
420 class CResult_ChannelCounterpartyDecodeErrorZ;
421 class CResult_SignatureNoneZ;
422 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
423 class CResult_InitDecodeErrorZ;
424 class CVec_MonitorUpdateIdZ;
425 class CResult_PaymentPurposeDecodeErrorZ;
426 class CResult_OutPointDecodeErrorZ;
427 class CVec_ChannelDetailsZ;
428 class CVec_MessageSendEventZ;
429 class COption_NetAddressZ;
430 class C2Tuple_OutPointScriptZ;
431 class CResult_RouteHintHopDecodeErrorZ;
432 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
433 class CResult_BlindedPayInfoDecodeErrorZ;
434 class CResult_SharedSecretNoneZ;
435 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
436 class CResult_CVec_CVec_u8ZZNoneZ;
437 class C2Tuple_PaymentHashPaymentSecretZ;
438 class CResult_AcceptChannelDecodeErrorZ;
439 class CVec_SignatureZ;
440 class CVec_u64Z;
441 class CResult_StringErrorZ;
442 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
443 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
444 class COption_EventZ;
445 class CResult_ChannelTypeFeaturesDecodeErrorZ;
446 class CVec_RouteHintZ;
447 class COption_PaymentFailureReasonZ;
448 class COption_u16Z;
449 class CVec_ChainHashZ;
450 class CResult_BlindedTailDecodeErrorZ;
451 class CVec_C2Tuple_PublicKeyTypeZZ;
452 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
453 class CResult_u32GraphSyncErrorZ;
454 class CVec_PhantomRouteHintsZ;
455 class CResult_NoneAPIErrorZ;
456 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
457 class CVec_NetAddressZ;
458 class CResult_ChannelDetailsDecodeErrorZ;
459 class CVec_C2Tuple_usizeTransactionZZ;
460 class CVec_PublicKeyZ;
461 class C2Tuple_u64u64Z;
462 class CResult_RecipientOnionFieldsDecodeErrorZ;
463 class C2Tuple_u32TxOutZ;
464 class CResult_PaymentSecretNoneZ;
465 class CResult_ChannelConfigDecodeErrorZ;
466 class CVec_PrivateRouteZ;
467 class CResult_BlindedPathNoneZ;
468 class CResult_ShutdownDecodeErrorZ;
469 class CResult_TxOutUtxoLookupErrorZ;
470 class CVec_MonitorEventZ;
471 class CVec_PaymentPreimageZ;
472 class CResult_PublicKeyErrorZ;
473 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
474 class CResult_NoneNoneZ;
475 class COption_ClosureReasonZ;
476 class COption_u128Z;
477 class CVec_APIErrorZ;
478 class CResult_boolPeerHandleErrorZ;
479 class CVec_AddressZ;
480 class CResult_ChannelUpdateDecodeErrorZ;
481 class CResult_PaymentSecretAPIErrorZ;
482 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
483 class C2Tuple_u32ScriptZ;
484 class CResult_SignedRawInvoiceParseErrorZ;
485 class COption_C2Tuple_EightU16sEightU16sZZ;
486 class CResult_RouteDecodeErrorZ;
487 class COption_NoneZ;
488 class COption_CVec_u8ZZ;
489
490 class Str {
491 private:
492         LDKStr self;
493 public:
494         Str(const Str&) = delete;
495         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
496         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
497         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
498         ~Str() { Str_free(self); }
499         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
500         LDKStr* operator &() { return &self; }
501         LDKStr* operator ->() { return &self; }
502         const LDKStr* operator &() const { return &self; }
503         const LDKStr* operator ->() const { return &self; }
504 };
505 class Refund {
506 private:
507         LDKRefund self;
508 public:
509         Refund(const Refund&) = delete;
510         Refund(Refund&& o) : self(o.self) { memset(&o, 0, sizeof(Refund)); }
511         Refund(LDKRefund&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefund)); }
512         operator LDKRefund() && { LDKRefund res = self; memset(&self, 0, sizeof(LDKRefund)); return res; }
513         ~Refund() { Refund_free(self); }
514         Refund& operator=(Refund&& o) { Refund_free(self); self = o.self; memset(&o, 0, sizeof(Refund)); return *this; }
515         LDKRefund* operator &() { return &self; }
516         LDKRefund* operator ->() { return &self; }
517         const LDKRefund* operator &() const { return &self; }
518         const LDKRefund* operator ->() const { return &self; }
519 };
520 class Retry {
521 private:
522         LDKRetry self;
523 public:
524         Retry(const Retry&) = delete;
525         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
526         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
527         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
528         ~Retry() { Retry_free(self); }
529         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
530         LDKRetry* operator &() { return &self; }
531         LDKRetry* operator ->() { return &self; }
532         const LDKRetry* operator &() const { return &self; }
533         const LDKRetry* operator ->() const { return &self; }
534 };
535 class RetryableSendFailure {
536 private:
537         LDKRetryableSendFailure self;
538 public:
539         RetryableSendFailure(const RetryableSendFailure&) = delete;
540         RetryableSendFailure(RetryableSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(RetryableSendFailure)); }
541         RetryableSendFailure(LDKRetryableSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryableSendFailure)); }
542         operator LDKRetryableSendFailure() && { LDKRetryableSendFailure res = self; memset(&self, 0, sizeof(LDKRetryableSendFailure)); return res; }
543         RetryableSendFailure& operator=(RetryableSendFailure&& o) { self = o.self; memset(&o, 0, sizeof(RetryableSendFailure)); return *this; }
544         LDKRetryableSendFailure* operator &() { return &self; }
545         LDKRetryableSendFailure* operator ->() { return &self; }
546         const LDKRetryableSendFailure* operator &() const { return &self; }
547         const LDKRetryableSendFailure* operator ->() const { return &self; }
548 };
549 class PaymentSendFailure {
550 private:
551         LDKPaymentSendFailure self;
552 public:
553         PaymentSendFailure(const PaymentSendFailure&) = delete;
554         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
555         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
556         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
557         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
558         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
559         LDKPaymentSendFailure* operator &() { return &self; }
560         LDKPaymentSendFailure* operator ->() { return &self; }
561         const LDKPaymentSendFailure* operator &() const { return &self; }
562         const LDKPaymentSendFailure* operator ->() const { return &self; }
563 };
564 class RecipientOnionFields {
565 private:
566         LDKRecipientOnionFields self;
567 public:
568         RecipientOnionFields(const RecipientOnionFields&) = delete;
569         RecipientOnionFields(RecipientOnionFields&& o) : self(o.self) { memset(&o, 0, sizeof(RecipientOnionFields)); }
570         RecipientOnionFields(LDKRecipientOnionFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipientOnionFields)); }
571         operator LDKRecipientOnionFields() && { LDKRecipientOnionFields res = self; memset(&self, 0, sizeof(LDKRecipientOnionFields)); return res; }
572         ~RecipientOnionFields() { RecipientOnionFields_free(self); }
573         RecipientOnionFields& operator=(RecipientOnionFields&& o) { RecipientOnionFields_free(self); self = o.self; memset(&o, 0, sizeof(RecipientOnionFields)); return *this; }
574         LDKRecipientOnionFields* operator &() { return &self; }
575         LDKRecipientOnionFields* operator ->() { return &self; }
576         const LDKRecipientOnionFields* operator &() const { return &self; }
577         const LDKRecipientOnionFields* operator ->() const { return &self; }
578 };
579 class HTLCClaim {
580 private:
581         LDKHTLCClaim self;
582 public:
583         HTLCClaim(const HTLCClaim&) = delete;
584         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
585         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
586         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
587         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
588         LDKHTLCClaim* operator &() { return &self; }
589         LDKHTLCClaim* operator ->() { return &self; }
590         const LDKHTLCClaim* operator &() const { return &self; }
591         const LDKHTLCClaim* operator ->() const { return &self; }
592 };
593 class CounterpartyCommitmentSecrets {
594 private:
595         LDKCounterpartyCommitmentSecrets self;
596 public:
597         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
598         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
599         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
600         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
601         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
602         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
603         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
604         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
605         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
606         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
607 };
608 class TxCreationKeys {
609 private:
610         LDKTxCreationKeys self;
611 public:
612         TxCreationKeys(const TxCreationKeys&) = delete;
613         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
614         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
615         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
616         ~TxCreationKeys() { TxCreationKeys_free(self); }
617         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
618         LDKTxCreationKeys* operator &() { return &self; }
619         LDKTxCreationKeys* operator ->() { return &self; }
620         const LDKTxCreationKeys* operator &() const { return &self; }
621         const LDKTxCreationKeys* operator ->() const { return &self; }
622 };
623 class ChannelPublicKeys {
624 private:
625         LDKChannelPublicKeys self;
626 public:
627         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
628         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
629         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
630         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
631         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
632         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
633         LDKChannelPublicKeys* operator &() { return &self; }
634         LDKChannelPublicKeys* operator ->() { return &self; }
635         const LDKChannelPublicKeys* operator &() const { return &self; }
636         const LDKChannelPublicKeys* operator ->() const { return &self; }
637 };
638 class HTLCOutputInCommitment {
639 private:
640         LDKHTLCOutputInCommitment self;
641 public:
642         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
643         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
644         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
645         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
646         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
647         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
648         LDKHTLCOutputInCommitment* operator &() { return &self; }
649         LDKHTLCOutputInCommitment* operator ->() { return &self; }
650         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
651         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
652 };
653 class ChannelTransactionParameters {
654 private:
655         LDKChannelTransactionParameters self;
656 public:
657         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
658         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
659         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
660         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
661         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
662         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
663         LDKChannelTransactionParameters* operator &() { return &self; }
664         LDKChannelTransactionParameters* operator ->() { return &self; }
665         const LDKChannelTransactionParameters* operator &() const { return &self; }
666         const LDKChannelTransactionParameters* operator ->() const { return &self; }
667 };
668 class CounterpartyChannelTransactionParameters {
669 private:
670         LDKCounterpartyChannelTransactionParameters self;
671 public:
672         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
673         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
674         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
675         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
676         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
677         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
678         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
679         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
680         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
681         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
682 };
683 class DirectedChannelTransactionParameters {
684 private:
685         LDKDirectedChannelTransactionParameters self;
686 public:
687         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
688         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
689         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
690         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
691         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
692         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
693         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
694         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
695         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
696         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
697 };
698 class HolderCommitmentTransaction {
699 private:
700         LDKHolderCommitmentTransaction self;
701 public:
702         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
703         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
704         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
705         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
706         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
707         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
708         LDKHolderCommitmentTransaction* operator &() { return &self; }
709         LDKHolderCommitmentTransaction* operator ->() { return &self; }
710         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
711         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
712 };
713 class BuiltCommitmentTransaction {
714 private:
715         LDKBuiltCommitmentTransaction self;
716 public:
717         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
718         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
719         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
720         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
721         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
722         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
723         LDKBuiltCommitmentTransaction* operator &() { return &self; }
724         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
725         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
726         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
727 };
728 class ClosingTransaction {
729 private:
730         LDKClosingTransaction self;
731 public:
732         ClosingTransaction(const ClosingTransaction&) = delete;
733         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
734         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
735         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
736         ~ClosingTransaction() { ClosingTransaction_free(self); }
737         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
738         LDKClosingTransaction* operator &() { return &self; }
739         LDKClosingTransaction* operator ->() { return &self; }
740         const LDKClosingTransaction* operator &() const { return &self; }
741         const LDKClosingTransaction* operator ->() const { return &self; }
742 };
743 class TrustedClosingTransaction {
744 private:
745         LDKTrustedClosingTransaction self;
746 public:
747         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
748         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
749         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
750         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
751         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
752         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
753         LDKTrustedClosingTransaction* operator &() { return &self; }
754         LDKTrustedClosingTransaction* operator ->() { return &self; }
755         const LDKTrustedClosingTransaction* operator &() const { return &self; }
756         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
757 };
758 class CommitmentTransaction {
759 private:
760         LDKCommitmentTransaction self;
761 public:
762         CommitmentTransaction(const CommitmentTransaction&) = delete;
763         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
764         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
765         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
766         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
767         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
768         LDKCommitmentTransaction* operator &() { return &self; }
769         LDKCommitmentTransaction* operator ->() { return &self; }
770         const LDKCommitmentTransaction* operator &() const { return &self; }
771         const LDKCommitmentTransaction* operator ->() const { return &self; }
772 };
773 class TrustedCommitmentTransaction {
774 private:
775         LDKTrustedCommitmentTransaction self;
776 public:
777         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
778         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
779         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
780         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
781         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
782         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
783         LDKTrustedCommitmentTransaction* operator &() { return &self; }
784         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
785         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
786         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
787 };
788 class ShutdownScript {
789 private:
790         LDKShutdownScript self;
791 public:
792         ShutdownScript(const ShutdownScript&) = delete;
793         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
794         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
795         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
796         ~ShutdownScript() { ShutdownScript_free(self); }
797         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
798         LDKShutdownScript* operator &() { return &self; }
799         LDKShutdownScript* operator ->() { return &self; }
800         const LDKShutdownScript* operator &() const { return &self; }
801         const LDKShutdownScript* operator ->() const { return &self; }
802 };
803 class InvalidShutdownScript {
804 private:
805         LDKInvalidShutdownScript self;
806 public:
807         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
808         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
809         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
810         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
811         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
812         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
813         LDKInvalidShutdownScript* operator &() { return &self; }
814         LDKInvalidShutdownScript* operator ->() { return &self; }
815         const LDKInvalidShutdownScript* operator &() const { return &self; }
816         const LDKInvalidShutdownScript* operator ->() const { return &self; }
817 };
818 class UnsignedInvoice {
819 private:
820         LDKUnsignedInvoice self;
821 public:
822         UnsignedInvoice(const UnsignedInvoice&) = delete;
823         UnsignedInvoice(UnsignedInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedInvoice)); }
824         UnsignedInvoice(LDKUnsignedInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedInvoice)); }
825         operator LDKUnsignedInvoice() && { LDKUnsignedInvoice res = self; memset(&self, 0, sizeof(LDKUnsignedInvoice)); return res; }
826         ~UnsignedInvoice() { UnsignedInvoice_free(self); }
827         UnsignedInvoice& operator=(UnsignedInvoice&& o) { UnsignedInvoice_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedInvoice)); return *this; }
828         LDKUnsignedInvoice* operator &() { return &self; }
829         LDKUnsignedInvoice* operator ->() { return &self; }
830         const LDKUnsignedInvoice* operator &() const { return &self; }
831         const LDKUnsignedInvoice* operator ->() const { return &self; }
832 };
833 class BlindedPayInfo {
834 private:
835         LDKBlindedPayInfo self;
836 public:
837         BlindedPayInfo(const BlindedPayInfo&) = delete;
838         BlindedPayInfo(BlindedPayInfo&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPayInfo)); }
839         BlindedPayInfo(LDKBlindedPayInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPayInfo)); }
840         operator LDKBlindedPayInfo() && { LDKBlindedPayInfo res = self; memset(&self, 0, sizeof(LDKBlindedPayInfo)); return res; }
841         ~BlindedPayInfo() { BlindedPayInfo_free(self); }
842         BlindedPayInfo& operator=(BlindedPayInfo&& o) { BlindedPayInfo_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPayInfo)); return *this; }
843         LDKBlindedPayInfo* operator &() { return &self; }
844         LDKBlindedPayInfo* operator ->() { return &self; }
845         const LDKBlindedPayInfo* operator &() const { return &self; }
846         const LDKBlindedPayInfo* operator ->() const { return &self; }
847 };
848 class BackgroundProcessor {
849 private:
850         LDKBackgroundProcessor self;
851 public:
852         BackgroundProcessor(const BackgroundProcessor&) = delete;
853         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
854         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
855         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
856         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
857         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
858         LDKBackgroundProcessor* operator &() { return &self; }
859         LDKBackgroundProcessor* operator ->() { return &self; }
860         const LDKBackgroundProcessor* operator &() const { return &self; }
861         const LDKBackgroundProcessor* operator ->() const { return &self; }
862 };
863 class GossipSync {
864 private:
865         LDKGossipSync self;
866 public:
867         GossipSync(const GossipSync&) = delete;
868         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
869         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
870         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
871         ~GossipSync() { GossipSync_free(self); }
872         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
873         LDKGossipSync* operator &() { return &self; }
874         LDKGossipSync* operator ->() { return &self; }
875         const LDKGossipSync* operator &() const { return &self; }
876         const LDKGossipSync* operator ->() const { return &self; }
877 };
878 class DefaultRouter {
879 private:
880         LDKDefaultRouter self;
881 public:
882         DefaultRouter(const DefaultRouter&) = delete;
883         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
884         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
885         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
886         ~DefaultRouter() { DefaultRouter_free(self); }
887         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
888         LDKDefaultRouter* operator &() { return &self; }
889         LDKDefaultRouter* operator ->() { return &self; }
890         const LDKDefaultRouter* operator &() const { return &self; }
891         const LDKDefaultRouter* operator ->() const { return &self; }
892 };
893 class Router {
894 private:
895         LDKRouter self;
896 public:
897         Router(const Router&) = delete;
898         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
899         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
900         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
901         ~Router() { Router_free(self); }
902         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
903         LDKRouter* operator &() { return &self; }
904         LDKRouter* operator ->() { return &self; }
905         const LDKRouter* operator &() const { return &self; }
906         const LDKRouter* operator ->() const { return &self; }
907         /**
908          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
909          * 
910          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
911          */
912         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs);
913         /**
914          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values. Includes
915          *  `PaymentHash` and `PaymentId` to be able to correlate the request with a specific payment.
916          * 
917          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
918          */
919         inline LDK::CResult_RouteLightningErrorZ find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id);
920 };
921 class ScorerAccountingForInFlightHtlcs {
922 private:
923         LDKScorerAccountingForInFlightHtlcs self;
924 public:
925         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
926         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
927         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
928         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
929         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
930         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
931         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
932         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
933         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
934         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
935 };
936 class InFlightHtlcs {
937 private:
938         LDKInFlightHtlcs self;
939 public:
940         InFlightHtlcs(const InFlightHtlcs&) = delete;
941         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
942         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
943         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
944         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
945         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
946         LDKInFlightHtlcs* operator &() { return &self; }
947         LDKInFlightHtlcs* operator ->() { return &self; }
948         const LDKInFlightHtlcs* operator &() const { return &self; }
949         const LDKInFlightHtlcs* operator ->() const { return &self; }
950 };
951 class RouteHop {
952 private:
953         LDKRouteHop self;
954 public:
955         RouteHop(const RouteHop&) = delete;
956         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
957         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
958         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
959         ~RouteHop() { RouteHop_free(self); }
960         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
961         LDKRouteHop* operator &() { return &self; }
962         LDKRouteHop* operator ->() { return &self; }
963         const LDKRouteHop* operator &() const { return &self; }
964         const LDKRouteHop* operator ->() const { return &self; }
965 };
966 class BlindedTail {
967 private:
968         LDKBlindedTail self;
969 public:
970         BlindedTail(const BlindedTail&) = delete;
971         BlindedTail(BlindedTail&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedTail)); }
972         BlindedTail(LDKBlindedTail&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedTail)); }
973         operator LDKBlindedTail() && { LDKBlindedTail res = self; memset(&self, 0, sizeof(LDKBlindedTail)); return res; }
974         ~BlindedTail() { BlindedTail_free(self); }
975         BlindedTail& operator=(BlindedTail&& o) { BlindedTail_free(self); self = o.self; memset(&o, 0, sizeof(BlindedTail)); return *this; }
976         LDKBlindedTail* operator &() { return &self; }
977         LDKBlindedTail* operator ->() { return &self; }
978         const LDKBlindedTail* operator &() const { return &self; }
979         const LDKBlindedTail* operator ->() const { return &self; }
980 };
981 class Path {
982 private:
983         LDKPath self;
984 public:
985         Path(const Path&) = delete;
986         Path(Path&& o) : self(o.self) { memset(&o, 0, sizeof(Path)); }
987         Path(LDKPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPath)); }
988         operator LDKPath() && { LDKPath res = self; memset(&self, 0, sizeof(LDKPath)); return res; }
989         ~Path() { Path_free(self); }
990         Path& operator=(Path&& o) { Path_free(self); self = o.self; memset(&o, 0, sizeof(Path)); return *this; }
991         LDKPath* operator &() { return &self; }
992         LDKPath* operator ->() { return &self; }
993         const LDKPath* operator &() const { return &self; }
994         const LDKPath* operator ->() const { return &self; }
995 };
996 class Route {
997 private:
998         LDKRoute self;
999 public:
1000         Route(const Route&) = delete;
1001         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
1002         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
1003         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
1004         ~Route() { Route_free(self); }
1005         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
1006         LDKRoute* operator &() { return &self; }
1007         LDKRoute* operator ->() { return &self; }
1008         const LDKRoute* operator &() const { return &self; }
1009         const LDKRoute* operator ->() const { return &self; }
1010 };
1011 class RouteParameters {
1012 private:
1013         LDKRouteParameters self;
1014 public:
1015         RouteParameters(const RouteParameters&) = delete;
1016         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
1017         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
1018         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
1019         ~RouteParameters() { RouteParameters_free(self); }
1020         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
1021         LDKRouteParameters* operator &() { return &self; }
1022         LDKRouteParameters* operator ->() { return &self; }
1023         const LDKRouteParameters* operator &() const { return &self; }
1024         const LDKRouteParameters* operator ->() const { return &self; }
1025 };
1026 class PaymentParameters {
1027 private:
1028         LDKPaymentParameters self;
1029 public:
1030         PaymentParameters(const PaymentParameters&) = delete;
1031         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
1032         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
1033         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
1034         ~PaymentParameters() { PaymentParameters_free(self); }
1035         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
1036         LDKPaymentParameters* operator &() { return &self; }
1037         LDKPaymentParameters* operator ->() { return &self; }
1038         const LDKPaymentParameters* operator &() const { return &self; }
1039         const LDKPaymentParameters* operator ->() const { return &self; }
1040 };
1041 class Hints {
1042 private:
1043         LDKHints self;
1044 public:
1045         Hints(const Hints&) = delete;
1046         Hints(Hints&& o) : self(o.self) { memset(&o, 0, sizeof(Hints)); }
1047         Hints(LDKHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHints)); }
1048         operator LDKHints() && { LDKHints res = self; memset(&self, 0, sizeof(LDKHints)); return res; }
1049         ~Hints() { Hints_free(self); }
1050         Hints& operator=(Hints&& o) { Hints_free(self); self = o.self; memset(&o, 0, sizeof(Hints)); return *this; }
1051         LDKHints* operator &() { return &self; }
1052         LDKHints* operator ->() { return &self; }
1053         const LDKHints* operator &() const { return &self; }
1054         const LDKHints* operator ->() const { return &self; }
1055 };
1056 class RouteHint {
1057 private:
1058         LDKRouteHint self;
1059 public:
1060         RouteHint(const RouteHint&) = delete;
1061         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
1062         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
1063         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
1064         ~RouteHint() { RouteHint_free(self); }
1065         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
1066         LDKRouteHint* operator &() { return &self; }
1067         LDKRouteHint* operator ->() { return &self; }
1068         const LDKRouteHint* operator &() const { return &self; }
1069         const LDKRouteHint* operator ->() const { return &self; }
1070 };
1071 class RouteHintHop {
1072 private:
1073         LDKRouteHintHop self;
1074 public:
1075         RouteHintHop(const RouteHintHop&) = delete;
1076         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
1077         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
1078         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
1079         ~RouteHintHop() { RouteHintHop_free(self); }
1080         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
1081         LDKRouteHintHop* operator &() { return &self; }
1082         LDKRouteHintHop* operator ->() { return &self; }
1083         const LDKRouteHintHop* operator &() const { return &self; }
1084         const LDKRouteHintHop* operator ->() const { return &self; }
1085 };
1086 class BroadcasterInterface {
1087 private:
1088         LDKBroadcasterInterface self;
1089 public:
1090         BroadcasterInterface(const BroadcasterInterface&) = delete;
1091         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
1092         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
1093         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
1094         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
1095         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
1096         LDKBroadcasterInterface* operator &() { return &self; }
1097         LDKBroadcasterInterface* operator ->() { return &self; }
1098         const LDKBroadcasterInterface* operator &() const { return &self; }
1099         const LDKBroadcasterInterface* operator ->() const { return &self; }
1100         /**
1101          *  Sends a transaction out to (hopefully) be mined.
1102          */
1103         inline void broadcast_transaction(struct LDKTransaction tx);
1104 };
1105 class ConfirmationTarget {
1106 private:
1107         LDKConfirmationTarget self;
1108 public:
1109         ConfirmationTarget(const ConfirmationTarget&) = delete;
1110         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
1111         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
1112         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
1113         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
1114         LDKConfirmationTarget* operator &() { return &self; }
1115         LDKConfirmationTarget* operator ->() { return &self; }
1116         const LDKConfirmationTarget* operator &() const { return &self; }
1117         const LDKConfirmationTarget* operator ->() const { return &self; }
1118 };
1119 class FeeEstimator {
1120 private:
1121         LDKFeeEstimator self;
1122 public:
1123         FeeEstimator(const FeeEstimator&) = delete;
1124         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
1125         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
1126         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
1127         ~FeeEstimator() { FeeEstimator_free(self); }
1128         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
1129         LDKFeeEstimator* operator &() { return &self; }
1130         LDKFeeEstimator* operator ->() { return &self; }
1131         const LDKFeeEstimator* operator &() const { return &self; }
1132         const LDKFeeEstimator* operator ->() const { return &self; }
1133         /**
1134          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
1135          * 
1136          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
1137          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
1138          * 
1139          *  The following unit conversions can be used to convert to sats/KW:
1140          *   * satoshis-per-byte * 250
1141          *   * satoshis-per-kbyte / 4
1142          */
1143         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
1144 };
1145 class BestBlock {
1146 private:
1147         LDKBestBlock self;
1148 public:
1149         BestBlock(const BestBlock&) = delete;
1150         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1151         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1152         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1153         ~BestBlock() { BestBlock_free(self); }
1154         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1155         LDKBestBlock* operator &() { return &self; }
1156         LDKBestBlock* operator ->() { return &self; }
1157         const LDKBestBlock* operator &() const { return &self; }
1158         const LDKBestBlock* operator ->() const { return &self; }
1159 };
1160 class Listen {
1161 private:
1162         LDKListen self;
1163 public:
1164         Listen(const Listen&) = delete;
1165         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1166         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1167         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1168         ~Listen() { Listen_free(self); }
1169         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1170         LDKListen* operator &() { return &self; }
1171         LDKListen* operator ->() { return &self; }
1172         const LDKListen* operator &() const { return &self; }
1173         const LDKListen* operator ->() const { return &self; }
1174         /**
1175          *  Notifies the listener that a block was added at the given height, with the transaction data
1176          *  possibly filtered.
1177          */
1178         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1179         /**
1180          *  Notifies the listener that a block was added at the given height.
1181          */
1182         inline void block_connected(struct LDKu8slice block, uint32_t height);
1183         /**
1184          *  Notifies the listener that a block was removed at the given height.
1185          */
1186         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1187 };
1188 class Confirm {
1189 private:
1190         LDKConfirm self;
1191 public:
1192         Confirm(const Confirm&) = delete;
1193         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1194         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1195         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1196         ~Confirm() { Confirm_free(self); }
1197         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1198         LDKConfirm* operator &() { return &self; }
1199         LDKConfirm* operator ->() { return &self; }
1200         const LDKConfirm* operator &() const { return &self; }
1201         const LDKConfirm* operator ->() const { return &self; }
1202         /**
1203          *  Notifies LDK of transactions confirmed in a block with a given header and height.
1204          * 
1205          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
1206          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1207          *  appearing in the same block do not need to be included in the same call; instead, multiple
1208          *  calls with additional transactions may be made so long as they are made in [chain order].
1209          * 
1210          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1211          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1212          *  longer in the chain as of the last call to [`best_block_updated`].
1213          * 
1214          *  [chain order]: Confirm#order
1215          *  [`best_block_updated`]: Self::best_block_updated
1216          */
1217         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1218         /**
1219          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
1220          * 
1221          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
1222          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
1223          *  given block hash. Once called, the given transaction will not be returned
1224          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
1225          * 
1226          *  [`get_relevant_txids`]: Self::get_relevant_txids
1227          *  [`transactions_confirmed`]: Self::transactions_confirmed
1228          */
1229         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1230         /**
1231          *  Notifies LDK of an update to the best header connected at the given height.
1232          * 
1233          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
1234          *  blocks.
1235          */
1236         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1237         /**
1238          *  Returns transactions that must be monitored for reorganization out of the chain along
1239          *  with the hash of the block as part of which it had been previously confirmed.
1240          * 
1241          *  Note that the returned `Option<BlockHash>` might be `None` for channels created with LDK
1242          *  0.0.112 and prior, in which case you need to manually track previous confirmations.
1243          * 
1244          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
1245          *  confirmations to be safe from a chain reorganization. Will not include any transactions
1246          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
1247          * 
1248          *  Must be called to determine the subset of transactions that must be monitored for
1249          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1250          *  other interface methods. Thus, this is useful to determine which transactions must be
1251          *  given to [`transaction_unconfirmed`].
1252          * 
1253          *  If any of the returned transactions are confirmed in a block other than the one with the
1254          *  given hash, they need to be unconfirmed and reconfirmed via [`transaction_unconfirmed`] and
1255          *  [`transactions_confirmed`], respectively.
1256          * 
1257          *  [`transactions_confirmed`]: Self::transactions_confirmed
1258          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1259          */
1260         inline LDK::CVec_C2Tuple_TxidBlockHashZZ get_relevant_txids();
1261 };
1262 class ChannelMonitorUpdateStatus {
1263 private:
1264         LDKChannelMonitorUpdateStatus self;
1265 public:
1266         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
1267         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
1268         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
1269         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
1270         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
1271         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
1272         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
1273         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
1274         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
1275 };
1276 class Watch {
1277 private:
1278         LDKWatch self;
1279 public:
1280         Watch(const Watch&) = delete;
1281         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1282         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1283         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1284         ~Watch() { Watch_free(self); }
1285         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1286         LDKWatch* operator &() { return &self; }
1287         LDKWatch* operator ->() { return &self; }
1288         const LDKWatch* operator &() const { return &self; }
1289         const LDKWatch* operator ->() const { return &self; }
1290         /**
1291          *  Watches a channel identified by `funding_txo` using `monitor`.
1292          * 
1293          *  Implementations are responsible for watching the chain for the funding transaction along
1294          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1295          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1296          * 
1297          *  Note: this interface MUST error with [`ChannelMonitorUpdateStatus::PermanentFailure`] if
1298          *  the given `funding_txo` has previously been registered via `watch_channel`.
1299          * 
1300          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1301          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1302          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1303          */
1304         inline LDK::ChannelMonitorUpdateStatus watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1305         /**
1306          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1307          * 
1308          *  Implementations must call [`update_monitor`] with the given update. See
1309          *  [`ChannelMonitorUpdateStatus`] for invariants around returning an error.
1310          * 
1311          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1312          */
1313         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update);
1314         /**
1315          *  Returns any monitor events since the last call. Subsequent calls must only return new
1316          *  events.
1317          * 
1318          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1319          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1320          *  to disk.
1321          * 
1322          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1323          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
1324          */
1325         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1326 };
1327 class Filter {
1328 private:
1329         LDKFilter self;
1330 public:
1331         Filter(const Filter&) = delete;
1332         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1333         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1334         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1335         ~Filter() { Filter_free(self); }
1336         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1337         LDKFilter* operator &() { return &self; }
1338         LDKFilter* operator ->() { return &self; }
1339         const LDKFilter* operator &() const { return &self; }
1340         const LDKFilter* operator ->() const { return &self; }
1341         /**
1342          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1343          *  a spending condition.
1344          */
1345         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1346         /**
1347          *  Registers interest in spends of a transaction output.
1348          * 
1349          *  Note that this method might be called during processing of a new block. You therefore need
1350          *  to ensure that also dependent output spents within an already connected block are correctly
1351          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
1352          *  registered mid-processing.
1353          */
1354         inline void register_output(struct LDKWatchedOutput output);
1355 };
1356 class WatchedOutput {
1357 private:
1358         LDKWatchedOutput self;
1359 public:
1360         WatchedOutput(const WatchedOutput&) = delete;
1361         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1362         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1363         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1364         ~WatchedOutput() { WatchedOutput_free(self); }
1365         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1366         LDKWatchedOutput* operator &() { return &self; }
1367         LDKWatchedOutput* operator ->() { return &self; }
1368         const LDKWatchedOutput* operator &() const { return &self; }
1369         const LDKWatchedOutput* operator ->() const { return &self; }
1370 };
1371 class Score {
1372 private:
1373         LDKScore self;
1374 public:
1375         Score(const Score&) = delete;
1376         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1377         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1378         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1379         ~Score() { Score_free(self); }
1380         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1381         LDKScore* operator &() { return &self; }
1382         LDKScore* operator ->() { return &self; }
1383         const LDKScore* operator &() const { return &self; }
1384         const LDKScore* operator ->() const { return &self; }
1385         /**
1386          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1387          *  given channel in the direction from `source` to `target`.
1388          * 
1389          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1390          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1391          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1392          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1393          *  Thus, implementations should be overflow-safe.
1394          */
1395         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);
1396         /**
1397          *  Handles updating channel penalties after failing to route through a channel.
1398          */
1399         inline void payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id);
1400         /**
1401          *  Handles updating channel penalties after successfully routing along a path.
1402          */
1403         inline void payment_path_successful(const struct LDKPath *NONNULL_PTR path);
1404         /**
1405          *  Handles updating channel penalties after a probe over the given path failed.
1406          */
1407         inline void probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id);
1408         /**
1409          *  Handles updating channel penalties after a probe over the given path succeeded.
1410          */
1411         inline void probe_successful(const struct LDKPath *NONNULL_PTR path);
1412 };
1413 class LockableScore {
1414 private:
1415         LDKLockableScore self;
1416 public:
1417         LockableScore(const LockableScore&) = delete;
1418         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1419         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1420         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1421         ~LockableScore() { LockableScore_free(self); }
1422         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1423         LDKLockableScore* operator &() { return &self; }
1424         LDKLockableScore* operator ->() { return &self; }
1425         const LDKLockableScore* operator &() const { return &self; }
1426         const LDKLockableScore* operator ->() const { return &self; }
1427         /**
1428          *  Returns the locked scorer.
1429          */
1430         inline LDK::Score lock();
1431 };
1432 class WriteableScore {
1433 private:
1434         LDKWriteableScore self;
1435 public:
1436         WriteableScore(const WriteableScore&) = delete;
1437         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1438         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1439         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1440         ~WriteableScore() { WriteableScore_free(self); }
1441         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1442         LDKWriteableScore* operator &() { return &self; }
1443         LDKWriteableScore* operator ->() { return &self; }
1444         const LDKWriteableScore* operator &() const { return &self; }
1445         const LDKWriteableScore* operator ->() const { return &self; }
1446 };
1447 class MultiThreadedLockableScore {
1448 private:
1449         LDKMultiThreadedLockableScore self;
1450 public:
1451         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1452         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1453         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1454         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1455         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1456         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1457         LDKMultiThreadedLockableScore* operator &() { return &self; }
1458         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1459         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1460         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1461 };
1462 class MultiThreadedScoreLock {
1463 private:
1464         LDKMultiThreadedScoreLock self;
1465 public:
1466         MultiThreadedScoreLock(const MultiThreadedScoreLock&) = delete;
1467         MultiThreadedScoreLock(MultiThreadedScoreLock&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLock)); }
1468         MultiThreadedScoreLock(LDKMultiThreadedScoreLock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLock)); }
1469         operator LDKMultiThreadedScoreLock() && { LDKMultiThreadedScoreLock res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLock)); return res; }
1470         ~MultiThreadedScoreLock() { MultiThreadedScoreLock_free(self); }
1471         MultiThreadedScoreLock& operator=(MultiThreadedScoreLock&& o) { MultiThreadedScoreLock_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLock)); return *this; }
1472         LDKMultiThreadedScoreLock* operator &() { return &self; }
1473         LDKMultiThreadedScoreLock* operator ->() { return &self; }
1474         const LDKMultiThreadedScoreLock* operator &() const { return &self; }
1475         const LDKMultiThreadedScoreLock* operator ->() const { return &self; }
1476 };
1477 class ChannelUsage {
1478 private:
1479         LDKChannelUsage self;
1480 public:
1481         ChannelUsage(const ChannelUsage&) = delete;
1482         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1483         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1484         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1485         ~ChannelUsage() { ChannelUsage_free(self); }
1486         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1487         LDKChannelUsage* operator &() { return &self; }
1488         LDKChannelUsage* operator ->() { return &self; }
1489         const LDKChannelUsage* operator &() const { return &self; }
1490         const LDKChannelUsage* operator ->() const { return &self; }
1491 };
1492 class FixedPenaltyScorer {
1493 private:
1494         LDKFixedPenaltyScorer self;
1495 public:
1496         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1497         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1498         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1499         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1500         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1501         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1502         LDKFixedPenaltyScorer* operator &() { return &self; }
1503         LDKFixedPenaltyScorer* operator ->() { return &self; }
1504         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1505         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1506 };
1507 class ProbabilisticScorer {
1508 private:
1509         LDKProbabilisticScorer self;
1510 public:
1511         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1512         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1513         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1514         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1515         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1516         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1517         LDKProbabilisticScorer* operator &() { return &self; }
1518         LDKProbabilisticScorer* operator ->() { return &self; }
1519         const LDKProbabilisticScorer* operator &() const { return &self; }
1520         const LDKProbabilisticScorer* operator ->() const { return &self; }
1521 };
1522 class ProbabilisticScoringParameters {
1523 private:
1524         LDKProbabilisticScoringParameters self;
1525 public:
1526         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1527         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1528         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1529         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1530         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1531         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1532         LDKProbabilisticScoringParameters* operator &() { return &self; }
1533         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1534         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1535         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1536 };
1537 class OnionMessageContents {
1538 private:
1539         LDKOnionMessageContents self;
1540 public:
1541         OnionMessageContents(const OnionMessageContents&) = delete;
1542         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
1543         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
1544         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
1545         ~OnionMessageContents() { OnionMessageContents_free(self); }
1546         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
1547         LDKOnionMessageContents* operator &() { return &self; }
1548         LDKOnionMessageContents* operator ->() { return &self; }
1549         const LDKOnionMessageContents* operator &() const { return &self; }
1550         const LDKOnionMessageContents* operator ->() const { return &self; }
1551 };
1552 class CustomOnionMessageContents {
1553 private:
1554         LDKCustomOnionMessageContents self;
1555 public:
1556         CustomOnionMessageContents(const CustomOnionMessageContents&) = delete;
1557         CustomOnionMessageContents(CustomOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageContents)); }
1558         CustomOnionMessageContents(LDKCustomOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageContents)); }
1559         operator LDKCustomOnionMessageContents() && { LDKCustomOnionMessageContents res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageContents)); return res; }
1560         ~CustomOnionMessageContents() { CustomOnionMessageContents_free(self); }
1561         CustomOnionMessageContents& operator=(CustomOnionMessageContents&& o) { CustomOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageContents)); return *this; }
1562         LDKCustomOnionMessageContents* operator &() { return &self; }
1563         LDKCustomOnionMessageContents* operator ->() { return &self; }
1564         const LDKCustomOnionMessageContents* operator &() const { return &self; }
1565         const LDKCustomOnionMessageContents* operator ->() const { return &self; }
1566         /**
1567          *  Returns the TLV type identifying the message contents. MUST be >= 64.
1568          */
1569         inline uint64_t tlv_type();
1570 };
1571 class InitFeatures {
1572 private:
1573         LDKInitFeatures self;
1574 public:
1575         InitFeatures(const InitFeatures&) = delete;
1576         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1577         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1578         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1579         ~InitFeatures() { InitFeatures_free(self); }
1580         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1581         LDKInitFeatures* operator &() { return &self; }
1582         LDKInitFeatures* operator ->() { return &self; }
1583         const LDKInitFeatures* operator &() const { return &self; }
1584         const LDKInitFeatures* operator ->() const { return &self; }
1585 };
1586 class NodeFeatures {
1587 private:
1588         LDKNodeFeatures self;
1589 public:
1590         NodeFeatures(const NodeFeatures&) = delete;
1591         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1592         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1593         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1594         ~NodeFeatures() { NodeFeatures_free(self); }
1595         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1596         LDKNodeFeatures* operator &() { return &self; }
1597         LDKNodeFeatures* operator ->() { return &self; }
1598         const LDKNodeFeatures* operator &() const { return &self; }
1599         const LDKNodeFeatures* operator ->() const { return &self; }
1600 };
1601 class ChannelFeatures {
1602 private:
1603         LDKChannelFeatures self;
1604 public:
1605         ChannelFeatures(const ChannelFeatures&) = delete;
1606         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1607         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1608         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1609         ~ChannelFeatures() { ChannelFeatures_free(self); }
1610         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1611         LDKChannelFeatures* operator &() { return &self; }
1612         LDKChannelFeatures* operator ->() { return &self; }
1613         const LDKChannelFeatures* operator &() const { return &self; }
1614         const LDKChannelFeatures* operator ->() const { return &self; }
1615 };
1616 class InvoiceFeatures {
1617 private:
1618         LDKInvoiceFeatures self;
1619 public:
1620         InvoiceFeatures(const InvoiceFeatures&) = delete;
1621         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1622         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1623         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1624         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1625         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1626         LDKInvoiceFeatures* operator &() { return &self; }
1627         LDKInvoiceFeatures* operator ->() { return &self; }
1628         const LDKInvoiceFeatures* operator &() const { return &self; }
1629         const LDKInvoiceFeatures* operator ->() const { return &self; }
1630 };
1631 class OfferFeatures {
1632 private:
1633         LDKOfferFeatures self;
1634 public:
1635         OfferFeatures(const OfferFeatures&) = delete;
1636         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
1637         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
1638         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
1639         ~OfferFeatures() { OfferFeatures_free(self); }
1640         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
1641         LDKOfferFeatures* operator &() { return &self; }
1642         LDKOfferFeatures* operator ->() { return &self; }
1643         const LDKOfferFeatures* operator &() const { return &self; }
1644         const LDKOfferFeatures* operator ->() const { return &self; }
1645 };
1646 class InvoiceRequestFeatures {
1647 private:
1648         LDKInvoiceRequestFeatures self;
1649 public:
1650         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
1651         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
1652         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
1653         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
1654         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
1655         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
1656         LDKInvoiceRequestFeatures* operator &() { return &self; }
1657         LDKInvoiceRequestFeatures* operator ->() { return &self; }
1658         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
1659         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
1660 };
1661 class Bolt12InvoiceFeatures {
1662 private:
1663         LDKBolt12InvoiceFeatures self;
1664 public:
1665         Bolt12InvoiceFeatures(const Bolt12InvoiceFeatures&) = delete;
1666         Bolt12InvoiceFeatures(Bolt12InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); }
1667         Bolt12InvoiceFeatures(LDKBolt12InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12InvoiceFeatures)); }
1668         operator LDKBolt12InvoiceFeatures() && { LDKBolt12InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt12InvoiceFeatures)); return res; }
1669         ~Bolt12InvoiceFeatures() { Bolt12InvoiceFeatures_free(self); }
1670         Bolt12InvoiceFeatures& operator=(Bolt12InvoiceFeatures&& o) { Bolt12InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); return *this; }
1671         LDKBolt12InvoiceFeatures* operator &() { return &self; }
1672         LDKBolt12InvoiceFeatures* operator ->() { return &self; }
1673         const LDKBolt12InvoiceFeatures* operator &() const { return &self; }
1674         const LDKBolt12InvoiceFeatures* operator ->() const { return &self; }
1675 };
1676 class BlindedHopFeatures {
1677 private:
1678         LDKBlindedHopFeatures self;
1679 public:
1680         BlindedHopFeatures(const BlindedHopFeatures&) = delete;
1681         BlindedHopFeatures(BlindedHopFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHopFeatures)); }
1682         BlindedHopFeatures(LDKBlindedHopFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHopFeatures)); }
1683         operator LDKBlindedHopFeatures() && { LDKBlindedHopFeatures res = self; memset(&self, 0, sizeof(LDKBlindedHopFeatures)); return res; }
1684         ~BlindedHopFeatures() { BlindedHopFeatures_free(self); }
1685         BlindedHopFeatures& operator=(BlindedHopFeatures&& o) { BlindedHopFeatures_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHopFeatures)); return *this; }
1686         LDKBlindedHopFeatures* operator &() { return &self; }
1687         LDKBlindedHopFeatures* operator ->() { return &self; }
1688         const LDKBlindedHopFeatures* operator &() const { return &self; }
1689         const LDKBlindedHopFeatures* operator ->() const { return &self; }
1690 };
1691 class ChannelTypeFeatures {
1692 private:
1693         LDKChannelTypeFeatures self;
1694 public:
1695         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1696         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1697         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1698         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1699         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1700         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1701         LDKChannelTypeFeatures* operator &() { return &self; }
1702         LDKChannelTypeFeatures* operator ->() { return &self; }
1703         const LDKChannelTypeFeatures* operator &() const { return &self; }
1704         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1705 };
1706 class PaymentPurpose {
1707 private:
1708         LDKPaymentPurpose self;
1709 public:
1710         PaymentPurpose(const PaymentPurpose&) = delete;
1711         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
1712         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
1713         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
1714         ~PaymentPurpose() { PaymentPurpose_free(self); }
1715         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
1716         LDKPaymentPurpose* operator &() { return &self; }
1717         LDKPaymentPurpose* operator ->() { return &self; }
1718         const LDKPaymentPurpose* operator &() const { return &self; }
1719         const LDKPaymentPurpose* operator ->() const { return &self; }
1720 };
1721 class PathFailure {
1722 private:
1723         LDKPathFailure self;
1724 public:
1725         PathFailure(const PathFailure&) = delete;
1726         PathFailure(PathFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PathFailure)); }
1727         PathFailure(LDKPathFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPathFailure)); }
1728         operator LDKPathFailure() && { LDKPathFailure res = self; memset(&self, 0, sizeof(LDKPathFailure)); return res; }
1729         ~PathFailure() { PathFailure_free(self); }
1730         PathFailure& operator=(PathFailure&& o) { PathFailure_free(self); self = o.self; memset(&o, 0, sizeof(PathFailure)); return *this; }
1731         LDKPathFailure* operator &() { return &self; }
1732         LDKPathFailure* operator ->() { return &self; }
1733         const LDKPathFailure* operator &() const { return &self; }
1734         const LDKPathFailure* operator ->() const { return &self; }
1735 };
1736 class ClosureReason {
1737 private:
1738         LDKClosureReason self;
1739 public:
1740         ClosureReason(const ClosureReason&) = delete;
1741         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
1742         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
1743         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
1744         ~ClosureReason() { ClosureReason_free(self); }
1745         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
1746         LDKClosureReason* operator &() { return &self; }
1747         LDKClosureReason* operator ->() { return &self; }
1748         const LDKClosureReason* operator &() const { return &self; }
1749         const LDKClosureReason* operator ->() const { return &self; }
1750 };
1751 class HTLCDestination {
1752 private:
1753         LDKHTLCDestination self;
1754 public:
1755         HTLCDestination(const HTLCDestination&) = delete;
1756         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
1757         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
1758         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
1759         ~HTLCDestination() { HTLCDestination_free(self); }
1760         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
1761         LDKHTLCDestination* operator &() { return &self; }
1762         LDKHTLCDestination* operator ->() { return &self; }
1763         const LDKHTLCDestination* operator &() const { return &self; }
1764         const LDKHTLCDestination* operator ->() const { return &self; }
1765 };
1766 class PaymentFailureReason {
1767 private:
1768         LDKPaymentFailureReason self;
1769 public:
1770         PaymentFailureReason(const PaymentFailureReason&) = delete;
1771         PaymentFailureReason(PaymentFailureReason&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentFailureReason)); }
1772         PaymentFailureReason(LDKPaymentFailureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentFailureReason)); }
1773         operator LDKPaymentFailureReason() && { LDKPaymentFailureReason res = self; memset(&self, 0, sizeof(LDKPaymentFailureReason)); return res; }
1774         PaymentFailureReason& operator=(PaymentFailureReason&& o) { self = o.self; memset(&o, 0, sizeof(PaymentFailureReason)); return *this; }
1775         LDKPaymentFailureReason* operator &() { return &self; }
1776         LDKPaymentFailureReason* operator ->() { return &self; }
1777         const LDKPaymentFailureReason* operator &() const { return &self; }
1778         const LDKPaymentFailureReason* operator ->() const { return &self; }
1779 };
1780 class Event {
1781 private:
1782         LDKEvent self;
1783 public:
1784         Event(const Event&) = delete;
1785         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
1786         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
1787         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
1788         ~Event() { Event_free(self); }
1789         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
1790         LDKEvent* operator &() { return &self; }
1791         LDKEvent* operator ->() { return &self; }
1792         const LDKEvent* operator &() const { return &self; }
1793         const LDKEvent* operator ->() const { return &self; }
1794 };
1795 class MessageSendEvent {
1796 private:
1797         LDKMessageSendEvent self;
1798 public:
1799         MessageSendEvent(const MessageSendEvent&) = delete;
1800         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
1801         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
1802         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
1803         ~MessageSendEvent() { MessageSendEvent_free(self); }
1804         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
1805         LDKMessageSendEvent* operator &() { return &self; }
1806         LDKMessageSendEvent* operator ->() { return &self; }
1807         const LDKMessageSendEvent* operator &() const { return &self; }
1808         const LDKMessageSendEvent* operator ->() const { return &self; }
1809 };
1810 class MessageSendEventsProvider {
1811 private:
1812         LDKMessageSendEventsProvider self;
1813 public:
1814         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
1815         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
1816         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
1817         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
1818         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
1819         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
1820         LDKMessageSendEventsProvider* operator &() { return &self; }
1821         LDKMessageSendEventsProvider* operator ->() { return &self; }
1822         const LDKMessageSendEventsProvider* operator &() const { return &self; }
1823         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
1824         /**
1825          *  Gets the list of pending events which were generated by previous actions, clearing the list
1826          *  in the process.
1827          */
1828         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
1829 };
1830 class OnionMessageProvider {
1831 private:
1832         LDKOnionMessageProvider self;
1833 public:
1834         OnionMessageProvider(const OnionMessageProvider&) = delete;
1835         OnionMessageProvider(OnionMessageProvider&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageProvider)); }
1836         OnionMessageProvider(LDKOnionMessageProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageProvider)); }
1837         operator LDKOnionMessageProvider() && { LDKOnionMessageProvider res = self; memset(&self, 0, sizeof(LDKOnionMessageProvider)); return res; }
1838         ~OnionMessageProvider() { OnionMessageProvider_free(self); }
1839         OnionMessageProvider& operator=(OnionMessageProvider&& o) { OnionMessageProvider_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageProvider)); return *this; }
1840         LDKOnionMessageProvider* operator &() { return &self; }
1841         LDKOnionMessageProvider* operator ->() { return &self; }
1842         const LDKOnionMessageProvider* operator &() const { return &self; }
1843         const LDKOnionMessageProvider* operator ->() const { return &self; }
1844         /**
1845          *  Gets the next pending onion message for the peer with the given node id.
1846          * 
1847          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
1848          */
1849         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
1850 };
1851 class EventsProvider {
1852 private:
1853         LDKEventsProvider self;
1854 public:
1855         EventsProvider(const EventsProvider&) = delete;
1856         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1857         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1858         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1859         ~EventsProvider() { EventsProvider_free(self); }
1860         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1861         LDKEventsProvider* operator &() { return &self; }
1862         LDKEventsProvider* operator ->() { return &self; }
1863         const LDKEventsProvider* operator &() const { return &self; }
1864         const LDKEventsProvider* operator ->() const { return &self; }
1865         /**
1866          *  Processes any events generated since the last call using the given event handler.
1867          * 
1868          *  See the trait-level documentation for requirements.
1869          */
1870         inline void process_pending_events(struct LDKEventHandler handler);
1871 };
1872 class EventHandler {
1873 private:
1874         LDKEventHandler self;
1875 public:
1876         EventHandler(const EventHandler&) = delete;
1877         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1878         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1879         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1880         ~EventHandler() { EventHandler_free(self); }
1881         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1882         LDKEventHandler* operator &() { return &self; }
1883         LDKEventHandler* operator ->() { return &self; }
1884         const LDKEventHandler* operator &() const { return &self; }
1885         const LDKEventHandler* operator ->() const { return &self; }
1886         /**
1887          *  Handles the given [`Event`].
1888          * 
1889          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1890          */
1891         inline void handle_event(struct LDKEvent event);
1892 };
1893 class Offer {
1894 private:
1895         LDKOffer self;
1896 public:
1897         Offer(const Offer&) = delete;
1898         Offer(Offer&& o) : self(o.self) { memset(&o, 0, sizeof(Offer)); }
1899         Offer(LDKOffer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffer)); }
1900         operator LDKOffer() && { LDKOffer res = self; memset(&self, 0, sizeof(LDKOffer)); return res; }
1901         ~Offer() { Offer_free(self); }
1902         Offer& operator=(Offer&& o) { Offer_free(self); self = o.self; memset(&o, 0, sizeof(Offer)); return *this; }
1903         LDKOffer* operator &() { return &self; }
1904         LDKOffer* operator ->() { return &self; }
1905         const LDKOffer* operator &() const { return &self; }
1906         const LDKOffer* operator ->() const { return &self; }
1907 };
1908 class Amount {
1909 private:
1910         LDKAmount self;
1911 public:
1912         Amount(const Amount&) = delete;
1913         Amount(Amount&& o) : self(o.self) { memset(&o, 0, sizeof(Amount)); }
1914         Amount(LDKAmount&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAmount)); }
1915         operator LDKAmount() && { LDKAmount res = self; memset(&self, 0, sizeof(LDKAmount)); return res; }
1916         ~Amount() { Amount_free(self); }
1917         Amount& operator=(Amount&& o) { Amount_free(self); self = o.self; memset(&o, 0, sizeof(Amount)); return *this; }
1918         LDKAmount* operator &() { return &self; }
1919         LDKAmount* operator ->() { return &self; }
1920         const LDKAmount* operator &() const { return &self; }
1921         const LDKAmount* operator ->() const { return &self; }
1922 };
1923 class Quantity {
1924 private:
1925         LDKQuantity self;
1926 public:
1927         Quantity(const Quantity&) = delete;
1928         Quantity(Quantity&& o) : self(o.self) { memset(&o, 0, sizeof(Quantity)); }
1929         Quantity(LDKQuantity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQuantity)); }
1930         operator LDKQuantity() && { LDKQuantity res = self; memset(&self, 0, sizeof(LDKQuantity)); return res; }
1931         ~Quantity() { Quantity_free(self); }
1932         Quantity& operator=(Quantity&& o) { Quantity_free(self); self = o.self; memset(&o, 0, sizeof(Quantity)); return *this; }
1933         LDKQuantity* operator &() { return &self; }
1934         LDKQuantity* operator ->() { return &self; }
1935         const LDKQuantity* operator &() const { return &self; }
1936         const LDKQuantity* operator ->() const { return &self; }
1937 };
1938 class NodeId {
1939 private:
1940         LDKNodeId self;
1941 public:
1942         NodeId(const NodeId&) = delete;
1943         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1944         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1945         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1946         ~NodeId() { NodeId_free(self); }
1947         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1948         LDKNodeId* operator &() { return &self; }
1949         LDKNodeId* operator ->() { return &self; }
1950         const LDKNodeId* operator &() const { return &self; }
1951         const LDKNodeId* operator ->() const { return &self; }
1952 };
1953 class NetworkGraph {
1954 private:
1955         LDKNetworkGraph self;
1956 public:
1957         NetworkGraph(const NetworkGraph&) = delete;
1958         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1959         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1960         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1961         ~NetworkGraph() { NetworkGraph_free(self); }
1962         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1963         LDKNetworkGraph* operator &() { return &self; }
1964         LDKNetworkGraph* operator ->() { return &self; }
1965         const LDKNetworkGraph* operator &() const { return &self; }
1966         const LDKNetworkGraph* operator ->() const { return &self; }
1967 };
1968 class ReadOnlyNetworkGraph {
1969 private:
1970         LDKReadOnlyNetworkGraph self;
1971 public:
1972         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1973         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1974         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1975         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1976         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1977         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1978         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1979         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1980         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1981         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1982 };
1983 class NetworkUpdate {
1984 private:
1985         LDKNetworkUpdate self;
1986 public:
1987         NetworkUpdate(const NetworkUpdate&) = delete;
1988         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1989         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1990         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1991         ~NetworkUpdate() { NetworkUpdate_free(self); }
1992         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1993         LDKNetworkUpdate* operator &() { return &self; }
1994         LDKNetworkUpdate* operator ->() { return &self; }
1995         const LDKNetworkUpdate* operator &() const { return &self; }
1996         const LDKNetworkUpdate* operator ->() const { return &self; }
1997 };
1998 class P2PGossipSync {
1999 private:
2000         LDKP2PGossipSync self;
2001 public:
2002         P2PGossipSync(const P2PGossipSync&) = delete;
2003         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
2004         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
2005         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
2006         ~P2PGossipSync() { P2PGossipSync_free(self); }
2007         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
2008         LDKP2PGossipSync* operator &() { return &self; }
2009         LDKP2PGossipSync* operator ->() { return &self; }
2010         const LDKP2PGossipSync* operator &() const { return &self; }
2011         const LDKP2PGossipSync* operator ->() const { return &self; }
2012 };
2013 class ChannelUpdateInfo {
2014 private:
2015         LDKChannelUpdateInfo self;
2016 public:
2017         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
2018         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
2019         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
2020         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
2021         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
2022         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
2023         LDKChannelUpdateInfo* operator &() { return &self; }
2024         LDKChannelUpdateInfo* operator ->() { return &self; }
2025         const LDKChannelUpdateInfo* operator &() const { return &self; }
2026         const LDKChannelUpdateInfo* operator ->() const { return &self; }
2027 };
2028 class ChannelInfo {
2029 private:
2030         LDKChannelInfo self;
2031 public:
2032         ChannelInfo(const ChannelInfo&) = delete;
2033         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2034         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2035         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2036         ~ChannelInfo() { ChannelInfo_free(self); }
2037         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2038         LDKChannelInfo* operator &() { return &self; }
2039         LDKChannelInfo* operator ->() { return &self; }
2040         const LDKChannelInfo* operator &() const { return &self; }
2041         const LDKChannelInfo* operator ->() const { return &self; }
2042 };
2043 class DirectedChannelInfo {
2044 private:
2045         LDKDirectedChannelInfo self;
2046 public:
2047         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
2048         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
2049         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
2050         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
2051         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
2052         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
2053         LDKDirectedChannelInfo* operator &() { return &self; }
2054         LDKDirectedChannelInfo* operator ->() { return &self; }
2055         const LDKDirectedChannelInfo* operator &() const { return &self; }
2056         const LDKDirectedChannelInfo* operator ->() const { return &self; }
2057 };
2058 class EffectiveCapacity {
2059 private:
2060         LDKEffectiveCapacity self;
2061 public:
2062         EffectiveCapacity(const EffectiveCapacity&) = delete;
2063         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
2064         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
2065         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
2066         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
2067         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
2068         LDKEffectiveCapacity* operator &() { return &self; }
2069         LDKEffectiveCapacity* operator ->() { return &self; }
2070         const LDKEffectiveCapacity* operator &() const { return &self; }
2071         const LDKEffectiveCapacity* operator ->() const { return &self; }
2072 };
2073 class RoutingFees {
2074 private:
2075         LDKRoutingFees self;
2076 public:
2077         RoutingFees(const RoutingFees&) = delete;
2078         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2079         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2080         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2081         ~RoutingFees() { RoutingFees_free(self); }
2082         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2083         LDKRoutingFees* operator &() { return &self; }
2084         LDKRoutingFees* operator ->() { return &self; }
2085         const LDKRoutingFees* operator &() const { return &self; }
2086         const LDKRoutingFees* operator ->() const { return &self; }
2087 };
2088 class NodeAnnouncementInfo {
2089 private:
2090         LDKNodeAnnouncementInfo self;
2091 public:
2092         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2093         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2094         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2095         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2096         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2097         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2098         LDKNodeAnnouncementInfo* operator &() { return &self; }
2099         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2100         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2101         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2102 };
2103 class NodeAlias {
2104 private:
2105         LDKNodeAlias self;
2106 public:
2107         NodeAlias(const NodeAlias&) = delete;
2108         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
2109         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
2110         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
2111         ~NodeAlias() { NodeAlias_free(self); }
2112         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
2113         LDKNodeAlias* operator &() { return &self; }
2114         LDKNodeAlias* operator ->() { return &self; }
2115         const LDKNodeAlias* operator &() const { return &self; }
2116         const LDKNodeAlias* operator ->() const { return &self; }
2117 };
2118 class NodeInfo {
2119 private:
2120         LDKNodeInfo self;
2121 public:
2122         NodeInfo(const NodeInfo&) = delete;
2123         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2124         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2125         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2126         ~NodeInfo() { NodeInfo_free(self); }
2127         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2128         LDKNodeInfo* operator &() { return &self; }
2129         LDKNodeInfo* operator ->() { return &self; }
2130         const LDKNodeInfo* operator &() const { return &self; }
2131         const LDKNodeInfo* operator ->() const { return &self; }
2132 };
2133 class DelayedPaymentOutputDescriptor {
2134 private:
2135         LDKDelayedPaymentOutputDescriptor self;
2136 public:
2137         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
2138         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
2139         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
2140         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
2141         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
2142         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
2143         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
2144         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
2145         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
2146         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
2147 };
2148 class StaticPaymentOutputDescriptor {
2149 private:
2150         LDKStaticPaymentOutputDescriptor self;
2151 public:
2152         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
2153         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
2154         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
2155         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
2156         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
2157         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
2158         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
2159         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
2160         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
2161         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
2162 };
2163 class SpendableOutputDescriptor {
2164 private:
2165         LDKSpendableOutputDescriptor self;
2166 public:
2167         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
2168         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
2169         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
2170         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
2171         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
2172         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
2173         LDKSpendableOutputDescriptor* operator &() { return &self; }
2174         LDKSpendableOutputDescriptor* operator ->() { return &self; }
2175         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
2176         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
2177 };
2178 class ChannelSigner {
2179 private:
2180         LDKChannelSigner self;
2181 public:
2182         ChannelSigner(const ChannelSigner&) = delete;
2183         ChannelSigner(ChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelSigner)); }
2184         ChannelSigner(LDKChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelSigner)); }
2185         operator LDKChannelSigner() && { LDKChannelSigner res = self; memset(&self, 0, sizeof(LDKChannelSigner)); return res; }
2186         ~ChannelSigner() { ChannelSigner_free(self); }
2187         ChannelSigner& operator=(ChannelSigner&& o) { ChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(ChannelSigner)); return *this; }
2188         LDKChannelSigner* operator &() { return &self; }
2189         LDKChannelSigner* operator ->() { return &self; }
2190         const LDKChannelSigner* operator &() const { return &self; }
2191         const LDKChannelSigner* operator ->() const { return &self; }
2192         /**
2193          *  Gets the per-commitment point for a specific commitment number
2194          * 
2195          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
2196          */
2197         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
2198         /**
2199          *  Gets the commitment secret for a specific commitment number as part of the revocation process
2200          * 
2201          *  An external signer implementation should error here if the commitment was already signed
2202          *  and should refuse to sign it in the future.
2203          * 
2204          *  May be called more than once for the same index.
2205          * 
2206          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
2207          */
2208         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
2209         /**
2210          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
2211          * 
2212          *  This is required in order for the signer to make sure that releasing a commitment
2213          *  secret won't leave us without a broadcastable holder transaction.
2214          *  Policy checks should be implemented in this function, including checking the amount
2215          *  sent to us and checking the HTLCs.
2216          * 
2217          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
2218          *  A validating signer should ensure that an HTLC output is removed only when the matching
2219          *  preimage is provided, or when the value to holder is restored.
2220          * 
2221          *  Note that all the relevant preimages will be provided, but there may also be additional
2222          *  irrelevant or duplicate preimages.
2223          */
2224         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
2225         /**
2226          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
2227          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
2228          *  [`EcdsaChannelSigner`] object uniquely and lookup or re-derive its keys.
2229          */
2230         inline LDKThirtyTwoBytes channel_keys_id();
2231         /**
2232          *  Set the counterparty static channel data, including basepoints,
2233          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint.
2234          * 
2235          *  This data is static, and will never change for a channel once set. For a given [`ChannelSigner`]
2236          *  instance, LDK will call this method exactly once - either immediately after construction
2237          *  (not including if done via [`SignerProvider::read_chan_signer`]) or when the funding
2238          *  information has been generated.
2239          * 
2240          *  channel_parameters.is_populated() MUST be true.
2241          */
2242         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
2243 };
2244 class EcdsaChannelSigner {
2245 private:
2246         LDKEcdsaChannelSigner self;
2247 public:
2248         EcdsaChannelSigner(const EcdsaChannelSigner&) = delete;
2249         EcdsaChannelSigner(EcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(EcdsaChannelSigner)); }
2250         EcdsaChannelSigner(LDKEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEcdsaChannelSigner)); }
2251         operator LDKEcdsaChannelSigner() && { LDKEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKEcdsaChannelSigner)); return res; }
2252         ~EcdsaChannelSigner() { EcdsaChannelSigner_free(self); }
2253         EcdsaChannelSigner& operator=(EcdsaChannelSigner&& o) { EcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(EcdsaChannelSigner)); return *this; }
2254         LDKEcdsaChannelSigner* operator &() { return &self; }
2255         LDKEcdsaChannelSigner* operator ->() { return &self; }
2256         const LDKEcdsaChannelSigner* operator &() const { return &self; }
2257         const LDKEcdsaChannelSigner* operator ->() const { return &self; }
2258         /**
2259          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
2260          * 
2261          *  Note that if signing fails or is rejected, the channel will be force-closed.
2262          * 
2263          *  Policy checks should be implemented in this function, including checking the amount
2264          *  sent to us and checking the HTLCs.
2265          * 
2266          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
2267          *  A validating signer should ensure that an HTLC output is removed only when the matching
2268          *  preimage is provided, or when the value to holder is restored.
2269          * 
2270          *  Note that all the relevant preimages will be provided, but there may also be additional
2271          *  irrelevant or duplicate preimages.
2272          */
2273         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
2274         /**
2275          *  Validate the counterparty's revocation.
2276          * 
2277          *  This is required in order for the signer to make sure that the state has moved
2278          *  forward and it is safe to sign the next counterparty commitment.
2279          */
2280         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
2281         /**
2282          *  Creates a signature for a holder's commitment transaction and its claiming HTLC transactions.
2283          * 
2284          *  This will be called
2285          *  - with a non-revoked `commitment_tx`.
2286          *  - with the latest `commitment_tx` when we initiate a force-close.
2287          *  - with the previous `commitment_tx`, just to get claiming HTLC
2288          *    signatures, if we are reacting to a [`ChannelMonitor`]
2289          *    [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
2290          *    that decided to broadcast before it had been updated to the latest `commitment_tx`.
2291          * 
2292          *  This may be called multiple times for the same transaction.
2293          * 
2294          *  An external signer implementation should check that the commitment has not been revoked.
2295          * 
2296          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2297          */
2298         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
2299         /**
2300          *  Create a signature for the given input in a transaction spending an HTLC transaction output
2301          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
2302          * 
2303          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2304          *  similar, but only a signature for the input at index `input` should be signed for here.
2305          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2306          *  to an upcoming timelock expiration.
2307          * 
2308          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
2309          * 
2310          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2311          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2312          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
2313          *  so).
2314          */
2315         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]);
2316         /**
2317          *  Create a signature for the given input in a transaction spending a commitment transaction
2318          *  HTLC output when our counterparty broadcasts an old state.
2319          * 
2320          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2321          *  similar, but only a signature for the input at index `input` should be signed for here.
2322          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2323          *  to an upcoming timelock expiration.
2324          * 
2325          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
2326          *  signature.
2327          * 
2328          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2329          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2330          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
2331          *  so).
2332          * 
2333          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
2334          *  (which is committed to in the BIP 143 signatures).
2335          */
2336         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);
2337         /**
2338          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
2339          *  transaction, either offered or received.
2340          * 
2341          *  Such a transaction may claim multiples offered outputs at same time if we know the
2342          *  preimage for each when we create it, but only the input at index `input` should be
2343          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
2344          *  needed with regards to an upcoming timelock expiration.
2345          * 
2346          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
2347          *  outputs.
2348          * 
2349          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
2350          * 
2351          *  `per_commitment_point` is the dynamic point corresponding to the channel state
2352          *  detected onchain. It has been generated by our counterparty and is used to derive
2353          *  channel state keys, which are then included in the witness script and committed to in the
2354          *  BIP 143 signature.
2355          */
2356         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);
2357         /**
2358          *  Create a signature for a (proposed) closing transaction.
2359          * 
2360          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
2361          *  chosen to forgo their output as dust.
2362          */
2363         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
2364         /**
2365          *  Computes the signature for a commitment transaction's anchor output used as an
2366          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
2367          */
2368         inline LDK::CResult_SignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
2369         /**
2370          *  Signs a channel announcement message with our funding key proving it comes from one of the
2371          *  channel participants.
2372          * 
2373          *  Channel announcements also require a signature from each node's network key. Our node
2374          *  signature is computed through [`NodeSigner::sign_gossip_message`].
2375          * 
2376          *  Note that if this fails or is rejected, the channel will not be publicly announced and
2377          *  our counterparty may (though likely will not) close the channel on us for violating the
2378          *  protocol.
2379          */
2380         inline LDK::CResult_SignatureNoneZ sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
2381 };
2382 class WriteableEcdsaChannelSigner {
2383 private:
2384         LDKWriteableEcdsaChannelSigner self;
2385 public:
2386         WriteableEcdsaChannelSigner(const WriteableEcdsaChannelSigner&) = delete;
2387         WriteableEcdsaChannelSigner(WriteableEcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); }
2388         WriteableEcdsaChannelSigner(LDKWriteableEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); }
2389         operator LDKWriteableEcdsaChannelSigner() && { LDKWriteableEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); return res; }
2390         ~WriteableEcdsaChannelSigner() { WriteableEcdsaChannelSigner_free(self); }
2391         WriteableEcdsaChannelSigner& operator=(WriteableEcdsaChannelSigner&& o) { WriteableEcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); return *this; }
2392         LDKWriteableEcdsaChannelSigner* operator &() { return &self; }
2393         LDKWriteableEcdsaChannelSigner* operator ->() { return &self; }
2394         const LDKWriteableEcdsaChannelSigner* operator &() const { return &self; }
2395         const LDKWriteableEcdsaChannelSigner* operator ->() const { return &self; }
2396 };
2397 class Recipient {
2398 private:
2399         LDKRecipient self;
2400 public:
2401         Recipient(const Recipient&) = delete;
2402         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
2403         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
2404         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
2405         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
2406         LDKRecipient* operator &() { return &self; }
2407         LDKRecipient* operator ->() { return &self; }
2408         const LDKRecipient* operator &() const { return &self; }
2409         const LDKRecipient* operator ->() const { return &self; }
2410 };
2411 class EntropySource {
2412 private:
2413         LDKEntropySource self;
2414 public:
2415         EntropySource(const EntropySource&) = delete;
2416         EntropySource(EntropySource&& o) : self(o.self) { memset(&o, 0, sizeof(EntropySource)); }
2417         EntropySource(LDKEntropySource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEntropySource)); }
2418         operator LDKEntropySource() && { LDKEntropySource res = self; memset(&self, 0, sizeof(LDKEntropySource)); return res; }
2419         ~EntropySource() { EntropySource_free(self); }
2420         EntropySource& operator=(EntropySource&& o) { EntropySource_free(self); self = o.self; memset(&o, 0, sizeof(EntropySource)); return *this; }
2421         LDKEntropySource* operator &() { return &self; }
2422         LDKEntropySource* operator ->() { return &self; }
2423         const LDKEntropySource* operator &() const { return &self; }
2424         const LDKEntropySource* operator ->() const { return &self; }
2425         /**
2426          *  Gets a unique, cryptographically-secure, random 32-byte value. This method must return a
2427          *  different value each time it is called.
2428          */
2429         inline LDKThirtyTwoBytes get_secure_random_bytes();
2430 };
2431 class NodeSigner {
2432 private:
2433         LDKNodeSigner self;
2434 public:
2435         NodeSigner(const NodeSigner&) = delete;
2436         NodeSigner(NodeSigner&& o) : self(o.self) { memset(&o, 0, sizeof(NodeSigner)); }
2437         NodeSigner(LDKNodeSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeSigner)); }
2438         operator LDKNodeSigner() && { LDKNodeSigner res = self; memset(&self, 0, sizeof(LDKNodeSigner)); return res; }
2439         ~NodeSigner() { NodeSigner_free(self); }
2440         NodeSigner& operator=(NodeSigner&& o) { NodeSigner_free(self); self = o.self; memset(&o, 0, sizeof(NodeSigner)); return *this; }
2441         LDKNodeSigner* operator &() { return &self; }
2442         LDKNodeSigner* operator ->() { return &self; }
2443         const LDKNodeSigner* operator &() const { return &self; }
2444         const LDKNodeSigner* operator ->() const { return &self; }
2445         /**
2446          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
2447          * 
2448          *  If the implementor of this trait supports [phantom node payments], then every node that is
2449          *  intended to be included in the phantom invoice route hints must return the same value from
2450          *  this method.
2451          * 
2452          *  This method must return the same value each time it is called.
2453          * 
2454          *  [phantom node payments]: PhantomKeysManager
2455          */
2456         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
2457         /**
2458          *  Get node id based on the provided [`Recipient`].
2459          * 
2460          *  This method must return the same value each time it is called with a given [`Recipient`]
2461          *  parameter.
2462          * 
2463          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2464          */
2465         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
2466         /**
2467          *  Gets the ECDH shared secret of our node secret and `other_key`, multiplying by `tweak` if
2468          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
2469          *  secret, though this is less efficient.
2470          * 
2471          *  Note that if this fails while attempting to forward an HTLC, LDK will panic. The error
2472          *  should be resolved to allow LDK to resume forwarding HTLCs.
2473          * 
2474          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2475          */
2476         inline LDK::CResult_SharedSecretNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
2477         /**
2478          *  Sign an invoice.
2479          * 
2480          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
2481          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
2482          *  blindly signing the hash.
2483          * 
2484          *  The `hrp_bytes` are ASCII bytes, while the `invoice_data` is base32.
2485          * 
2486          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
2487          * 
2488          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2489          */
2490         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient);
2491         /**
2492          *  Sign a gossip message.
2493          * 
2494          *  Note that if this fails, LDK may panic and the message will not be broadcast to the network
2495          *  or a possible channel counterparty. If LDK panics, the error should be resolved to allow the
2496          *  message to be broadcast, as otherwise it may prevent one from receiving funds over the
2497          *  corresponding channel.
2498          */
2499         inline LDK::CResult_SignatureNoneZ sign_gossip_message(struct LDKUnsignedGossipMessage msg);
2500 };
2501 class SignerProvider {
2502 private:
2503         LDKSignerProvider self;
2504 public:
2505         SignerProvider(const SignerProvider&) = delete;
2506         SignerProvider(SignerProvider&& o) : self(o.self) { memset(&o, 0, sizeof(SignerProvider)); }
2507         SignerProvider(LDKSignerProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignerProvider)); }
2508         operator LDKSignerProvider() && { LDKSignerProvider res = self; memset(&self, 0, sizeof(LDKSignerProvider)); return res; }
2509         ~SignerProvider() { SignerProvider_free(self); }
2510         SignerProvider& operator=(SignerProvider&& o) { SignerProvider_free(self); self = o.self; memset(&o, 0, sizeof(SignerProvider)); return *this; }
2511         LDKSignerProvider* operator &() { return &self; }
2512         LDKSignerProvider* operator ->() { return &self; }
2513         const LDKSignerProvider* operator &() const { return &self; }
2514         const LDKSignerProvider* operator ->() const { return &self; }
2515         /**
2516          *  Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through
2517          *  [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
2518          *  implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
2519          *  `channel_keys_id`.
2520          * 
2521          *  This method must return a different value each time it is called.
2522          */
2523         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
2524         /**
2525          *  Derives the private key material backing a `Signer`.
2526          * 
2527          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
2528          *  [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
2529          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
2530          *  [`ChannelSigner::channel_keys_id`].
2531          */
2532         inline LDK::WriteableEcdsaChannelSigner derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
2533         /**
2534          *  Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
2535          *  This is only called during deserialization of other objects which contain
2536          *  [`WriteableEcdsaChannelSigner`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
2537          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
2538          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
2539          *  you've read all of the provided bytes to ensure no corruption occurred.
2540          * 
2541          *  This method is slowly being phased out -- it will only be called when reading objects
2542          *  written by LDK versions prior to 0.0.113.
2543          * 
2544          *  [`Signer`]: Self::Signer
2545          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2546          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2547          */
2548         inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
2549         /**
2550          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
2551          * 
2552          *  This method should return a different value each time it is called, to avoid linking
2553          *  on-chain funds across channels as controlled to the same user.
2554          */
2555         inline LDK::CVec_u8Z get_destination_script();
2556         /**
2557          *  Get a script pubkey which we will send funds to when closing a channel.
2558          * 
2559          *  This method should return a different value each time it is called, to avoid linking
2560          *  on-chain funds across channels as controlled to the same user.
2561          */
2562         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
2563 };
2564 class InMemorySigner {
2565 private:
2566         LDKInMemorySigner self;
2567 public:
2568         InMemorySigner(const InMemorySigner&) = delete;
2569         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
2570         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
2571         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
2572         ~InMemorySigner() { InMemorySigner_free(self); }
2573         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
2574         LDKInMemorySigner* operator &() { return &self; }
2575         LDKInMemorySigner* operator ->() { return &self; }
2576         const LDKInMemorySigner* operator &() const { return &self; }
2577         const LDKInMemorySigner* operator ->() const { return &self; }
2578 };
2579 class KeysManager {
2580 private:
2581         LDKKeysManager self;
2582 public:
2583         KeysManager(const KeysManager&) = delete;
2584         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
2585         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
2586         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
2587         ~KeysManager() { KeysManager_free(self); }
2588         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
2589         LDKKeysManager* operator &() { return &self; }
2590         LDKKeysManager* operator ->() { return &self; }
2591         const LDKKeysManager* operator &() const { return &self; }
2592         const LDKKeysManager* operator ->() const { return &self; }
2593 };
2594 class PhantomKeysManager {
2595 private:
2596         LDKPhantomKeysManager self;
2597 public:
2598         PhantomKeysManager(const PhantomKeysManager&) = delete;
2599         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
2600         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
2601         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
2602         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
2603         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
2604         LDKPhantomKeysManager* operator &() { return &self; }
2605         LDKPhantomKeysManager* operator ->() { return &self; }
2606         const LDKPhantomKeysManager* operator &() const { return &self; }
2607         const LDKPhantomKeysManager* operator ->() const { return &self; }
2608 };
2609 class FilesystemPersister {
2610 private:
2611         LDKFilesystemPersister self;
2612 public:
2613         FilesystemPersister(const FilesystemPersister&) = delete;
2614         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
2615         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
2616         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
2617         ~FilesystemPersister() { FilesystemPersister_free(self); }
2618         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
2619         LDKFilesystemPersister* operator &() { return &self; }
2620         LDKFilesystemPersister* operator ->() { return &self; }
2621         const LDKFilesystemPersister* operator &() const { return &self; }
2622         const LDKFilesystemPersister* operator ->() const { return &self; }
2623 };
2624 class FailureCode {
2625 private:
2626         LDKFailureCode self;
2627 public:
2628         FailureCode(const FailureCode&) = delete;
2629         FailureCode(FailureCode&& o) : self(o.self) { memset(&o, 0, sizeof(FailureCode)); }
2630         FailureCode(LDKFailureCode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFailureCode)); }
2631         operator LDKFailureCode() && { LDKFailureCode res = self; memset(&self, 0, sizeof(LDKFailureCode)); return res; }
2632         FailureCode& operator=(FailureCode&& o) { self = o.self; memset(&o, 0, sizeof(FailureCode)); return *this; }
2633         LDKFailureCode* operator &() { return &self; }
2634         LDKFailureCode* operator ->() { return &self; }
2635         const LDKFailureCode* operator &() const { return &self; }
2636         const LDKFailureCode* operator ->() const { return &self; }
2637 };
2638 class ChannelManager {
2639 private:
2640         LDKChannelManager self;
2641 public:
2642         ChannelManager(const ChannelManager&) = delete;
2643         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2644         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2645         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2646         ~ChannelManager() { ChannelManager_free(self); }
2647         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2648         LDKChannelManager* operator &() { return &self; }
2649         LDKChannelManager* operator ->() { return &self; }
2650         const LDKChannelManager* operator &() const { return &self; }
2651         const LDKChannelManager* operator ->() const { return &self; }
2652 };
2653 class ChainParameters {
2654 private:
2655         LDKChainParameters self;
2656 public:
2657         ChainParameters(const ChainParameters&) = delete;
2658         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2659         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2660         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2661         ~ChainParameters() { ChainParameters_free(self); }
2662         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2663         LDKChainParameters* operator &() { return &self; }
2664         LDKChainParameters* operator ->() { return &self; }
2665         const LDKChainParameters* operator &() const { return &self; }
2666         const LDKChainParameters* operator ->() const { return &self; }
2667 };
2668 class CounterpartyForwardingInfo {
2669 private:
2670         LDKCounterpartyForwardingInfo self;
2671 public:
2672         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2673         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2674         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2675         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2676         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2677         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2678         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2679         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2680         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2681         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2682 };
2683 class ChannelCounterparty {
2684 private:
2685         LDKChannelCounterparty self;
2686 public:
2687         ChannelCounterparty(const ChannelCounterparty&) = delete;
2688         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2689         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2690         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2691         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2692         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2693         LDKChannelCounterparty* operator &() { return &self; }
2694         LDKChannelCounterparty* operator ->() { return &self; }
2695         const LDKChannelCounterparty* operator &() const { return &self; }
2696         const LDKChannelCounterparty* operator ->() const { return &self; }
2697 };
2698 class ChannelDetails {
2699 private:
2700         LDKChannelDetails self;
2701 public:
2702         ChannelDetails(const ChannelDetails&) = delete;
2703         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2704         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2705         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2706         ~ChannelDetails() { ChannelDetails_free(self); }
2707         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2708         LDKChannelDetails* operator &() { return &self; }
2709         LDKChannelDetails* operator ->() { return &self; }
2710         const LDKChannelDetails* operator &() const { return &self; }
2711         const LDKChannelDetails* operator ->() const { return &self; }
2712 };
2713 class RecentPaymentDetails {
2714 private:
2715         LDKRecentPaymentDetails self;
2716 public:
2717         RecentPaymentDetails(const RecentPaymentDetails&) = delete;
2718         RecentPaymentDetails(RecentPaymentDetails&& o) : self(o.self) { memset(&o, 0, sizeof(RecentPaymentDetails)); }
2719         RecentPaymentDetails(LDKRecentPaymentDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecentPaymentDetails)); }
2720         operator LDKRecentPaymentDetails() && { LDKRecentPaymentDetails res = self; memset(&self, 0, sizeof(LDKRecentPaymentDetails)); return res; }
2721         ~RecentPaymentDetails() { RecentPaymentDetails_free(self); }
2722         RecentPaymentDetails& operator=(RecentPaymentDetails&& o) { RecentPaymentDetails_free(self); self = o.self; memset(&o, 0, sizeof(RecentPaymentDetails)); return *this; }
2723         LDKRecentPaymentDetails* operator &() { return &self; }
2724         LDKRecentPaymentDetails* operator ->() { return &self; }
2725         const LDKRecentPaymentDetails* operator &() const { return &self; }
2726         const LDKRecentPaymentDetails* operator ->() const { return &self; }
2727 };
2728 class PhantomRouteHints {
2729 private:
2730         LDKPhantomRouteHints self;
2731 public:
2732         PhantomRouteHints(const PhantomRouteHints&) = delete;
2733         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2734         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2735         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2736         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2737         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2738         LDKPhantomRouteHints* operator &() { return &self; }
2739         LDKPhantomRouteHints* operator ->() { return &self; }
2740         const LDKPhantomRouteHints* operator &() const { return &self; }
2741         const LDKPhantomRouteHints* operator ->() const { return &self; }
2742 };
2743 class ChannelManagerReadArgs {
2744 private:
2745         LDKChannelManagerReadArgs self;
2746 public:
2747         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2748         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2749         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2750         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2751         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2752         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2753         LDKChannelManagerReadArgs* operator &() { return &self; }
2754         LDKChannelManagerReadArgs* operator ->() { return &self; }
2755         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2756         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2757 };
2758 class ChannelHandshakeConfig {
2759 private:
2760         LDKChannelHandshakeConfig self;
2761 public:
2762         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2763         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2764         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2765         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2766         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2767         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2768         LDKChannelHandshakeConfig* operator &() { return &self; }
2769         LDKChannelHandshakeConfig* operator ->() { return &self; }
2770         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2771         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2772 };
2773 class ChannelHandshakeLimits {
2774 private:
2775         LDKChannelHandshakeLimits self;
2776 public:
2777         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2778         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2779         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2780         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2781         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2782         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2783         LDKChannelHandshakeLimits* operator &() { return &self; }
2784         LDKChannelHandshakeLimits* operator ->() { return &self; }
2785         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2786         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2787 };
2788 class ChannelConfig {
2789 private:
2790         LDKChannelConfig self;
2791 public:
2792         ChannelConfig(const ChannelConfig&) = delete;
2793         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2794         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2795         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2796         ~ChannelConfig() { ChannelConfig_free(self); }
2797         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2798         LDKChannelConfig* operator &() { return &self; }
2799         LDKChannelConfig* operator ->() { return &self; }
2800         const LDKChannelConfig* operator &() const { return &self; }
2801         const LDKChannelConfig* operator ->() const { return &self; }
2802 };
2803 class UserConfig {
2804 private:
2805         LDKUserConfig self;
2806 public:
2807         UserConfig(const UserConfig&) = delete;
2808         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2809         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2810         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2811         ~UserConfig() { UserConfig_free(self); }
2812         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2813         LDKUserConfig* operator &() { return &self; }
2814         LDKUserConfig* operator ->() { return &self; }
2815         const LDKUserConfig* operator &() const { return &self; }
2816         const LDKUserConfig* operator ->() const { return &self; }
2817 };
2818 class APIError {
2819 private:
2820         LDKAPIError self;
2821 public:
2822         APIError(const APIError&) = delete;
2823         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2824         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2825         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2826         ~APIError() { APIError_free(self); }
2827         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2828         LDKAPIError* operator &() { return &self; }
2829         LDKAPIError* operator ->() { return &self; }
2830         const LDKAPIError* operator &() const { return &self; }
2831         const LDKAPIError* operator ->() const { return &self; }
2832 };
2833 class BigSize {
2834 private:
2835         LDKBigSize self;
2836 public:
2837         BigSize(const BigSize&) = delete;
2838         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2839         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2840         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2841         ~BigSize() { BigSize_free(self); }
2842         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2843         LDKBigSize* operator &() { return &self; }
2844         LDKBigSize* operator ->() { return &self; }
2845         const LDKBigSize* operator &() const { return &self; }
2846         const LDKBigSize* operator ->() const { return &self; }
2847 };
2848 class Hostname {
2849 private:
2850         LDKHostname self;
2851 public:
2852         Hostname(const Hostname&) = delete;
2853         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
2854         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
2855         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
2856         ~Hostname() { Hostname_free(self); }
2857         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
2858         LDKHostname* operator &() { return &self; }
2859         LDKHostname* operator ->() { return &self; }
2860         const LDKHostname* operator &() const { return &self; }
2861         const LDKHostname* operator ->() const { return &self; }
2862 };
2863 class UntrustedString {
2864 private:
2865         LDKUntrustedString self;
2866 public:
2867         UntrustedString(const UntrustedString&) = delete;
2868         UntrustedString(UntrustedString&& o) : self(o.self) { memset(&o, 0, sizeof(UntrustedString)); }
2869         UntrustedString(LDKUntrustedString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUntrustedString)); }
2870         operator LDKUntrustedString() && { LDKUntrustedString res = self; memset(&self, 0, sizeof(LDKUntrustedString)); return res; }
2871         ~UntrustedString() { UntrustedString_free(self); }
2872         UntrustedString& operator=(UntrustedString&& o) { UntrustedString_free(self); self = o.self; memset(&o, 0, sizeof(UntrustedString)); return *this; }
2873         LDKUntrustedString* operator &() { return &self; }
2874         LDKUntrustedString* operator ->() { return &self; }
2875         const LDKUntrustedString* operator &() const { return &self; }
2876         const LDKUntrustedString* operator ->() const { return &self; }
2877 };
2878 class PrintableString {
2879 private:
2880         LDKPrintableString self;
2881 public:
2882         PrintableString(const PrintableString&) = delete;
2883         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
2884         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
2885         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
2886         ~PrintableString() { PrintableString_free(self); }
2887         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
2888         LDKPrintableString* operator &() { return &self; }
2889         LDKPrintableString* operator ->() { return &self; }
2890         const LDKPrintableString* operator &() const { return &self; }
2891         const LDKPrintableString* operator ->() const { return &self; }
2892 };
2893 class OutPoint {
2894 private:
2895         LDKOutPoint self;
2896 public:
2897         OutPoint(const OutPoint&) = delete;
2898         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2899         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2900         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2901         ~OutPoint() { OutPoint_free(self); }
2902         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2903         LDKOutPoint* operator &() { return &self; }
2904         LDKOutPoint* operator ->() { return &self; }
2905         const LDKOutPoint* operator &() const { return &self; }
2906         const LDKOutPoint* operator ->() const { return &self; }
2907 };
2908 class CustomMessageReader {
2909 private:
2910         LDKCustomMessageReader self;
2911 public:
2912         CustomMessageReader(const CustomMessageReader&) = delete;
2913         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2914         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2915         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2916         ~CustomMessageReader() { CustomMessageReader_free(self); }
2917         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2918         LDKCustomMessageReader* operator &() { return &self; }
2919         LDKCustomMessageReader* operator ->() { return &self; }
2920         const LDKCustomMessageReader* operator &() const { return &self; }
2921         const LDKCustomMessageReader* operator ->() const { return &self; }
2922         /**
2923          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2924          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2925          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2926          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2927          */
2928         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2929 };
2930 class Type {
2931 private:
2932         LDKType self;
2933 public:
2934         Type(const Type&) = delete;
2935         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2936         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2937         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2938         ~Type() { Type_free(self); }
2939         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2940         LDKType* operator &() { return &self; }
2941         LDKType* operator ->() { return &self; }
2942         const LDKType* operator &() const { return &self; }
2943         const LDKType* operator ->() const { return &self; }
2944         /**
2945          *  Returns the type identifying the message payload.
2946          */
2947         inline uint16_t type_id();
2948         /**
2949          * Return a human-readable "debug" string describing this object
2950          */
2951         inline LDK::Str debug_str();
2952 };
2953 class PaymentError {
2954 private:
2955         LDKPaymentError self;
2956 public:
2957         PaymentError(const PaymentError&) = delete;
2958         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2959         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2960         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2961         ~PaymentError() { PaymentError_free(self); }
2962         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2963         LDKPaymentError* operator &() { return &self; }
2964         LDKPaymentError* operator ->() { return &self; }
2965         const LDKPaymentError* operator &() const { return &self; }
2966         const LDKPaymentError* operator ->() const { return &self; }
2967 };
2968 class ChannelMonitorUpdate {
2969 private:
2970         LDKChannelMonitorUpdate self;
2971 public:
2972         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2973         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2974         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2975         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2976         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2977         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2978         LDKChannelMonitorUpdate* operator &() { return &self; }
2979         LDKChannelMonitorUpdate* operator ->() { return &self; }
2980         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2981         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2982 };
2983 class MonitorEvent {
2984 private:
2985         LDKMonitorEvent self;
2986 public:
2987         MonitorEvent(const MonitorEvent&) = delete;
2988         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2989         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2990         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2991         ~MonitorEvent() { MonitorEvent_free(self); }
2992         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2993         LDKMonitorEvent* operator &() { return &self; }
2994         LDKMonitorEvent* operator ->() { return &self; }
2995         const LDKMonitorEvent* operator &() const { return &self; }
2996         const LDKMonitorEvent* operator ->() const { return &self; }
2997 };
2998 class HTLCUpdate {
2999 private:
3000         LDKHTLCUpdate self;
3001 public:
3002         HTLCUpdate(const HTLCUpdate&) = delete;
3003         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
3004         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
3005         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
3006         ~HTLCUpdate() { HTLCUpdate_free(self); }
3007         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
3008         LDKHTLCUpdate* operator &() { return &self; }
3009         LDKHTLCUpdate* operator ->() { return &self; }
3010         const LDKHTLCUpdate* operator &() const { return &self; }
3011         const LDKHTLCUpdate* operator ->() const { return &self; }
3012 };
3013 class Balance {
3014 private:
3015         LDKBalance self;
3016 public:
3017         Balance(const Balance&) = delete;
3018         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
3019         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
3020         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
3021         ~Balance() { Balance_free(self); }
3022         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
3023         LDKBalance* operator &() { return &self; }
3024         LDKBalance* operator ->() { return &self; }
3025         const LDKBalance* operator &() const { return &self; }
3026         const LDKBalance* operator ->() const { return &self; }
3027 };
3028 class ChannelMonitor {
3029 private:
3030         LDKChannelMonitor self;
3031 public:
3032         ChannelMonitor(const ChannelMonitor&) = delete;
3033         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
3034         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
3035         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
3036         ~ChannelMonitor() { ChannelMonitor_free(self); }
3037         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
3038         LDKChannelMonitor* operator &() { return &self; }
3039         LDKChannelMonitor* operator ->() { return &self; }
3040         const LDKChannelMonitor* operator &() const { return &self; }
3041         const LDKChannelMonitor* operator ->() const { return &self; }
3042 };
3043 class ExpandedKey {
3044 private:
3045         LDKExpandedKey self;
3046 public:
3047         ExpandedKey(const ExpandedKey&) = delete;
3048         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
3049         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
3050         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
3051         ~ExpandedKey() { ExpandedKey_free(self); }
3052         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
3053         LDKExpandedKey* operator &() { return &self; }
3054         LDKExpandedKey* operator ->() { return &self; }
3055         const LDKExpandedKey* operator &() const { return &self; }
3056         const LDKExpandedKey* operator ->() const { return &self; }
3057 };
3058 class CustomMessageHandler {
3059 private:
3060         LDKCustomMessageHandler self;
3061 public:
3062         CustomMessageHandler(const CustomMessageHandler&) = delete;
3063         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
3064         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
3065         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
3066         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
3067         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
3068         LDKCustomMessageHandler* operator &() { return &self; }
3069         LDKCustomMessageHandler* operator ->() { return &self; }
3070         const LDKCustomMessageHandler* operator &() const { return &self; }
3071         const LDKCustomMessageHandler* operator ->() const { return &self; }
3072         /**
3073          *  Handles the given message sent from `sender_node_id`, possibly producing messages for
3074          *  [`CustomMessageHandler::get_and_clear_pending_msg`] to return and thus for [`PeerManager`]
3075          *  to send.
3076          */
3077         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
3078         /**
3079          *  Returns the list of pending messages that were generated by the handler, clearing the list
3080          *  in the process. Each message is paired with the node id of the intended recipient. If no
3081          *  connection to the node exists, then the message is simply not sent.
3082          */
3083         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
3084 };
3085 class IgnoringMessageHandler {
3086 private:
3087         LDKIgnoringMessageHandler self;
3088 public:
3089         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
3090         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
3091         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
3092         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
3093         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
3094         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
3095         LDKIgnoringMessageHandler* operator &() { return &self; }
3096         LDKIgnoringMessageHandler* operator ->() { return &self; }
3097         const LDKIgnoringMessageHandler* operator &() const { return &self; }
3098         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
3099 };
3100 class ErroringMessageHandler {
3101 private:
3102         LDKErroringMessageHandler self;
3103 public:
3104         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
3105         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
3106         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
3107         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
3108         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
3109         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
3110         LDKErroringMessageHandler* operator &() { return &self; }
3111         LDKErroringMessageHandler* operator ->() { return &self; }
3112         const LDKErroringMessageHandler* operator &() const { return &self; }
3113         const LDKErroringMessageHandler* operator ->() const { return &self; }
3114 };
3115 class MessageHandler {
3116 private:
3117         LDKMessageHandler self;
3118 public:
3119         MessageHandler(const MessageHandler&) = delete;
3120         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
3121         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
3122         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
3123         ~MessageHandler() { MessageHandler_free(self); }
3124         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
3125         LDKMessageHandler* operator &() { return &self; }
3126         LDKMessageHandler* operator ->() { return &self; }
3127         const LDKMessageHandler* operator &() const { return &self; }
3128         const LDKMessageHandler* operator ->() const { return &self; }
3129 };
3130 class SocketDescriptor {
3131 private:
3132         LDKSocketDescriptor self;
3133 public:
3134         SocketDescriptor(const SocketDescriptor&) = delete;
3135         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
3136         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
3137         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
3138         ~SocketDescriptor() { SocketDescriptor_free(self); }
3139         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
3140         LDKSocketDescriptor* operator &() { return &self; }
3141         LDKSocketDescriptor* operator ->() { return &self; }
3142         const LDKSocketDescriptor* operator &() const { return &self; }
3143         const LDKSocketDescriptor* operator ->() const { return &self; }
3144         /**
3145          *  Attempts to send some data from the given slice to the peer.
3146          * 
3147          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
3148          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
3149          *  called and further write attempts may occur until that time.
3150          * 
3151          *  If the returned size is smaller than `data.len()`, a
3152          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
3153          *  written. Additionally, until a `send_data` event completes fully, no further
3154          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
3155          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
3156          *  until then.
3157          * 
3158          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
3159          *  (indicating that read events should be paused to prevent DoS in the send buffer),
3160          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
3161          *  `resume_read` of false carries no meaning, and should not cause any action.
3162          */
3163         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
3164         /**
3165          *  Disconnect the socket pointed to by this SocketDescriptor.
3166          * 
3167          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
3168          *  call (doing so is a noop).
3169          */
3170         inline void disconnect_socket();
3171         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
3172         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
3173         /**
3174          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
3175          * This is used, for example, for inclusion of this object in a hash map.
3176          */
3177         inline uint64_t hash();
3178 };
3179 class PeerHandleError {
3180 private:
3181         LDKPeerHandleError self;
3182 public:
3183         PeerHandleError(const PeerHandleError&) = delete;
3184         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
3185         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
3186         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
3187         ~PeerHandleError() { PeerHandleError_free(self); }
3188         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
3189         LDKPeerHandleError* operator &() { return &self; }
3190         LDKPeerHandleError* operator ->() { return &self; }
3191         const LDKPeerHandleError* operator &() const { return &self; }
3192         const LDKPeerHandleError* operator ->() const { return &self; }
3193 };
3194 class PeerManager {
3195 private:
3196         LDKPeerManager self;
3197 public:
3198         PeerManager(const PeerManager&) = delete;
3199         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
3200         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
3201         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
3202         ~PeerManager() { PeerManager_free(self); }
3203         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
3204         LDKPeerManager* operator &() { return &self; }
3205         LDKPeerManager* operator ->() { return &self; }
3206         const LDKPeerManager* operator &() const { return &self; }
3207         const LDKPeerManager* operator ->() const { return &self; }
3208 };
3209 class UtxoLookupError {
3210 private:
3211         LDKUtxoLookupError self;
3212 public:
3213         UtxoLookupError(const UtxoLookupError&) = delete;
3214         UtxoLookupError(UtxoLookupError&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookupError)); }
3215         UtxoLookupError(LDKUtxoLookupError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookupError)); }
3216         operator LDKUtxoLookupError() && { LDKUtxoLookupError res = self; memset(&self, 0, sizeof(LDKUtxoLookupError)); return res; }
3217         UtxoLookupError& operator=(UtxoLookupError&& o) { self = o.self; memset(&o, 0, sizeof(UtxoLookupError)); return *this; }
3218         LDKUtxoLookupError* operator &() { return &self; }
3219         LDKUtxoLookupError* operator ->() { return &self; }
3220         const LDKUtxoLookupError* operator &() const { return &self; }
3221         const LDKUtxoLookupError* operator ->() const { return &self; }
3222 };
3223 class UtxoResult {
3224 private:
3225         LDKUtxoResult self;
3226 public:
3227         UtxoResult(const UtxoResult&) = delete;
3228         UtxoResult(UtxoResult&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoResult)); }
3229         UtxoResult(LDKUtxoResult&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoResult)); }
3230         operator LDKUtxoResult() && { LDKUtxoResult res = self; memset(&self, 0, sizeof(LDKUtxoResult)); return res; }
3231         ~UtxoResult() { UtxoResult_free(self); }
3232         UtxoResult& operator=(UtxoResult&& o) { UtxoResult_free(self); self = o.self; memset(&o, 0, sizeof(UtxoResult)); return *this; }
3233         LDKUtxoResult* operator &() { return &self; }
3234         LDKUtxoResult* operator ->() { return &self; }
3235         const LDKUtxoResult* operator &() const { return &self; }
3236         const LDKUtxoResult* operator ->() const { return &self; }
3237 };
3238 class UtxoLookup {
3239 private:
3240         LDKUtxoLookup self;
3241 public:
3242         UtxoLookup(const UtxoLookup&) = delete;
3243         UtxoLookup(UtxoLookup&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookup)); }
3244         UtxoLookup(LDKUtxoLookup&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookup)); }
3245         operator LDKUtxoLookup() && { LDKUtxoLookup res = self; memset(&self, 0, sizeof(LDKUtxoLookup)); return res; }
3246         ~UtxoLookup() { UtxoLookup_free(self); }
3247         UtxoLookup& operator=(UtxoLookup&& o) { UtxoLookup_free(self); self = o.self; memset(&o, 0, sizeof(UtxoLookup)); return *this; }
3248         LDKUtxoLookup* operator &() { return &self; }
3249         LDKUtxoLookup* operator ->() { return &self; }
3250         const LDKUtxoLookup* operator &() const { return &self; }
3251         const LDKUtxoLookup* operator ->() const { return &self; }
3252         /**
3253          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
3254          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
3255          *  is unknown.
3256          * 
3257          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
3258          */
3259         inline LDK::UtxoResult get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
3260 };
3261 class UtxoFuture {
3262 private:
3263         LDKUtxoFuture self;
3264 public:
3265         UtxoFuture(const UtxoFuture&) = delete;
3266         UtxoFuture(UtxoFuture&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoFuture)); }
3267         UtxoFuture(LDKUtxoFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoFuture)); }
3268         operator LDKUtxoFuture() && { LDKUtxoFuture res = self; memset(&self, 0, sizeof(LDKUtxoFuture)); return res; }
3269         ~UtxoFuture() { UtxoFuture_free(self); }
3270         UtxoFuture& operator=(UtxoFuture&& o) { UtxoFuture_free(self); self = o.self; memset(&o, 0, sizeof(UtxoFuture)); return *this; }
3271         LDKUtxoFuture* operator &() { return &self; }
3272         LDKUtxoFuture* operator ->() { return &self; }
3273         const LDKUtxoFuture* operator &() const { return &self; }
3274         const LDKUtxoFuture* operator ->() const { return &self; }
3275 };
3276 class OnionMessenger {
3277 private:
3278         LDKOnionMessenger self;
3279 public:
3280         OnionMessenger(const OnionMessenger&) = delete;
3281         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
3282         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
3283         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
3284         ~OnionMessenger() { OnionMessenger_free(self); }
3285         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
3286         LDKOnionMessenger* operator &() { return &self; }
3287         LDKOnionMessenger* operator ->() { return &self; }
3288         const LDKOnionMessenger* operator &() const { return &self; }
3289         const LDKOnionMessenger* operator ->() const { return &self; }
3290 };
3291 class Destination {
3292 private:
3293         LDKDestination self;
3294 public:
3295         Destination(const Destination&) = delete;
3296         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
3297         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
3298         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
3299         ~Destination() { Destination_free(self); }
3300         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
3301         LDKDestination* operator &() { return &self; }
3302         LDKDestination* operator ->() { return &self; }
3303         const LDKDestination* operator &() const { return &self; }
3304         const LDKDestination* operator ->() const { return &self; }
3305 };
3306 class SendError {
3307 private:
3308         LDKSendError self;
3309 public:
3310         SendError(const SendError&) = delete;
3311         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
3312         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
3313         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
3314         ~SendError() { SendError_free(self); }
3315         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
3316         LDKSendError* operator &() { return &self; }
3317         LDKSendError* operator ->() { return &self; }
3318         const LDKSendError* operator &() const { return &self; }
3319         const LDKSendError* operator ->() const { return &self; }
3320 };
3321 class CustomOnionMessageHandler {
3322 private:
3323         LDKCustomOnionMessageHandler self;
3324 public:
3325         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
3326         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
3327         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
3328         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
3329         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
3330         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
3331         LDKCustomOnionMessageHandler* operator &() { return &self; }
3332         LDKCustomOnionMessageHandler* operator ->() { return &self; }
3333         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
3334         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
3335         /**
3336          *  Called with the custom message that was received.
3337          */
3338         inline void handle_custom_message(struct LDKCustomOnionMessageContents msg);
3339         /**
3340          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
3341          *  message type is unknown.
3342          */
3343         inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
3344 };
3345 class BlindedPath {
3346 private:
3347         LDKBlindedPath self;
3348 public:
3349         BlindedPath(const BlindedPath&) = delete;
3350         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
3351         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
3352         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
3353         ~BlindedPath() { BlindedPath_free(self); }
3354         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
3355         LDKBlindedPath* operator &() { return &self; }
3356         LDKBlindedPath* operator ->() { return &self; }
3357         const LDKBlindedPath* operator &() const { return &self; }
3358         const LDKBlindedPath* operator ->() const { return &self; }
3359 };
3360 class BlindedHop {
3361 private:
3362         LDKBlindedHop self;
3363 public:
3364         BlindedHop(const BlindedHop&) = delete;
3365         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
3366         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
3367         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
3368         ~BlindedHop() { BlindedHop_free(self); }
3369         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
3370         LDKBlindedHop* operator &() { return &self; }
3371         LDKBlindedHop* operator ->() { return &self; }
3372         const LDKBlindedHop* operator &() const { return &self; }
3373         const LDKBlindedHop* operator ->() const { return &self; }
3374 };
3375 class ParseError {
3376 private:
3377         LDKParseError self;
3378 public:
3379         ParseError(const ParseError&) = delete;
3380         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
3381         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
3382         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
3383         ~ParseError() { ParseError_free(self); }
3384         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
3385         LDKParseError* operator &() { return &self; }
3386         LDKParseError* operator ->() { return &self; }
3387         const LDKParseError* operator &() const { return &self; }
3388         const LDKParseError* operator ->() const { return &self; }
3389 };
3390 class ParseOrSemanticError {
3391 private:
3392         LDKParseOrSemanticError self;
3393 public:
3394         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
3395         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
3396         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
3397         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
3398         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
3399         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
3400         LDKParseOrSemanticError* operator &() { return &self; }
3401         LDKParseOrSemanticError* operator ->() { return &self; }
3402         const LDKParseOrSemanticError* operator &() const { return &self; }
3403         const LDKParseOrSemanticError* operator ->() const { return &self; }
3404 };
3405 class Invoice {
3406 private:
3407         LDKInvoice self;
3408 public:
3409         Invoice(const Invoice&) = delete;
3410         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
3411         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
3412         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
3413         ~Invoice() { Invoice_free(self); }
3414         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
3415         LDKInvoice* operator &() { return &self; }
3416         LDKInvoice* operator ->() { return &self; }
3417         const LDKInvoice* operator &() const { return &self; }
3418         const LDKInvoice* operator ->() const { return &self; }
3419 };
3420 class SignedRawInvoice {
3421 private:
3422         LDKSignedRawInvoice self;
3423 public:
3424         SignedRawInvoice(const SignedRawInvoice&) = delete;
3425         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
3426         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
3427         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
3428         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
3429         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
3430         LDKSignedRawInvoice* operator &() { return &self; }
3431         LDKSignedRawInvoice* operator ->() { return &self; }
3432         const LDKSignedRawInvoice* operator &() const { return &self; }
3433         const LDKSignedRawInvoice* operator ->() const { return &self; }
3434 };
3435 class RawInvoice {
3436 private:
3437         LDKRawInvoice self;
3438 public:
3439         RawInvoice(const RawInvoice&) = delete;
3440         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
3441         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
3442         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
3443         ~RawInvoice() { RawInvoice_free(self); }
3444         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
3445         LDKRawInvoice* operator &() { return &self; }
3446         LDKRawInvoice* operator ->() { return &self; }
3447         const LDKRawInvoice* operator &() const { return &self; }
3448         const LDKRawInvoice* operator ->() const { return &self; }
3449 };
3450 class RawDataPart {
3451 private:
3452         LDKRawDataPart self;
3453 public:
3454         RawDataPart(const RawDataPart&) = delete;
3455         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
3456         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
3457         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
3458         ~RawDataPart() { RawDataPart_free(self); }
3459         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
3460         LDKRawDataPart* operator &() { return &self; }
3461         LDKRawDataPart* operator ->() { return &self; }
3462         const LDKRawDataPart* operator &() const { return &self; }
3463         const LDKRawDataPart* operator ->() const { return &self; }
3464 };
3465 class PositiveTimestamp {
3466 private:
3467         LDKPositiveTimestamp self;
3468 public:
3469         PositiveTimestamp(const PositiveTimestamp&) = delete;
3470         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
3471         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
3472         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
3473         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
3474         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
3475         LDKPositiveTimestamp* operator &() { return &self; }
3476         LDKPositiveTimestamp* operator ->() { return &self; }
3477         const LDKPositiveTimestamp* operator &() const { return &self; }
3478         const LDKPositiveTimestamp* operator ->() const { return &self; }
3479 };
3480 class SiPrefix {
3481 private:
3482         LDKSiPrefix self;
3483 public:
3484         SiPrefix(const SiPrefix&) = delete;
3485         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
3486         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
3487         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
3488         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
3489         LDKSiPrefix* operator &() { return &self; }
3490         LDKSiPrefix* operator ->() { return &self; }
3491         const LDKSiPrefix* operator &() const { return &self; }
3492         const LDKSiPrefix* operator ->() const { return &self; }
3493 };
3494 class Currency {
3495 private:
3496         LDKCurrency self;
3497 public:
3498         Currency(const Currency&) = delete;
3499         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
3500         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
3501         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
3502         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
3503         LDKCurrency* operator &() { return &self; }
3504         LDKCurrency* operator ->() { return &self; }
3505         const LDKCurrency* operator &() const { return &self; }
3506         const LDKCurrency* operator ->() const { return &self; }
3507 };
3508 class Sha256 {
3509 private:
3510         LDKSha256 self;
3511 public:
3512         Sha256(const Sha256&) = delete;
3513         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
3514         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
3515         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
3516         ~Sha256() { Sha256_free(self); }
3517         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
3518         LDKSha256* operator &() { return &self; }
3519         LDKSha256* operator ->() { return &self; }
3520         const LDKSha256* operator &() const { return &self; }
3521         const LDKSha256* operator ->() const { return &self; }
3522 };
3523 class Description {
3524 private:
3525         LDKDescription self;
3526 public:
3527         Description(const Description&) = delete;
3528         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
3529         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
3530         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
3531         ~Description() { Description_free(self); }
3532         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
3533         LDKDescription* operator &() { return &self; }
3534         LDKDescription* operator ->() { return &self; }
3535         const LDKDescription* operator &() const { return &self; }
3536         const LDKDescription* operator ->() const { return &self; }
3537 };
3538 class PayeePubKey {
3539 private:
3540         LDKPayeePubKey self;
3541 public:
3542         PayeePubKey(const PayeePubKey&) = delete;
3543         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
3544         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
3545         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
3546         ~PayeePubKey() { PayeePubKey_free(self); }
3547         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
3548         LDKPayeePubKey* operator &() { return &self; }
3549         LDKPayeePubKey* operator ->() { return &self; }
3550         const LDKPayeePubKey* operator &() const { return &self; }
3551         const LDKPayeePubKey* operator ->() const { return &self; }
3552 };
3553 class ExpiryTime {
3554 private:
3555         LDKExpiryTime self;
3556 public:
3557         ExpiryTime(const ExpiryTime&) = delete;
3558         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
3559         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
3560         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
3561         ~ExpiryTime() { ExpiryTime_free(self); }
3562         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
3563         LDKExpiryTime* operator &() { return &self; }
3564         LDKExpiryTime* operator ->() { return &self; }
3565         const LDKExpiryTime* operator &() const { return &self; }
3566         const LDKExpiryTime* operator ->() const { return &self; }
3567 };
3568 class MinFinalCltvExpiryDelta {
3569 private:
3570         LDKMinFinalCltvExpiryDelta self;
3571 public:
3572         MinFinalCltvExpiryDelta(const MinFinalCltvExpiryDelta&) = delete;
3573         MinFinalCltvExpiryDelta(MinFinalCltvExpiryDelta&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); }
3574         MinFinalCltvExpiryDelta(LDKMinFinalCltvExpiryDelta&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); }
3575         operator LDKMinFinalCltvExpiryDelta() && { LDKMinFinalCltvExpiryDelta res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); return res; }
3576         ~MinFinalCltvExpiryDelta() { MinFinalCltvExpiryDelta_free(self); }
3577         MinFinalCltvExpiryDelta& operator=(MinFinalCltvExpiryDelta&& o) { MinFinalCltvExpiryDelta_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); return *this; }
3578         LDKMinFinalCltvExpiryDelta* operator &() { return &self; }
3579         LDKMinFinalCltvExpiryDelta* operator ->() { return &self; }
3580         const LDKMinFinalCltvExpiryDelta* operator &() const { return &self; }
3581         const LDKMinFinalCltvExpiryDelta* operator ->() const { return &self; }
3582 };
3583 class Fallback {
3584 private:
3585         LDKFallback self;
3586 public:
3587         Fallback(const Fallback&) = delete;
3588         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
3589         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
3590         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
3591         ~Fallback() { Fallback_free(self); }
3592         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
3593         LDKFallback* operator &() { return &self; }
3594         LDKFallback* operator ->() { return &self; }
3595         const LDKFallback* operator &() const { return &self; }
3596         const LDKFallback* operator ->() const { return &self; }
3597 };
3598 class InvoiceSignature {
3599 private:
3600         LDKInvoiceSignature self;
3601 public:
3602         InvoiceSignature(const InvoiceSignature&) = delete;
3603         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
3604         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
3605         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
3606         ~InvoiceSignature() { InvoiceSignature_free(self); }
3607         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
3608         LDKInvoiceSignature* operator &() { return &self; }
3609         LDKInvoiceSignature* operator ->() { return &self; }
3610         const LDKInvoiceSignature* operator &() const { return &self; }
3611         const LDKInvoiceSignature* operator ->() const { return &self; }
3612 };
3613 class PrivateRoute {
3614 private:
3615         LDKPrivateRoute self;
3616 public:
3617         PrivateRoute(const PrivateRoute&) = delete;
3618         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
3619         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
3620         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
3621         ~PrivateRoute() { PrivateRoute_free(self); }
3622         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
3623         LDKPrivateRoute* operator &() { return &self; }
3624         LDKPrivateRoute* operator ->() { return &self; }
3625         const LDKPrivateRoute* operator &() const { return &self; }
3626         const LDKPrivateRoute* operator ->() const { return &self; }
3627 };
3628 class CreationError {
3629 private:
3630         LDKCreationError self;
3631 public:
3632         CreationError(const CreationError&) = delete;
3633         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
3634         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
3635         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
3636         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
3637         LDKCreationError* operator &() { return &self; }
3638         LDKCreationError* operator ->() { return &self; }
3639         const LDKCreationError* operator &() const { return &self; }
3640         const LDKCreationError* operator ->() const { return &self; }
3641 };
3642 class SemanticError {
3643 private:
3644         LDKSemanticError self;
3645 public:
3646         SemanticError(const SemanticError&) = delete;
3647         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
3648         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
3649         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
3650         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
3651         LDKSemanticError* operator &() { return &self; }
3652         LDKSemanticError* operator ->() { return &self; }
3653         const LDKSemanticError* operator &() const { return &self; }
3654         const LDKSemanticError* operator ->() const { return &self; }
3655 };
3656 class SignOrCreationError {
3657 private:
3658         LDKSignOrCreationError self;
3659 public:
3660         SignOrCreationError(const SignOrCreationError&) = delete;
3661         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
3662         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
3663         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
3664         ~SignOrCreationError() { SignOrCreationError_free(self); }
3665         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
3666         LDKSignOrCreationError* operator &() { return &self; }
3667         LDKSignOrCreationError* operator ->() { return &self; }
3668         const LDKSignOrCreationError* operator &() const { return &self; }
3669         const LDKSignOrCreationError* operator ->() const { return &self; }
3670 };
3671 class Persister {
3672 private:
3673         LDKPersister self;
3674 public:
3675         Persister(const Persister&) = delete;
3676         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3677         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3678         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3679         ~Persister() { Persister_free(self); }
3680         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3681         LDKPersister* operator &() { return &self; }
3682         LDKPersister* operator ->() { return &self; }
3683         const LDKPersister* operator &() const { return &self; }
3684         const LDKPersister* operator ->() const { return &self; }
3685         /**
3686          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3687          */
3688         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3689         /**
3690          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3691          */
3692         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3693         /**
3694          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3695          */
3696         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3697 };
3698 class DecodeError {
3699 private:
3700         LDKDecodeError self;
3701 public:
3702         DecodeError(const DecodeError&) = delete;
3703         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3704         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3705         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3706         ~DecodeError() { DecodeError_free(self); }
3707         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3708         LDKDecodeError* operator &() { return &self; }
3709         LDKDecodeError* operator ->() { return &self; }
3710         const LDKDecodeError* operator &() const { return &self; }
3711         const LDKDecodeError* operator ->() const { return &self; }
3712 };
3713 class Init {
3714 private:
3715         LDKInit self;
3716 public:
3717         Init(const Init&) = delete;
3718         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3719         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3720         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3721         ~Init() { Init_free(self); }
3722         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3723         LDKInit* operator &() { return &self; }
3724         LDKInit* operator ->() { return &self; }
3725         const LDKInit* operator &() const { return &self; }
3726         const LDKInit* operator ->() const { return &self; }
3727 };
3728 class ErrorMessage {
3729 private:
3730         LDKErrorMessage self;
3731 public:
3732         ErrorMessage(const ErrorMessage&) = delete;
3733         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3734         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3735         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3736         ~ErrorMessage() { ErrorMessage_free(self); }
3737         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3738         LDKErrorMessage* operator &() { return &self; }
3739         LDKErrorMessage* operator ->() { return &self; }
3740         const LDKErrorMessage* operator &() const { return &self; }
3741         const LDKErrorMessage* operator ->() const { return &self; }
3742 };
3743 class WarningMessage {
3744 private:
3745         LDKWarningMessage self;
3746 public:
3747         WarningMessage(const WarningMessage&) = delete;
3748         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3749         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3750         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3751         ~WarningMessage() { WarningMessage_free(self); }
3752         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3753         LDKWarningMessage* operator &() { return &self; }
3754         LDKWarningMessage* operator ->() { return &self; }
3755         const LDKWarningMessage* operator &() const { return &self; }
3756         const LDKWarningMessage* operator ->() const { return &self; }
3757 };
3758 class Ping {
3759 private:
3760         LDKPing self;
3761 public:
3762         Ping(const Ping&) = delete;
3763         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3764         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3765         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3766         ~Ping() { Ping_free(self); }
3767         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3768         LDKPing* operator &() { return &self; }
3769         LDKPing* operator ->() { return &self; }
3770         const LDKPing* operator &() const { return &self; }
3771         const LDKPing* operator ->() const { return &self; }
3772 };
3773 class Pong {
3774 private:
3775         LDKPong self;
3776 public:
3777         Pong(const Pong&) = delete;
3778         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3779         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3780         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3781         ~Pong() { Pong_free(self); }
3782         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3783         LDKPong* operator &() { return &self; }
3784         LDKPong* operator ->() { return &self; }
3785         const LDKPong* operator &() const { return &self; }
3786         const LDKPong* operator ->() const { return &self; }
3787 };
3788 class OpenChannel {
3789 private:
3790         LDKOpenChannel self;
3791 public:
3792         OpenChannel(const OpenChannel&) = delete;
3793         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3794         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3795         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3796         ~OpenChannel() { OpenChannel_free(self); }
3797         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3798         LDKOpenChannel* operator &() { return &self; }
3799         LDKOpenChannel* operator ->() { return &self; }
3800         const LDKOpenChannel* operator &() const { return &self; }
3801         const LDKOpenChannel* operator ->() const { return &self; }
3802 };
3803 class AcceptChannel {
3804 private:
3805         LDKAcceptChannel self;
3806 public:
3807         AcceptChannel(const AcceptChannel&) = delete;
3808         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3809         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3810         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3811         ~AcceptChannel() { AcceptChannel_free(self); }
3812         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3813         LDKAcceptChannel* operator &() { return &self; }
3814         LDKAcceptChannel* operator ->() { return &self; }
3815         const LDKAcceptChannel* operator &() const { return &self; }
3816         const LDKAcceptChannel* operator ->() const { return &self; }
3817 };
3818 class FundingCreated {
3819 private:
3820         LDKFundingCreated self;
3821 public:
3822         FundingCreated(const FundingCreated&) = delete;
3823         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3824         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3825         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3826         ~FundingCreated() { FundingCreated_free(self); }
3827         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3828         LDKFundingCreated* operator &() { return &self; }
3829         LDKFundingCreated* operator ->() { return &self; }
3830         const LDKFundingCreated* operator &() const { return &self; }
3831         const LDKFundingCreated* operator ->() const { return &self; }
3832 };
3833 class FundingSigned {
3834 private:
3835         LDKFundingSigned self;
3836 public:
3837         FundingSigned(const FundingSigned&) = delete;
3838         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3839         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3840         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3841         ~FundingSigned() { FundingSigned_free(self); }
3842         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3843         LDKFundingSigned* operator &() { return &self; }
3844         LDKFundingSigned* operator ->() { return &self; }
3845         const LDKFundingSigned* operator &() const { return &self; }
3846         const LDKFundingSigned* operator ->() const { return &self; }
3847 };
3848 class ChannelReady {
3849 private:
3850         LDKChannelReady self;
3851 public:
3852         ChannelReady(const ChannelReady&) = delete;
3853         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3854         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3855         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3856         ~ChannelReady() { ChannelReady_free(self); }
3857         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3858         LDKChannelReady* operator &() { return &self; }
3859         LDKChannelReady* operator ->() { return &self; }
3860         const LDKChannelReady* operator &() const { return &self; }
3861         const LDKChannelReady* operator ->() const { return &self; }
3862 };
3863 class Shutdown {
3864 private:
3865         LDKShutdown self;
3866 public:
3867         Shutdown(const Shutdown&) = delete;
3868         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3869         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3870         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3871         ~Shutdown() { Shutdown_free(self); }
3872         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3873         LDKShutdown* operator &() { return &self; }
3874         LDKShutdown* operator ->() { return &self; }
3875         const LDKShutdown* operator &() const { return &self; }
3876         const LDKShutdown* operator ->() const { return &self; }
3877 };
3878 class ClosingSignedFeeRange {
3879 private:
3880         LDKClosingSignedFeeRange self;
3881 public:
3882         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3883         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3884         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3885         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3886         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3887         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3888         LDKClosingSignedFeeRange* operator &() { return &self; }
3889         LDKClosingSignedFeeRange* operator ->() { return &self; }
3890         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3891         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3892 };
3893 class ClosingSigned {
3894 private:
3895         LDKClosingSigned self;
3896 public:
3897         ClosingSigned(const ClosingSigned&) = delete;
3898         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3899         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3900         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3901         ~ClosingSigned() { ClosingSigned_free(self); }
3902         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3903         LDKClosingSigned* operator &() { return &self; }
3904         LDKClosingSigned* operator ->() { return &self; }
3905         const LDKClosingSigned* operator &() const { return &self; }
3906         const LDKClosingSigned* operator ->() const { return &self; }
3907 };
3908 class UpdateAddHTLC {
3909 private:
3910         LDKUpdateAddHTLC self;
3911 public:
3912         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3913         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3914         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3915         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3916         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3917         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3918         LDKUpdateAddHTLC* operator &() { return &self; }
3919         LDKUpdateAddHTLC* operator ->() { return &self; }
3920         const LDKUpdateAddHTLC* operator &() const { return &self; }
3921         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3922 };
3923 class OnionMessage {
3924 private:
3925         LDKOnionMessage self;
3926 public:
3927         OnionMessage(const OnionMessage&) = delete;
3928         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
3929         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
3930         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
3931         ~OnionMessage() { OnionMessage_free(self); }
3932         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
3933         LDKOnionMessage* operator &() { return &self; }
3934         LDKOnionMessage* operator ->() { return &self; }
3935         const LDKOnionMessage* operator &() const { return &self; }
3936         const LDKOnionMessage* operator ->() const { return &self; }
3937 };
3938 class UpdateFulfillHTLC {
3939 private:
3940         LDKUpdateFulfillHTLC self;
3941 public:
3942         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3943         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3944         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3945         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3946         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3947         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3948         LDKUpdateFulfillHTLC* operator &() { return &self; }
3949         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3950         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3951         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3952 };
3953 class UpdateFailHTLC {
3954 private:
3955         LDKUpdateFailHTLC self;
3956 public:
3957         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3958         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3959         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3960         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3961         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3962         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3963         LDKUpdateFailHTLC* operator &() { return &self; }
3964         LDKUpdateFailHTLC* operator ->() { return &self; }
3965         const LDKUpdateFailHTLC* operator &() const { return &self; }
3966         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3967 };
3968 class UpdateFailMalformedHTLC {
3969 private:
3970         LDKUpdateFailMalformedHTLC self;
3971 public:
3972         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3973         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3974         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3975         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3976         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3977         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3978         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3979         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3980         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3981         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3982 };
3983 class CommitmentSigned {
3984 private:
3985         LDKCommitmentSigned self;
3986 public:
3987         CommitmentSigned(const CommitmentSigned&) = delete;
3988         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3989         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3990         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3991         ~CommitmentSigned() { CommitmentSigned_free(self); }
3992         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3993         LDKCommitmentSigned* operator &() { return &self; }
3994         LDKCommitmentSigned* operator ->() { return &self; }
3995         const LDKCommitmentSigned* operator &() const { return &self; }
3996         const LDKCommitmentSigned* operator ->() const { return &self; }
3997 };
3998 class RevokeAndACK {
3999 private:
4000         LDKRevokeAndACK self;
4001 public:
4002         RevokeAndACK(const RevokeAndACK&) = delete;
4003         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
4004         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
4005         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
4006         ~RevokeAndACK() { RevokeAndACK_free(self); }
4007         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
4008         LDKRevokeAndACK* operator &() { return &self; }
4009         LDKRevokeAndACK* operator ->() { return &self; }
4010         const LDKRevokeAndACK* operator &() const { return &self; }
4011         const LDKRevokeAndACK* operator ->() const { return &self; }
4012 };
4013 class UpdateFee {
4014 private:
4015         LDKUpdateFee self;
4016 public:
4017         UpdateFee(const UpdateFee&) = delete;
4018         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
4019         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
4020         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
4021         ~UpdateFee() { UpdateFee_free(self); }
4022         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
4023         LDKUpdateFee* operator &() { return &self; }
4024         LDKUpdateFee* operator ->() { return &self; }
4025         const LDKUpdateFee* operator &() const { return &self; }
4026         const LDKUpdateFee* operator ->() const { return &self; }
4027 };
4028 class DataLossProtect {
4029 private:
4030         LDKDataLossProtect self;
4031 public:
4032         DataLossProtect(const DataLossProtect&) = delete;
4033         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
4034         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
4035         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
4036         ~DataLossProtect() { DataLossProtect_free(self); }
4037         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
4038         LDKDataLossProtect* operator &() { return &self; }
4039         LDKDataLossProtect* operator ->() { return &self; }
4040         const LDKDataLossProtect* operator &() const { return &self; }
4041         const LDKDataLossProtect* operator ->() const { return &self; }
4042 };
4043 class ChannelReestablish {
4044 private:
4045         LDKChannelReestablish self;
4046 public:
4047         ChannelReestablish(const ChannelReestablish&) = delete;
4048         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
4049         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
4050         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
4051         ~ChannelReestablish() { ChannelReestablish_free(self); }
4052         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
4053         LDKChannelReestablish* operator &() { return &self; }
4054         LDKChannelReestablish* operator ->() { return &self; }
4055         const LDKChannelReestablish* operator &() const { return &self; }
4056         const LDKChannelReestablish* operator ->() const { return &self; }
4057 };
4058 class AnnouncementSignatures {
4059 private:
4060         LDKAnnouncementSignatures self;
4061 public:
4062         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
4063         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
4064         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
4065         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
4066         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
4067         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
4068         LDKAnnouncementSignatures* operator &() { return &self; }
4069         LDKAnnouncementSignatures* operator ->() { return &self; }
4070         const LDKAnnouncementSignatures* operator &() const { return &self; }
4071         const LDKAnnouncementSignatures* operator ->() const { return &self; }
4072 };
4073 class NetAddress {
4074 private:
4075         LDKNetAddress self;
4076 public:
4077         NetAddress(const NetAddress&) = delete;
4078         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
4079         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
4080         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
4081         ~NetAddress() { NetAddress_free(self); }
4082         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
4083         LDKNetAddress* operator &() { return &self; }
4084         LDKNetAddress* operator ->() { return &self; }
4085         const LDKNetAddress* operator &() const { return &self; }
4086         const LDKNetAddress* operator ->() const { return &self; }
4087 };
4088 class UnsignedGossipMessage {
4089 private:
4090         LDKUnsignedGossipMessage self;
4091 public:
4092         UnsignedGossipMessage(const UnsignedGossipMessage&) = delete;
4093         UnsignedGossipMessage(UnsignedGossipMessage&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedGossipMessage)); }
4094         UnsignedGossipMessage(LDKUnsignedGossipMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedGossipMessage)); }
4095         operator LDKUnsignedGossipMessage() && { LDKUnsignedGossipMessage res = self; memset(&self, 0, sizeof(LDKUnsignedGossipMessage)); return res; }
4096         ~UnsignedGossipMessage() { UnsignedGossipMessage_free(self); }
4097         UnsignedGossipMessage& operator=(UnsignedGossipMessage&& o) { UnsignedGossipMessage_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedGossipMessage)); return *this; }
4098         LDKUnsignedGossipMessage* operator &() { return &self; }
4099         LDKUnsignedGossipMessage* operator ->() { return &self; }
4100         const LDKUnsignedGossipMessage* operator &() const { return &self; }
4101         const LDKUnsignedGossipMessage* operator ->() const { return &self; }
4102 };
4103 class UnsignedNodeAnnouncement {
4104 private:
4105         LDKUnsignedNodeAnnouncement self;
4106 public:
4107         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
4108         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
4109         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
4110         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
4111         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
4112         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
4113         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
4114         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
4115         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
4116         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
4117 };
4118 class NodeAnnouncement {
4119 private:
4120         LDKNodeAnnouncement self;
4121 public:
4122         NodeAnnouncement(const NodeAnnouncement&) = delete;
4123         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
4124         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
4125         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
4126         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
4127         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
4128         LDKNodeAnnouncement* operator &() { return &self; }
4129         LDKNodeAnnouncement* operator ->() { return &self; }
4130         const LDKNodeAnnouncement* operator &() const { return &self; }
4131         const LDKNodeAnnouncement* operator ->() const { return &self; }
4132 };
4133 class UnsignedChannelAnnouncement {
4134 private:
4135         LDKUnsignedChannelAnnouncement self;
4136 public:
4137         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
4138         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
4139         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
4140         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
4141         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
4142         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
4143         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
4144         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
4145         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
4146         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
4147 };
4148 class ChannelAnnouncement {
4149 private:
4150         LDKChannelAnnouncement self;
4151 public:
4152         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
4153         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
4154         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
4155         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
4156         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
4157         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
4158         LDKChannelAnnouncement* operator &() { return &self; }
4159         LDKChannelAnnouncement* operator ->() { return &self; }
4160         const LDKChannelAnnouncement* operator &() const { return &self; }
4161         const LDKChannelAnnouncement* operator ->() const { return &self; }
4162 };
4163 class UnsignedChannelUpdate {
4164 private:
4165         LDKUnsignedChannelUpdate self;
4166 public:
4167         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
4168         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
4169         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
4170         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
4171         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
4172         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
4173         LDKUnsignedChannelUpdate* operator &() { return &self; }
4174         LDKUnsignedChannelUpdate* operator ->() { return &self; }
4175         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
4176         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
4177 };
4178 class ChannelUpdate {
4179 private:
4180         LDKChannelUpdate self;
4181 public:
4182         ChannelUpdate(const ChannelUpdate&) = delete;
4183         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
4184         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
4185         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
4186         ~ChannelUpdate() { ChannelUpdate_free(self); }
4187         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
4188         LDKChannelUpdate* operator &() { return &self; }
4189         LDKChannelUpdate* operator ->() { return &self; }
4190         const LDKChannelUpdate* operator &() const { return &self; }
4191         const LDKChannelUpdate* operator ->() const { return &self; }
4192 };
4193 class QueryChannelRange {
4194 private:
4195         LDKQueryChannelRange self;
4196 public:
4197         QueryChannelRange(const QueryChannelRange&) = delete;
4198         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
4199         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
4200         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
4201         ~QueryChannelRange() { QueryChannelRange_free(self); }
4202         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
4203         LDKQueryChannelRange* operator &() { return &self; }
4204         LDKQueryChannelRange* operator ->() { return &self; }
4205         const LDKQueryChannelRange* operator &() const { return &self; }
4206         const LDKQueryChannelRange* operator ->() const { return &self; }
4207 };
4208 class ReplyChannelRange {
4209 private:
4210         LDKReplyChannelRange self;
4211 public:
4212         ReplyChannelRange(const ReplyChannelRange&) = delete;
4213         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
4214         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
4215         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
4216         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
4217         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
4218         LDKReplyChannelRange* operator &() { return &self; }
4219         LDKReplyChannelRange* operator ->() { return &self; }
4220         const LDKReplyChannelRange* operator &() const { return &self; }
4221         const LDKReplyChannelRange* operator ->() const { return &self; }
4222 };
4223 class QueryShortChannelIds {
4224 private:
4225         LDKQueryShortChannelIds self;
4226 public:
4227         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
4228         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
4229         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
4230         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
4231         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
4232         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
4233         LDKQueryShortChannelIds* operator &() { return &self; }
4234         LDKQueryShortChannelIds* operator ->() { return &self; }
4235         const LDKQueryShortChannelIds* operator &() const { return &self; }
4236         const LDKQueryShortChannelIds* operator ->() const { return &self; }
4237 };
4238 class ReplyShortChannelIdsEnd {
4239 private:
4240         LDKReplyShortChannelIdsEnd self;
4241 public:
4242         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
4243         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
4244         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
4245         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
4246         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
4247         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
4248         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
4249         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
4250         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
4251         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
4252 };
4253 class GossipTimestampFilter {
4254 private:
4255         LDKGossipTimestampFilter self;
4256 public:
4257         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
4258         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
4259         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
4260         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
4261         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
4262         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
4263         LDKGossipTimestampFilter* operator &() { return &self; }
4264         LDKGossipTimestampFilter* operator ->() { return &self; }
4265         const LDKGossipTimestampFilter* operator &() const { return &self; }
4266         const LDKGossipTimestampFilter* operator ->() const { return &self; }
4267 };
4268 class ErrorAction {
4269 private:
4270         LDKErrorAction self;
4271 public:
4272         ErrorAction(const ErrorAction&) = delete;
4273         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
4274         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
4275         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
4276         ~ErrorAction() { ErrorAction_free(self); }
4277         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
4278         LDKErrorAction* operator &() { return &self; }
4279         LDKErrorAction* operator ->() { return &self; }
4280         const LDKErrorAction* operator &() const { return &self; }
4281         const LDKErrorAction* operator ->() const { return &self; }
4282 };
4283 class LightningError {
4284 private:
4285         LDKLightningError self;
4286 public:
4287         LightningError(const LightningError&) = delete;
4288         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
4289         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
4290         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
4291         ~LightningError() { LightningError_free(self); }
4292         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
4293         LDKLightningError* operator &() { return &self; }
4294         LDKLightningError* operator ->() { return &self; }
4295         const LDKLightningError* operator &() const { return &self; }
4296         const LDKLightningError* operator ->() const { return &self; }
4297 };
4298 class CommitmentUpdate {
4299 private:
4300         LDKCommitmentUpdate self;
4301 public:
4302         CommitmentUpdate(const CommitmentUpdate&) = delete;
4303         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
4304         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
4305         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
4306         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
4307         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
4308         LDKCommitmentUpdate* operator &() { return &self; }
4309         LDKCommitmentUpdate* operator ->() { return &self; }
4310         const LDKCommitmentUpdate* operator &() const { return &self; }
4311         const LDKCommitmentUpdate* operator ->() const { return &self; }
4312 };
4313 class ChannelMessageHandler {
4314 private:
4315         LDKChannelMessageHandler self;
4316 public:
4317         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
4318         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
4319         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
4320         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
4321         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
4322         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
4323         LDKChannelMessageHandler* operator &() { return &self; }
4324         LDKChannelMessageHandler* operator ->() { return &self; }
4325         const LDKChannelMessageHandler* operator &() const { return &self; }
4326         const LDKChannelMessageHandler* operator ->() const { return &self; }
4327         /**
4328          *  Handle an incoming `open_channel` message from the given peer.
4329          */
4330         inline void handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg);
4331         /**
4332          *  Handle an incoming `accept_channel` message from the given peer.
4333          */
4334         inline void handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg);
4335         /**
4336          *  Handle an incoming `funding_created` message from the given peer.
4337          */
4338         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
4339         /**
4340          *  Handle an incoming `funding_signed` message from the given peer.
4341          */
4342         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
4343         /**
4344          *  Handle an incoming `channel_ready` message from the given peer.
4345          */
4346         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
4347         /**
4348          *  Handle an incoming `shutdown` message from the given peer.
4349          */
4350         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg);
4351         /**
4352          *  Handle an incoming `closing_signed` message from the given peer.
4353          */
4354         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
4355         /**
4356          *  Handle an incoming `update_add_htlc` message from the given peer.
4357          */
4358         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
4359         /**
4360          *  Handle an incoming `update_fulfill_htlc` message from the given peer.
4361          */
4362         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
4363         /**
4364          *  Handle an incoming `update_fail_htlc` message from the given peer.
4365          */
4366         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
4367         /**
4368          *  Handle an incoming `update_fail_malformed_htlc` message from the given peer.
4369          */
4370         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
4371         /**
4372          *  Handle an incoming `commitment_signed` message from the given peer.
4373          */
4374         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
4375         /**
4376          *  Handle an incoming `revoke_and_ack` message from the given peer.
4377          */
4378         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
4379         /**
4380          *  Handle an incoming `update_fee` message from the given peer.
4381          */
4382         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
4383         /**
4384          *  Handle an incoming `announcement_signatures` message from the given peer.
4385          */
4386         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
4387         /**
4388          *  Indicates a connection to the peer failed/an existing connection was lost.
4389          */
4390         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4391         /**
4392          *  Handle a peer reconnecting, possibly generating `channel_reestablish` message(s).
4393          * 
4394          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4395          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4396          *  message handlers may still wish to communicate with this peer.
4397          */
4398         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound);
4399         /**
4400          *  Handle an incoming `channel_reestablish` message from the given peer.
4401          */
4402         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
4403         /**
4404          *  Handle an incoming `channel_update` message from the given peer.
4405          */
4406         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
4407         /**
4408          *  Handle an incoming `error` message from the given peer.
4409          */
4410         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
4411         /**
4412          *  Gets the node feature flags which this handler itself supports. All available handlers are
4413          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4414          *  which are broadcasted in our [`NodeAnnouncement`] message.
4415          */
4416         inline LDK::NodeFeatures provided_node_features();
4417         /**
4418          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4419          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4420          *  which are sent in our [`Init`] message.
4421          * 
4422          *  Note that this method is called before [`Self::peer_connected`].
4423          */
4424         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4425 };
4426 class RoutingMessageHandler {
4427 private:
4428         LDKRoutingMessageHandler self;
4429 public:
4430         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
4431         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
4432         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
4433         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
4434         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
4435         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
4436         LDKRoutingMessageHandler* operator &() { return &self; }
4437         LDKRoutingMessageHandler* operator ->() { return &self; }
4438         const LDKRoutingMessageHandler* operator &() const { return &self; }
4439         const LDKRoutingMessageHandler* operator ->() const { return &self; }
4440         /**
4441          *  Handle an incoming `node_announcement` message, returning `true` if it should be forwarded on,
4442          *  `false` or returning an `Err` otherwise.
4443          */
4444         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
4445         /**
4446          *  Handle a `channel_announcement` message, returning `true` if it should be forwarded on, `false`
4447          *  or returning an `Err` otherwise.
4448          */
4449         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
4450         /**
4451          *  Handle an incoming `channel_update` message, returning true if it should be forwarded on,
4452          *  `false` or returning an `Err` otherwise.
4453          */
4454         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
4455         /**
4456          *  Gets channel announcements and updates required to dump our routing table to a remote node,
4457          *  starting at the `short_channel_id` indicated by `starting_point` and including announcements
4458          *  for a single channel.
4459          */
4460         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
4461         /**
4462          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4463          *  the node *after* the provided pubkey and including up to one announcement immediately
4464          *  higher (as defined by `<PublicKey as Ord>::cmp`) than `starting_point`.
4465          *  If `None` is provided for `starting_point`, we start at the first node.
4466          * 
4467          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4468          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4469          */
4470         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKNodeId starting_point);
4471         /**
4472          *  Called when a connection is established with a peer. This can be used to
4473          *  perform routing table synchronization using a strategy defined by the
4474          *  implementor.
4475          * 
4476          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4477          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4478          *  message handlers may still wish to communicate with this peer.
4479          */
4480         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4481         /**
4482          *  Handles the reply of a query we initiated to learn about channels
4483          *  for a given range of blocks. We can expect to receive one or more
4484          *  replies to a single query.
4485          */
4486         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4487         /**
4488          *  Handles the reply of a query we initiated asking for routing gossip
4489          *  messages for a list of channels. We should receive this message when
4490          *  a node has completed its best effort to send us the pertaining routing
4491          *  gossip messages.
4492          */
4493         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4494         /**
4495          *  Handles when a peer asks us to send a list of `short_channel_id`s
4496          *  for the requested range of blocks.
4497          */
4498         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4499         /**
4500          *  Handles when a peer asks us to send routing gossip messages for a
4501          *  list of `short_channel_id`s.
4502          */
4503         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4504         /**
4505          *  Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages
4506          *  pending some async action. While there is no guarantee of the rate of future messages, the
4507          *  caller should seek to reduce the rate of new gossip messages handled, especially
4508          *  [`ChannelAnnouncement`]s.
4509          */
4510         inline bool processing_queue_high();
4511         /**
4512          *  Gets the node feature flags which this handler itself supports. All available handlers are
4513          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4514          *  which are broadcasted in our [`NodeAnnouncement`] message.
4515          */
4516         inline LDK::NodeFeatures provided_node_features();
4517         /**
4518          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4519          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4520          *  which are sent in our [`Init`] message.
4521          * 
4522          *  Note that this method is called before [`Self::peer_connected`].
4523          */
4524         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4525 };
4526 class OnionMessageHandler {
4527 private:
4528         LDKOnionMessageHandler self;
4529 public:
4530         OnionMessageHandler(const OnionMessageHandler&) = delete;
4531         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
4532         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
4533         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
4534         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
4535         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
4536         LDKOnionMessageHandler* operator &() { return &self; }
4537         LDKOnionMessageHandler* operator ->() { return &self; }
4538         const LDKOnionMessageHandler* operator &() const { return &self; }
4539         const LDKOnionMessageHandler* operator ->() const { return &self; }
4540         /**
4541          *  Handle an incoming `onion_message` message from the given peer.
4542          */
4543         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
4544         /**
4545          *  Called when a connection is established with a peer. Can be used to track which peers
4546          *  advertise onion message support and are online.
4547          * 
4548          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4549          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4550          *  message handlers may still wish to communicate with this peer.
4551          */
4552         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4553         /**
4554          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
4555          *  drop and refuse to forward onion messages to this peer.
4556          */
4557         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4558         /**
4559          *  Gets the node feature flags which this handler itself supports. All available handlers are
4560          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4561          *  which are broadcasted in our [`NodeAnnouncement`] message.
4562          */
4563         inline LDK::NodeFeatures provided_node_features();
4564         /**
4565          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4566          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4567          *  which are sent in our [`Init`] message.
4568          * 
4569          *  Note that this method is called before [`Self::peer_connected`].
4570          */
4571         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4572 };
4573 class UnsignedInvoiceRequest {
4574 private:
4575         LDKUnsignedInvoiceRequest self;
4576 public:
4577         UnsignedInvoiceRequest(const UnsignedInvoiceRequest&) = delete;
4578         UnsignedInvoiceRequest(UnsignedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedInvoiceRequest)); }
4579         UnsignedInvoiceRequest(LDKUnsignedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedInvoiceRequest)); }
4580         operator LDKUnsignedInvoiceRequest() && { LDKUnsignedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKUnsignedInvoiceRequest)); return res; }
4581         ~UnsignedInvoiceRequest() { UnsignedInvoiceRequest_free(self); }
4582         UnsignedInvoiceRequest& operator=(UnsignedInvoiceRequest&& o) { UnsignedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedInvoiceRequest)); return *this; }
4583         LDKUnsignedInvoiceRequest* operator &() { return &self; }
4584         LDKUnsignedInvoiceRequest* operator ->() { return &self; }
4585         const LDKUnsignedInvoiceRequest* operator &() const { return &self; }
4586         const LDKUnsignedInvoiceRequest* operator ->() const { return &self; }
4587 };
4588 class InvoiceRequest {
4589 private:
4590         LDKInvoiceRequest self;
4591 public:
4592         InvoiceRequest(const InvoiceRequest&) = delete;
4593         InvoiceRequest(InvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequest)); }
4594         InvoiceRequest(LDKInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequest)); }
4595         operator LDKInvoiceRequest() && { LDKInvoiceRequest res = self; memset(&self, 0, sizeof(LDKInvoiceRequest)); return res; }
4596         ~InvoiceRequest() { InvoiceRequest_free(self); }
4597         InvoiceRequest& operator=(InvoiceRequest&& o) { InvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequest)); return *this; }
4598         LDKInvoiceRequest* operator &() { return &self; }
4599         LDKInvoiceRequest* operator ->() { return &self; }
4600         const LDKInvoiceRequest* operator &() const { return &self; }
4601         const LDKInvoiceRequest* operator ->() const { return &self; }
4602 };
4603 class Level {
4604 private:
4605         LDKLevel self;
4606 public:
4607         Level(const Level&) = delete;
4608         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
4609         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
4610         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
4611         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
4612         LDKLevel* operator &() { return &self; }
4613         LDKLevel* operator ->() { return &self; }
4614         const LDKLevel* operator &() const { return &self; }
4615         const LDKLevel* operator ->() const { return &self; }
4616 };
4617 class Record {
4618 private:
4619         LDKRecord self;
4620 public:
4621         Record(const Record&) = delete;
4622         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
4623         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
4624         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
4625         ~Record() { Record_free(self); }
4626         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
4627         LDKRecord* operator &() { return &self; }
4628         LDKRecord* operator ->() { return &self; }
4629         const LDKRecord* operator &() const { return &self; }
4630         const LDKRecord* operator ->() const { return &self; }
4631 };
4632 class Logger {
4633 private:
4634         LDKLogger self;
4635 public:
4636         Logger(const Logger&) = delete;
4637         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
4638         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
4639         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
4640         ~Logger() { Logger_free(self); }
4641         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
4642         LDKLogger* operator &() { return &self; }
4643         LDKLogger* operator ->() { return &self; }
4644         const LDKLogger* operator &() const { return &self; }
4645         const LDKLogger* operator ->() const { return &self; }
4646         /**
4647          *  Logs the `Record`
4648          */
4649         inline void log(const struct LDKRecord *NONNULL_PTR record);
4650 };
4651 class FutureCallback {
4652 private:
4653         LDKFutureCallback self;
4654 public:
4655         FutureCallback(const FutureCallback&) = delete;
4656         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
4657         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
4658         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
4659         ~FutureCallback() { FutureCallback_free(self); }
4660         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
4661         LDKFutureCallback* operator &() { return &self; }
4662         LDKFutureCallback* operator ->() { return &self; }
4663         const LDKFutureCallback* operator &() const { return &self; }
4664         const LDKFutureCallback* operator ->() const { return &self; }
4665         /**
4666          *  The method which is called.
4667          */
4668         inline void call();
4669 };
4670 class Future {
4671 private:
4672         LDKFuture self;
4673 public:
4674         Future(const Future&) = delete;
4675         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
4676         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
4677         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
4678         ~Future() { Future_free(self); }
4679         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
4680         LDKFuture* operator &() { return &self; }
4681         LDKFuture* operator ->() { return &self; }
4682         const LDKFuture* operator &() const { return &self; }
4683         const LDKFuture* operator ->() const { return &self; }
4684 };
4685 class Sleeper {
4686 private:
4687         LDKSleeper self;
4688 public:
4689         Sleeper(const Sleeper&) = delete;
4690         Sleeper(Sleeper&& o) : self(o.self) { memset(&o, 0, sizeof(Sleeper)); }
4691         Sleeper(LDKSleeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSleeper)); }
4692         operator LDKSleeper() && { LDKSleeper res = self; memset(&self, 0, sizeof(LDKSleeper)); return res; }
4693         ~Sleeper() { Sleeper_free(self); }
4694         Sleeper& operator=(Sleeper&& o) { Sleeper_free(self); self = o.self; memset(&o, 0, sizeof(Sleeper)); return *this; }
4695         LDKSleeper* operator &() { return &self; }
4696         LDKSleeper* operator ->() { return &self; }
4697         const LDKSleeper* operator &() const { return &self; }
4698         const LDKSleeper* operator ->() const { return &self; }
4699 };
4700 class MonitorUpdateId {
4701 private:
4702         LDKMonitorUpdateId self;
4703 public:
4704         MonitorUpdateId(const MonitorUpdateId&) = delete;
4705         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
4706         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
4707         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
4708         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
4709         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
4710         LDKMonitorUpdateId* operator &() { return &self; }
4711         LDKMonitorUpdateId* operator ->() { return &self; }
4712         const LDKMonitorUpdateId* operator &() const { return &self; }
4713         const LDKMonitorUpdateId* operator ->() const { return &self; }
4714 };
4715 class Persist {
4716 private:
4717         LDKPersist self;
4718 public:
4719         Persist(const Persist&) = delete;
4720         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
4721         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
4722         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
4723         ~Persist() { Persist_free(self); }
4724         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
4725         LDKPersist* operator &() { return &self; }
4726         LDKPersist* operator ->() { return &self; }
4727         const LDKPersist* operator &() const { return &self; }
4728         const LDKPersist* operator ->() const { return &self; }
4729         /**
4730          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
4731          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
4732          * 
4733          *  The data can be stored any way you want, but the identifier provided by LDK is the
4734          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
4735          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
4736          * 
4737          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4738          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4739          * 
4740          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
4741          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4742          * 
4743          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
4744          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4745          */
4746         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4747         /**
4748          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
4749          *  update.
4750          * 
4751          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
4752          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
4753          *  details.
4754          * 
4755          *  During blockchain synchronization operations, this may be called with no
4756          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
4757          *  Note that after the full [`ChannelMonitor`] is persisted any previous
4758          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
4759          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
4760          * 
4761          *  If an implementer chooses to persist the updates only, they need to make
4762          *  sure that all the updates are applied to the `ChannelMonitors` *before*
4763          *  the set of channel monitors is given to the `ChannelManager`
4764          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
4765          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
4766          *  persisted, then there is no need to persist individual updates.
4767          * 
4768          *  Note that there could be a performance tradeoff between persisting complete
4769          *  channel monitors on every update vs. persisting only updates and applying
4770          *  them in batches. The size of each monitor grows `O(number of state updates)`
4771          *  whereas updates are small and `O(1)`.
4772          * 
4773          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4774          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4775          * 
4776          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
4777          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
4778          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4779          * 
4780          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4781          * 
4782          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
4783          */
4784         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4785 };
4786 class LockedChannelMonitor {
4787 private:
4788         LDKLockedChannelMonitor self;
4789 public:
4790         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
4791         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
4792         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
4793         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
4794         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
4795         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
4796         LDKLockedChannelMonitor* operator &() { return &self; }
4797         LDKLockedChannelMonitor* operator ->() { return &self; }
4798         const LDKLockedChannelMonitor* operator &() const { return &self; }
4799         const LDKLockedChannelMonitor* operator ->() const { return &self; }
4800 };
4801 class ChainMonitor {
4802 private:
4803         LDKChainMonitor self;
4804 public:
4805         ChainMonitor(const ChainMonitor&) = delete;
4806         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
4807         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
4808         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
4809         ~ChainMonitor() { ChainMonitor_free(self); }
4810         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
4811         LDKChainMonitor* operator &() { return &self; }
4812         LDKChainMonitor* operator ->() { return &self; }
4813         const LDKChainMonitor* operator &() const { return &self; }
4814         const LDKChainMonitor* operator ->() const { return &self; }
4815 };
4816 class GraphSyncError {
4817 private:
4818         LDKGraphSyncError self;
4819 public:
4820         GraphSyncError(const GraphSyncError&) = delete;
4821         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
4822         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
4823         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
4824         ~GraphSyncError() { GraphSyncError_free(self); }
4825         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
4826         LDKGraphSyncError* operator &() { return &self; }
4827         LDKGraphSyncError* operator ->() { return &self; }
4828         const LDKGraphSyncError* operator &() const { return &self; }
4829         const LDKGraphSyncError* operator ->() const { return &self; }
4830 };
4831 class RapidGossipSync {
4832 private:
4833         LDKRapidGossipSync self;
4834 public:
4835         RapidGossipSync(const RapidGossipSync&) = delete;
4836         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
4837         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
4838         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
4839         ~RapidGossipSync() { RapidGossipSync_free(self); }
4840         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
4841         LDKRapidGossipSync* operator &() { return &self; }
4842         LDKRapidGossipSync* operator ->() { return &self; }
4843         const LDKRapidGossipSync* operator &() const { return &self; }
4844         const LDKRapidGossipSync* operator ->() const { return &self; }
4845 };
4846 class CResult_LockedChannelMonitorNoneZ {
4847 private:
4848         LDKCResult_LockedChannelMonitorNoneZ self;
4849 public:
4850         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
4851         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
4852         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
4853         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
4854         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
4855         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
4856         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
4857         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
4858         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
4859         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
4860 };
4861 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ {
4862 private:
4863         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ self;
4864 public:
4865         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(const CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&) = delete;
4866         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
4867         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
4868         operator LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ() && { LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); return res; }
4869         ~CVec_C2Tuple_BlindedPayInfoBlindedPathZZ() { CVec_C2Tuple_BlindedPayInfoBlindedPathZZ_free(self); }
4870         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ& operator=(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& o) { CVec_C2Tuple_BlindedPayInfoBlindedPathZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); return *this; }
4871         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() { return &self; }
4872         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() { return &self; }
4873         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() const { return &self; }
4874         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() const { return &self; }
4875 };
4876 class CResult_PhantomRouteHintsDecodeErrorZ {
4877 private:
4878         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
4879 public:
4880         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
4881         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
4882         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
4883         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
4884         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
4885         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
4886         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
4887         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
4888         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
4889         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
4890 };
4891 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
4892 private:
4893         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
4894 public:
4895         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
4896         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4897         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4898         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
4899         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
4900         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; }
4901         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
4902         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
4903         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
4904         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
4905 };
4906 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
4907 private:
4908         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
4909 public:
4910         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
4911         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4912         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)); }
4913         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
4914         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
4915         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; }
4916         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
4917         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
4918         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
4919         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
4920 };
4921 class CVec_C2Tuple_u32TxOutZZ {
4922 private:
4923         LDKCVec_C2Tuple_u32TxOutZZ self;
4924 public:
4925         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4926         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4927         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4928         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4929         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4930         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; }
4931         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4932         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4933         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4934         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4935 };
4936 class CResult_FundingCreatedDecodeErrorZ {
4937 private:
4938         LDKCResult_FundingCreatedDecodeErrorZ self;
4939 public:
4940         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4941         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4942         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4943         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4944         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4945         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4946         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4947         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4948         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4949         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4950 };
4951 class CResult_ChannelInfoDecodeErrorZ {
4952 private:
4953         LDKCResult_ChannelInfoDecodeErrorZ self;
4954 public:
4955         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4956         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4957         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4958         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4959         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4960         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4961         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4962         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4963         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4964         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4965 };
4966 class CResult_NoneSendErrorZ {
4967 private:
4968         LDKCResult_NoneSendErrorZ self;
4969 public:
4970         CResult_NoneSendErrorZ(const CResult_NoneSendErrorZ&) = delete;
4971         CResult_NoneSendErrorZ(CResult_NoneSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); }
4972         CResult_NoneSendErrorZ(LDKCResult_NoneSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSendErrorZ)); }
4973         operator LDKCResult_NoneSendErrorZ() && { LDKCResult_NoneSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSendErrorZ)); return res; }
4974         ~CResult_NoneSendErrorZ() { CResult_NoneSendErrorZ_free(self); }
4975         CResult_NoneSendErrorZ& operator=(CResult_NoneSendErrorZ&& o) { CResult_NoneSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); return *this; }
4976         LDKCResult_NoneSendErrorZ* operator &() { return &self; }
4977         LDKCResult_NoneSendErrorZ* operator ->() { return &self; }
4978         const LDKCResult_NoneSendErrorZ* operator &() const { return &self; }
4979         const LDKCResult_NoneSendErrorZ* operator ->() const { return &self; }
4980 };
4981 class CResult_CVec_u8ZPeerHandleErrorZ {
4982 private:
4983         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4984 public:
4985         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4986         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4987         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4988         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4989         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4990         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; }
4991         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4992         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4993         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4994         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4995 };
4996 class CResult_GossipTimestampFilterDecodeErrorZ {
4997 private:
4998         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4999 public:
5000         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
5001         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
5002         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
5003         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
5004         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
5005         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
5006         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
5007         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
5008         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
5009         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
5010 };
5011 class COption_NetworkUpdateZ {
5012 private:
5013         LDKCOption_NetworkUpdateZ self;
5014 public:
5015         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
5016         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
5017         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
5018         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
5019         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
5020         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
5021         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
5022         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
5023         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
5024         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
5025 };
5026 class COption_u64Z {
5027 private:
5028         LDKCOption_u64Z self;
5029 public:
5030         COption_u64Z(const COption_u64Z&) = delete;
5031         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
5032         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
5033         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
5034         ~COption_u64Z() { COption_u64Z_free(self); }
5035         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
5036         LDKCOption_u64Z* operator &() { return &self; }
5037         LDKCOption_u64Z* operator ->() { return &self; }
5038         const LDKCOption_u64Z* operator &() const { return &self; }
5039         const LDKCOption_u64Z* operator ->() const { return &self; }
5040 };
5041 class CResult_PaymentPreimageAPIErrorZ {
5042 private:
5043         LDKCResult_PaymentPreimageAPIErrorZ self;
5044 public:
5045         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
5046         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
5047         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
5048         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
5049         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
5050         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
5051         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
5052         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
5053         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
5054         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
5055 };
5056 class CResult_RouteHintDecodeErrorZ {
5057 private:
5058         LDKCResult_RouteHintDecodeErrorZ self;
5059 public:
5060         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
5061         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
5062         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
5063         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
5064         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
5065         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
5066         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
5067         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
5068         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
5069         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
5070 };
5071 class COption_FilterZ {
5072 private:
5073         LDKCOption_FilterZ self;
5074 public:
5075         COption_FilterZ(const COption_FilterZ&) = delete;
5076         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
5077         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
5078         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
5079         ~COption_FilterZ() { COption_FilterZ_free(self); }
5080         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
5081         LDKCOption_FilterZ* operator &() { return &self; }
5082         LDKCOption_FilterZ* operator ->() { return &self; }
5083         const LDKCOption_FilterZ* operator &() const { return &self; }
5084         const LDKCOption_FilterZ* operator ->() const { return &self; }
5085 };
5086 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5087 private:
5088         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5089 public:
5090         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5091         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5092         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5093         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5094         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5095         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; }
5096         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5097         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5098         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5099         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5100 };
5101 class CResult_COption_APIErrorZDecodeErrorZ {
5102 private:
5103         LDKCResult_COption_APIErrorZDecodeErrorZ self;
5104 public:
5105         CResult_COption_APIErrorZDecodeErrorZ(const CResult_COption_APIErrorZDecodeErrorZ&) = delete;
5106         CResult_COption_APIErrorZDecodeErrorZ(CResult_COption_APIErrorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); }
5107         CResult_COption_APIErrorZDecodeErrorZ(LDKCResult_COption_APIErrorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); }
5108         operator LDKCResult_COption_APIErrorZDecodeErrorZ() && { LDKCResult_COption_APIErrorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); return res; }
5109         ~CResult_COption_APIErrorZDecodeErrorZ() { CResult_COption_APIErrorZDecodeErrorZ_free(self); }
5110         CResult_COption_APIErrorZDecodeErrorZ& operator=(CResult_COption_APIErrorZDecodeErrorZ&& o) { CResult_COption_APIErrorZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); return *this; }
5111         LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() { return &self; }
5112         LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() { return &self; }
5113         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() const { return &self; }
5114         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() const { return &self; }
5115 };
5116 class CVec_UpdateAddHTLCZ {
5117 private:
5118         LDKCVec_UpdateAddHTLCZ self;
5119 public:
5120         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
5121         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
5122         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
5123         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
5124         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
5125         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
5126         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
5127         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
5128         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
5129         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
5130 };
5131 class CResult_CommitmentSignedDecodeErrorZ {
5132 private:
5133         LDKCResult_CommitmentSignedDecodeErrorZ self;
5134 public:
5135         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
5136         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
5137         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
5138         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
5139         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
5140         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
5141         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
5142         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
5143         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
5144         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
5145 };
5146 class COption_u32Z {
5147 private:
5148         LDKCOption_u32Z self;
5149 public:
5150         COption_u32Z(const COption_u32Z&) = delete;
5151         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
5152         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
5153         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
5154         ~COption_u32Z() { COption_u32Z_free(self); }
5155         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
5156         LDKCOption_u32Z* operator &() { return &self; }
5157         LDKCOption_u32Z* operator ->() { return &self; }
5158         const LDKCOption_u32Z* operator &() const { return &self; }
5159         const LDKCOption_u32Z* operator ->() const { return &self; }
5160 };
5161 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
5162 private:
5163         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
5164 public:
5165         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
5166         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
5167         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
5168         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
5169         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
5170         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5171         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5172         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5173         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5174         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5175 };
5176 class CVec_C2Tuple_TxidBlockHashZZ {
5177 private:
5178         LDKCVec_C2Tuple_TxidBlockHashZZ self;
5179 public:
5180         CVec_C2Tuple_TxidBlockHashZZ(const CVec_C2Tuple_TxidBlockHashZZ&) = delete;
5181         CVec_C2Tuple_TxidBlockHashZZ(CVec_C2Tuple_TxidBlockHashZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidBlockHashZZ)); }
5182         CVec_C2Tuple_TxidBlockHashZZ(LDKCVec_C2Tuple_TxidBlockHashZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); }
5183         operator LDKCVec_C2Tuple_TxidBlockHashZZ() && { LDKCVec_C2Tuple_TxidBlockHashZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); return res; }
5184         ~CVec_C2Tuple_TxidBlockHashZZ() { CVec_C2Tuple_TxidBlockHashZZ_free(self); }
5185         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; }
5186         LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() { return &self; }
5187         LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() { return &self; }
5188         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() const { return &self; }
5189         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() const { return &self; }
5190 };
5191 class CResult_CommitmentTransactionDecodeErrorZ {
5192 private:
5193         LDKCResult_CommitmentTransactionDecodeErrorZ self;
5194 public:
5195         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
5196         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
5197         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
5198         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
5199         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
5200         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
5201         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5202         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5203         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5204         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5205 };
5206 class CResult_TransactionNoneZ {
5207 private:
5208         LDKCResult_TransactionNoneZ self;
5209 public:
5210         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
5211         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
5212         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
5213         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
5214         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
5215         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
5216         LDKCResult_TransactionNoneZ* operator &() { return &self; }
5217         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
5218         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
5219         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
5220 };
5221 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
5222 private:
5223         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
5224 public:
5225         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
5226         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
5227         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
5228         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
5229         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
5230         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
5231         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
5232         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
5233         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
5234         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
5235 };
5236 class COption_DurationZ {
5237 private:
5238         LDKCOption_DurationZ self;
5239 public:
5240         COption_DurationZ(const COption_DurationZ&) = delete;
5241         COption_DurationZ(COption_DurationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_DurationZ)); }
5242         COption_DurationZ(LDKCOption_DurationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_DurationZ)); }
5243         operator LDKCOption_DurationZ() && { LDKCOption_DurationZ res = self; memset(&self, 0, sizeof(LDKCOption_DurationZ)); return res; }
5244         ~COption_DurationZ() { COption_DurationZ_free(self); }
5245         COption_DurationZ& operator=(COption_DurationZ&& o) { COption_DurationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_DurationZ)); return *this; }
5246         LDKCOption_DurationZ* operator &() { return &self; }
5247         LDKCOption_DurationZ* operator ->() { return &self; }
5248         const LDKCOption_DurationZ* operator &() const { return &self; }
5249         const LDKCOption_DurationZ* operator ->() const { return &self; }
5250 };
5251 class CResult_ErrorMessageDecodeErrorZ {
5252 private:
5253         LDKCResult_ErrorMessageDecodeErrorZ self;
5254 public:
5255         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
5256         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
5257         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
5258         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
5259         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
5260         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
5261         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
5262         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
5263         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
5264         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
5265 };
5266 class CResult_OpenChannelDecodeErrorZ {
5267 private:
5268         LDKCResult_OpenChannelDecodeErrorZ self;
5269 public:
5270         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
5271         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
5272         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
5273         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
5274         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
5275         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
5276         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
5277         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
5278         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
5279         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
5280 };
5281 class COption_APIErrorZ {
5282 private:
5283         LDKCOption_APIErrorZ self;
5284 public:
5285         COption_APIErrorZ(const COption_APIErrorZ&) = delete;
5286         COption_APIErrorZ(COption_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_APIErrorZ)); }
5287         COption_APIErrorZ(LDKCOption_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_APIErrorZ)); }
5288         operator LDKCOption_APIErrorZ() && { LDKCOption_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCOption_APIErrorZ)); return res; }
5289         ~COption_APIErrorZ() { COption_APIErrorZ_free(self); }
5290         COption_APIErrorZ& operator=(COption_APIErrorZ&& o) { COption_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_APIErrorZ)); return *this; }
5291         LDKCOption_APIErrorZ* operator &() { return &self; }
5292         LDKCOption_APIErrorZ* operator ->() { return &self; }
5293         const LDKCOption_APIErrorZ* operator &() const { return &self; }
5294         const LDKCOption_APIErrorZ* operator ->() const { return &self; }
5295 };
5296 class CResult_QueryChannelRangeDecodeErrorZ {
5297 private:
5298         LDKCResult_QueryChannelRangeDecodeErrorZ self;
5299 public:
5300         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
5301         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
5302         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
5303         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
5304         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
5305         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
5306         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
5307         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
5308         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
5309         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
5310 };
5311 class CVec_TransactionZ {
5312 private:
5313         LDKCVec_TransactionZ self;
5314 public:
5315         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
5316         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
5317         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
5318         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
5319         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
5320         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
5321         LDKCVec_TransactionZ* operator &() { return &self; }
5322         LDKCVec_TransactionZ* operator ->() { return &self; }
5323         const LDKCVec_TransactionZ* operator &() const { return &self; }
5324         const LDKCVec_TransactionZ* operator ->() const { return &self; }
5325 };
5326 class C2Tuple_TxidBlockHashZ {
5327 private:
5328         LDKC2Tuple_TxidBlockHashZ self;
5329 public:
5330         C2Tuple_TxidBlockHashZ(const C2Tuple_TxidBlockHashZ&) = delete;
5331         C2Tuple_TxidBlockHashZ(C2Tuple_TxidBlockHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); }
5332         C2Tuple_TxidBlockHashZ(LDKC2Tuple_TxidBlockHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); }
5333         operator LDKC2Tuple_TxidBlockHashZ() && { LDKC2Tuple_TxidBlockHashZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); return res; }
5334         ~C2Tuple_TxidBlockHashZ() { C2Tuple_TxidBlockHashZ_free(self); }
5335         C2Tuple_TxidBlockHashZ& operator=(C2Tuple_TxidBlockHashZ&& o) { C2Tuple_TxidBlockHashZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); return *this; }
5336         LDKC2Tuple_TxidBlockHashZ* operator &() { return &self; }
5337         LDKC2Tuple_TxidBlockHashZ* operator ->() { return &self; }
5338         const LDKC2Tuple_TxidBlockHashZ* operator &() const { return &self; }
5339         const LDKC2Tuple_TxidBlockHashZ* operator ->() const { return &self; }
5340 };
5341 class CResult_ChannelFeaturesDecodeErrorZ {
5342 private:
5343         LDKCResult_ChannelFeaturesDecodeErrorZ self;
5344 public:
5345         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
5346         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
5347         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
5348         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
5349         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
5350         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
5351         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
5352         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
5353         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
5354         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
5355 };
5356 class CResult_ChannelReadyDecodeErrorZ {
5357 private:
5358         LDKCResult_ChannelReadyDecodeErrorZ self;
5359 public:
5360         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
5361         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
5362         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
5363         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
5364         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
5365         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
5366         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
5367         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
5368         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
5369         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
5370 };
5371 class CResult_UpdateFeeDecodeErrorZ {
5372 private:
5373         LDKCResult_UpdateFeeDecodeErrorZ self;
5374 public:
5375         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
5376         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
5377         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
5378         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
5379         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
5380         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
5381         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
5382         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
5383         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
5384         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
5385 };
5386 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
5387 private:
5388         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
5389 public:
5390         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
5391         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5392         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5393         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
5394         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
5395         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
5396         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
5397         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
5398         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
5399         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
5400 };
5401 class CResult_boolLightningErrorZ {
5402 private:
5403         LDKCResult_boolLightningErrorZ self;
5404 public:
5405         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
5406         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
5407         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
5408         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
5409         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
5410         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
5411         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
5412         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
5413         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
5414         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
5415 };
5416 class CResult_NodeIdDecodeErrorZ {
5417 private:
5418         LDKCResult_NodeIdDecodeErrorZ self;
5419 public:
5420         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
5421         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
5422         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
5423         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
5424         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
5425         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
5426         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
5427         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
5428         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
5429         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
5430 };
5431 class COption_HTLCDestinationZ {
5432 private:
5433         LDKCOption_HTLCDestinationZ self;
5434 public:
5435         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
5436         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
5437         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
5438         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
5439         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
5440         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
5441         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
5442         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
5443         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
5444         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
5445 };
5446 class C2Tuple_BlockHashChannelMonitorZ {
5447 private:
5448         LDKC2Tuple_BlockHashChannelMonitorZ self;
5449 public:
5450         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
5451         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
5452         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
5453         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
5454         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
5455         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
5456         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
5457         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
5458         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
5459         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
5460 };
5461 class CResult_ShutdownScriptInvalidShutdownScriptZ {
5462 private:
5463         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
5464 public:
5465         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
5466         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
5467         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
5468         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
5469         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
5470         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
5471         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
5472         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
5473         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
5474         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
5475 };
5476 class CResult_NodeAnnouncementInfoDecodeErrorZ {
5477 private:
5478         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
5479 public:
5480         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
5481         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
5482         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
5483         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
5484         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
5485         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
5486         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
5487         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
5488         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
5489         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
5490 };
5491 class CResult_COption_NetworkUpdateZDecodeErrorZ {
5492 private:
5493         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
5494 public:
5495         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
5496         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
5497         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
5498         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
5499         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
5500         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; }
5501         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
5502         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
5503         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
5504         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
5505 };
5506 class CResult_NoneRetryableSendFailureZ {
5507 private:
5508         LDKCResult_NoneRetryableSendFailureZ self;
5509 public:
5510         CResult_NoneRetryableSendFailureZ(const CResult_NoneRetryableSendFailureZ&) = delete;
5511         CResult_NoneRetryableSendFailureZ(CResult_NoneRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); }
5512         CResult_NoneRetryableSendFailureZ(LDKCResult_NoneRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); }
5513         operator LDKCResult_NoneRetryableSendFailureZ() && { LDKCResult_NoneRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); return res; }
5514         ~CResult_NoneRetryableSendFailureZ() { CResult_NoneRetryableSendFailureZ_free(self); }
5515         CResult_NoneRetryableSendFailureZ& operator=(CResult_NoneRetryableSendFailureZ&& o) { CResult_NoneRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); return *this; }
5516         LDKCResult_NoneRetryableSendFailureZ* operator &() { return &self; }
5517         LDKCResult_NoneRetryableSendFailureZ* operator ->() { return &self; }
5518         const LDKCResult_NoneRetryableSendFailureZ* operator &() const { return &self; }
5519         const LDKCResult_NoneRetryableSendFailureZ* operator ->() const { return &self; }
5520 };
5521 class CVec_UpdateFailMalformedHTLCZ {
5522 private:
5523         LDKCVec_UpdateFailMalformedHTLCZ self;
5524 public:
5525         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
5526         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
5527         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
5528         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
5529         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
5530         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
5531         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
5532         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
5533         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
5534         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
5535 };
5536 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
5537 private:
5538         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
5539 public:
5540         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
5541         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5542         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5543         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
5544         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
5545         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; }
5546         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
5547         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
5548         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
5549         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
5550 };
5551 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ {
5552 private:
5553         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ self;
5554 public:
5555         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(const CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&) = delete;
5556         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
5557         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
5558         operator LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() && { LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); return res; }
5559         ~CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() { CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ_free(self); }
5560         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ& operator=(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& o) { CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); return *this; }
5561         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() { return &self; }
5562         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() { return &self; }
5563         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() const { return &self; }
5564         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() const { return &self; }
5565 };
5566 class CVec_RouteHopZ {
5567 private:
5568         LDKCVec_RouteHopZ self;
5569 public:
5570         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5571         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5572         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5573         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5574         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5575         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5576         LDKCVec_RouteHopZ* operator &() { return &self; }
5577         LDKCVec_RouteHopZ* operator ->() { return &self; }
5578         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5579         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5580 };
5581 class COption_CustomOnionMessageContentsZ {
5582 private:
5583         LDKCOption_CustomOnionMessageContentsZ self;
5584 public:
5585         COption_CustomOnionMessageContentsZ(const COption_CustomOnionMessageContentsZ&) = delete;
5586         COption_CustomOnionMessageContentsZ(COption_CustomOnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); }
5587         COption_CustomOnionMessageContentsZ(LDKCOption_CustomOnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); }
5588         operator LDKCOption_CustomOnionMessageContentsZ() && { LDKCOption_CustomOnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); return res; }
5589         ~COption_CustomOnionMessageContentsZ() { COption_CustomOnionMessageContentsZ_free(self); }
5590         COption_CustomOnionMessageContentsZ& operator=(COption_CustomOnionMessageContentsZ&& o) { COption_CustomOnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); return *this; }
5591         LDKCOption_CustomOnionMessageContentsZ* operator &() { return &self; }
5592         LDKCOption_CustomOnionMessageContentsZ* operator ->() { return &self; }
5593         const LDKCOption_CustomOnionMessageContentsZ* operator &() const { return &self; }
5594         const LDKCOption_CustomOnionMessageContentsZ* operator ->() const { return &self; }
5595 };
5596 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5597 private:
5598         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5599 public:
5600         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5601         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5602         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5603         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5604         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5605         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; }
5606         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5607         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5608         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5609         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5610 };
5611 class CVec_ThirtyTwoBytesZ {
5612 private:
5613         LDKCVec_ThirtyTwoBytesZ self;
5614 public:
5615         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5616         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5617         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5618         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5619         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5620         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5621         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5622         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5623         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5624         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5625 };
5626 class CResult_ClosingSignedDecodeErrorZ {
5627 private:
5628         LDKCResult_ClosingSignedDecodeErrorZ self;
5629 public:
5630         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5631         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5632         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5633         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5634         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5635         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5636         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5637         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5638         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5639         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5640 };
5641 class CResult_NonePaymentErrorZ {
5642 private:
5643         LDKCResult_NonePaymentErrorZ self;
5644 public:
5645         CResult_NonePaymentErrorZ(const CResult_NonePaymentErrorZ&) = delete;
5646         CResult_NonePaymentErrorZ(CResult_NonePaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); }
5647         CResult_NonePaymentErrorZ(LDKCResult_NonePaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); }
5648         operator LDKCResult_NonePaymentErrorZ() && { LDKCResult_NonePaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); return res; }
5649         ~CResult_NonePaymentErrorZ() { CResult_NonePaymentErrorZ_free(self); }
5650         CResult_NonePaymentErrorZ& operator=(CResult_NonePaymentErrorZ&& o) { CResult_NonePaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); return *this; }
5651         LDKCResult_NonePaymentErrorZ* operator &() { return &self; }
5652         LDKCResult_NonePaymentErrorZ* operator ->() { return &self; }
5653         const LDKCResult_NonePaymentErrorZ* operator &() const { return &self; }
5654         const LDKCResult_NonePaymentErrorZ* operator ->() const { return &self; }
5655 };
5656 class CVec_CResult_NoneAPIErrorZZ {
5657 private:
5658         LDKCVec_CResult_NoneAPIErrorZZ self;
5659 public:
5660         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5661         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5662         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5663         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5664         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5665         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; }
5666         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5667         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5668         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5669         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5670 };
5671 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5672 private:
5673         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5674 public:
5675         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5676         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5677         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5678         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5679         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5680         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5681         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5682         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5683         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5684         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5685 };
5686 class CVec_RecentPaymentDetailsZ {
5687 private:
5688         LDKCVec_RecentPaymentDetailsZ self;
5689 public:
5690         CVec_RecentPaymentDetailsZ(const CVec_RecentPaymentDetailsZ&) = delete;
5691         CVec_RecentPaymentDetailsZ(CVec_RecentPaymentDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); }
5692         CVec_RecentPaymentDetailsZ(LDKCVec_RecentPaymentDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); }
5693         operator LDKCVec_RecentPaymentDetailsZ() && { LDKCVec_RecentPaymentDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); return res; }
5694         ~CVec_RecentPaymentDetailsZ() { CVec_RecentPaymentDetailsZ_free(self); }
5695         CVec_RecentPaymentDetailsZ& operator=(CVec_RecentPaymentDetailsZ&& o) { CVec_RecentPaymentDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); return *this; }
5696         LDKCVec_RecentPaymentDetailsZ* operator &() { return &self; }
5697         LDKCVec_RecentPaymentDetailsZ* operator ->() { return &self; }
5698         const LDKCVec_RecentPaymentDetailsZ* operator &() const { return &self; }
5699         const LDKCVec_RecentPaymentDetailsZ* operator ->() const { return &self; }
5700 };
5701 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5702 private:
5703         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5704 public:
5705         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5706         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5707         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5708         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5709         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5710         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; }
5711         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5712         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5713         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5714         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5715 };
5716 class CVec_RouteHintHopZ {
5717 private:
5718         LDKCVec_RouteHintHopZ self;
5719 public:
5720         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5721         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5722         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5723         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5724         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5725         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5726         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5727         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5728         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5729         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5730 };
5731 class CResult_UntrustedStringDecodeErrorZ {
5732 private:
5733         LDKCResult_UntrustedStringDecodeErrorZ self;
5734 public:
5735         CResult_UntrustedStringDecodeErrorZ(const CResult_UntrustedStringDecodeErrorZ&) = delete;
5736         CResult_UntrustedStringDecodeErrorZ(CResult_UntrustedStringDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); }
5737         CResult_UntrustedStringDecodeErrorZ(LDKCResult_UntrustedStringDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); }
5738         operator LDKCResult_UntrustedStringDecodeErrorZ() && { LDKCResult_UntrustedStringDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); return res; }
5739         ~CResult_UntrustedStringDecodeErrorZ() { CResult_UntrustedStringDecodeErrorZ_free(self); }
5740         CResult_UntrustedStringDecodeErrorZ& operator=(CResult_UntrustedStringDecodeErrorZ&& o) { CResult_UntrustedStringDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); return *this; }
5741         LDKCResult_UntrustedStringDecodeErrorZ* operator &() { return &self; }
5742         LDKCResult_UntrustedStringDecodeErrorZ* operator ->() { return &self; }
5743         const LDKCResult_UntrustedStringDecodeErrorZ* operator &() const { return &self; }
5744         const LDKCResult_UntrustedStringDecodeErrorZ* operator ->() const { return &self; }
5745 };
5746 class CResult_PaymentParametersDecodeErrorZ {
5747 private:
5748         LDKCResult_PaymentParametersDecodeErrorZ self;
5749 public:
5750         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5751         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5752         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5753         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5754         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5755         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5756         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5757         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5758         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5759         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5760 };
5761 class CVec_U5Z {
5762 private:
5763         LDKCVec_U5Z self;
5764 public:
5765         CVec_U5Z(const CVec_U5Z&) = delete;
5766         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
5767         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
5768         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
5769         ~CVec_U5Z() { CVec_U5Z_free(self); }
5770         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
5771         LDKCVec_U5Z* operator &() { return &self; }
5772         LDKCVec_U5Z* operator ->() { return &self; }
5773         const LDKCVec_U5Z* operator &() const { return &self; }
5774         const LDKCVec_U5Z* operator ->() const { return &self; }
5775 };
5776 class COption_UtxoLookupZ {
5777 private:
5778         LDKCOption_UtxoLookupZ self;
5779 public:
5780         COption_UtxoLookupZ(const COption_UtxoLookupZ&) = delete;
5781         COption_UtxoLookupZ(COption_UtxoLookupZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_UtxoLookupZ)); }
5782         COption_UtxoLookupZ(LDKCOption_UtxoLookupZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_UtxoLookupZ)); }
5783         operator LDKCOption_UtxoLookupZ() && { LDKCOption_UtxoLookupZ res = self; memset(&self, 0, sizeof(LDKCOption_UtxoLookupZ)); return res; }
5784         ~COption_UtxoLookupZ() { COption_UtxoLookupZ_free(self); }
5785         COption_UtxoLookupZ& operator=(COption_UtxoLookupZ&& o) { COption_UtxoLookupZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_UtxoLookupZ)); return *this; }
5786         LDKCOption_UtxoLookupZ* operator &() { return &self; }
5787         LDKCOption_UtxoLookupZ* operator ->() { return &self; }
5788         const LDKCOption_UtxoLookupZ* operator &() const { return &self; }
5789         const LDKCOption_UtxoLookupZ* operator ->() const { return &self; }
5790 };
5791 class CResult_PongDecodeErrorZ {
5792 private:
5793         LDKCResult_PongDecodeErrorZ self;
5794 public:
5795         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5796         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5797         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5798         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5799         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5800         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5801         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5802         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5803         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5804         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5805 };
5806 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5807 private:
5808         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5809 public:
5810         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5811         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5812         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5813         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5814         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5815         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5816         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5817         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5818         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5819         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5820 };
5821 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
5822 private:
5823         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
5824 public:
5825         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
5826         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5827         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5828         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
5829         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
5830         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; }
5831         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
5832         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
5833         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
5834         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
5835 };
5836 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5837 private:
5838         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5839 public:
5840         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5841         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5842         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5843         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5844         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5845         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; }
5846         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5847         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5848         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5849         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5850 };
5851 class C2Tuple_BlockHashChannelManagerZ {
5852 private:
5853         LDKC2Tuple_BlockHashChannelManagerZ self;
5854 public:
5855         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5856         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5857         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5858         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5859         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5860         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5861         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5862         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5863         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5864         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5865 };
5866 class CResult_ChannelTransactionParametersDecodeErrorZ {
5867 private:
5868         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5869 public:
5870         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5871         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5872         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5873         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5874         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5875         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5876         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5877         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5878         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5879         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5880 };
5881 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ {
5882 private:
5883         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ self;
5884 public:
5885         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(const CResult_WriteableEcdsaChannelSignerDecodeErrorZ&) = delete;
5886         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
5887         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
5888         operator LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ() && { LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return res; }
5889         ~CResult_WriteableEcdsaChannelSignerDecodeErrorZ() { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); }
5890         CResult_WriteableEcdsaChannelSignerDecodeErrorZ& operator=(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return *this; }
5891         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() { return &self; }
5892         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() { return &self; }
5893         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() const { return &self; }
5894         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() const { return &self; }
5895 };
5896 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5897 private:
5898         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5899 public:
5900         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5901         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5902         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5903         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5904         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5905         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5906         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5907         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5908         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5909         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5910 };
5911 class C2Tuple_PaymentHashPaymentIdZ {
5912 private:
5913         LDKC2Tuple_PaymentHashPaymentIdZ self;
5914 public:
5915         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5916         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5917         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5918         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5919         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5920         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5921         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5922         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5923         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5924         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5925 };
5926 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5927 private:
5928         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5929 public:
5930         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5931         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5932         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5933         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5934         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5935         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; }
5936         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5937         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5938         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5939         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5940 };
5941 class CResult_NoneErrorZ {
5942 private:
5943         LDKCResult_NoneErrorZ self;
5944 public:
5945         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5946         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5947         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5948         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5949         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5950         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5951         LDKCResult_NoneErrorZ* operator &() { return &self; }
5952         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5953         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5954         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5955 };
5956 class CResult_InFlightHtlcsDecodeErrorZ {
5957 private:
5958         LDKCResult_InFlightHtlcsDecodeErrorZ self;
5959 public:
5960         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
5961         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
5962         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
5963         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
5964         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
5965         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
5966         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
5967         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
5968         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
5969         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
5970 };
5971 class CResult_COption_HTLCDestinationZDecodeErrorZ {
5972 private:
5973         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
5974 public:
5975         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
5976         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
5977         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
5978         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
5979         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
5980         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; }
5981         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
5982         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
5983         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
5984         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
5985 };
5986 class CResult_SiPrefixParseErrorZ {
5987 private:
5988         LDKCResult_SiPrefixParseErrorZ self;
5989 public:
5990         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5991         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5992         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5993         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5994         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5995         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5996         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5997         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5998         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5999         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
6000 };
6001 class CResult_BlindedHopDecodeErrorZ {
6002 private:
6003         LDKCResult_BlindedHopDecodeErrorZ self;
6004 public:
6005         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
6006         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
6007         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
6008         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
6009         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
6010         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
6011         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
6012         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
6013         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
6014         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
6015 };
6016 class CResult_TrustedCommitmentTransactionNoneZ {
6017 private:
6018         LDKCResult_TrustedCommitmentTransactionNoneZ self;
6019 public:
6020         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
6021         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
6022         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
6023         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
6024         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
6025         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
6026         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
6027         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
6028         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
6029         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
6030 };
6031 class CResult_FixedPenaltyScorerDecodeErrorZ {
6032 private:
6033         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
6034 public:
6035         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
6036         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
6037         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
6038         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
6039         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
6040         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
6041         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
6042         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
6043         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
6044         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
6045 };
6046 class CVec_BlindedPathZ {
6047 private:
6048         LDKCVec_BlindedPathZ self;
6049 public:
6050         CVec_BlindedPathZ(const CVec_BlindedPathZ&) = delete;
6051         CVec_BlindedPathZ(CVec_BlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedPathZ)); }
6052         CVec_BlindedPathZ(LDKCVec_BlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedPathZ)); }
6053         operator LDKCVec_BlindedPathZ() && { LDKCVec_BlindedPathZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedPathZ)); return res; }
6054         ~CVec_BlindedPathZ() { CVec_BlindedPathZ_free(self); }
6055         CVec_BlindedPathZ& operator=(CVec_BlindedPathZ&& o) { CVec_BlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedPathZ)); return *this; }
6056         LDKCVec_BlindedPathZ* operator &() { return &self; }
6057         LDKCVec_BlindedPathZ* operator ->() { return &self; }
6058         const LDKCVec_BlindedPathZ* operator &() const { return &self; }
6059         const LDKCVec_BlindedPathZ* operator ->() const { return &self; }
6060 };
6061 class CResult_NoneLightningErrorZ {
6062 private:
6063         LDKCResult_NoneLightningErrorZ self;
6064 public:
6065         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
6066         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
6067         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
6068         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
6069         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
6070         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
6071         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
6072         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
6073         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
6074         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
6075 };
6076 class CResult_PaymentHashRetryableSendFailureZ {
6077 private:
6078         LDKCResult_PaymentHashRetryableSendFailureZ self;
6079 public:
6080         CResult_PaymentHashRetryableSendFailureZ(const CResult_PaymentHashRetryableSendFailureZ&) = delete;
6081         CResult_PaymentHashRetryableSendFailureZ(CResult_PaymentHashRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); }
6082         CResult_PaymentHashRetryableSendFailureZ(LDKCResult_PaymentHashRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); }
6083         operator LDKCResult_PaymentHashRetryableSendFailureZ() && { LDKCResult_PaymentHashRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); return res; }
6084         ~CResult_PaymentHashRetryableSendFailureZ() { CResult_PaymentHashRetryableSendFailureZ_free(self); }
6085         CResult_PaymentHashRetryableSendFailureZ& operator=(CResult_PaymentHashRetryableSendFailureZ&& o) { CResult_PaymentHashRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); return *this; }
6086         LDKCResult_PaymentHashRetryableSendFailureZ* operator &() { return &self; }
6087         LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() { return &self; }
6088         const LDKCResult_PaymentHashRetryableSendFailureZ* operator &() const { return &self; }
6089         const LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() const { return &self; }
6090 };
6091 class CResult_COption_EventZDecodeErrorZ {
6092 private:
6093         LDKCResult_COption_EventZDecodeErrorZ self;
6094 public:
6095         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
6096         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
6097         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
6098         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
6099         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
6100         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; }
6101         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
6102         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
6103         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
6104         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
6105 };
6106 class CResult_CVec_SignatureZNoneZ {
6107 private:
6108         LDKCResult_CVec_SignatureZNoneZ self;
6109 public:
6110         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
6111         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
6112         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
6113         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
6114         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
6115         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; }
6116         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
6117         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
6118         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
6119         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
6120 };
6121 class COption_CVec_NetAddressZZ {
6122 private:
6123         LDKCOption_CVec_NetAddressZZ self;
6124 public:
6125         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
6126         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
6127         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
6128         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
6129         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
6130         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; }
6131         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
6132         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
6133         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
6134         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
6135 };
6136 class CResult_PaymentFailureReasonDecodeErrorZ {
6137 private:
6138         LDKCResult_PaymentFailureReasonDecodeErrorZ self;
6139 public:
6140         CResult_PaymentFailureReasonDecodeErrorZ(const CResult_PaymentFailureReasonDecodeErrorZ&) = delete;
6141         CResult_PaymentFailureReasonDecodeErrorZ(CResult_PaymentFailureReasonDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); }
6142         CResult_PaymentFailureReasonDecodeErrorZ(LDKCResult_PaymentFailureReasonDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); }
6143         operator LDKCResult_PaymentFailureReasonDecodeErrorZ() && { LDKCResult_PaymentFailureReasonDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); return res; }
6144         ~CResult_PaymentFailureReasonDecodeErrorZ() { CResult_PaymentFailureReasonDecodeErrorZ_free(self); }
6145         CResult_PaymentFailureReasonDecodeErrorZ& operator=(CResult_PaymentFailureReasonDecodeErrorZ&& o) { CResult_PaymentFailureReasonDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); return *this; }
6146         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() { return &self; }
6147         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() { return &self; }
6148         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() const { return &self; }
6149         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() const { return &self; }
6150 };
6151 class C2Tuple_PublicKeyCOption_NetAddressZZ {
6152 private:
6153         LDKC2Tuple_PublicKeyCOption_NetAddressZZ self;
6154 public:
6155         C2Tuple_PublicKeyCOption_NetAddressZZ(const C2Tuple_PublicKeyCOption_NetAddressZZ&) = delete;
6156         C2Tuple_PublicKeyCOption_NetAddressZZ(C2Tuple_PublicKeyCOption_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyCOption_NetAddressZZ)); }
6157         C2Tuple_PublicKeyCOption_NetAddressZZ(LDKC2Tuple_PublicKeyCOption_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); }
6158         operator LDKC2Tuple_PublicKeyCOption_NetAddressZZ() && { LDKC2Tuple_PublicKeyCOption_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); return res; }
6159         ~C2Tuple_PublicKeyCOption_NetAddressZZ() { C2Tuple_PublicKeyCOption_NetAddressZZ_free(self); }
6160         C2Tuple_PublicKeyCOption_NetAddressZZ& operator=(C2Tuple_PublicKeyCOption_NetAddressZZ&& o) { C2Tuple_PublicKeyCOption_NetAddressZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyCOption_NetAddressZZ)); return *this; }
6161         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() { return &self; }
6162         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() { return &self; }
6163         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() const { return &self; }
6164         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() const { return &self; }
6165 };
6166 class CResult__u832APIErrorZ {
6167 private:
6168         LDKCResult__u832APIErrorZ self;
6169 public:
6170         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
6171         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
6172         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
6173         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
6174         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
6175         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
6176         LDKCResult__u832APIErrorZ* operator &() { return &self; }
6177         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
6178         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
6179         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
6180 };
6181 class CResult_PaymentIdPaymentErrorZ {
6182 private:
6183         LDKCResult_PaymentIdPaymentErrorZ self;
6184 public:
6185         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
6186         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
6187         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
6188         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
6189         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
6190         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
6191         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
6192         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
6193         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
6194         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
6195 };
6196 class CResult_COption_MonitorEventZDecodeErrorZ {
6197 private:
6198         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
6199 public:
6200         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
6201         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
6202         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
6203         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
6204         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
6205         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; }
6206         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
6207         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
6208         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
6209         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
6210 };
6211 class CResult_RoutingFeesDecodeErrorZ {
6212 private:
6213         LDKCResult_RoutingFeesDecodeErrorZ self;
6214 public:
6215         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
6216         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
6217         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
6218         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
6219         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
6220         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
6221         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
6222         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
6223         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
6224         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
6225 };
6226 class CResult_NonePeerHandleErrorZ {
6227 private:
6228         LDKCResult_NonePeerHandleErrorZ self;
6229 public:
6230         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
6231         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
6232         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
6233         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
6234         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
6235         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
6236         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
6237         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
6238         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
6239         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
6240 };
6241 class CResult_PayeePubKeyErrorZ {
6242 private:
6243         LDKCResult_PayeePubKeyErrorZ self;
6244 public:
6245         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
6246         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
6247         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
6248         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
6249         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
6250         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
6251         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
6252         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
6253         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
6254         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
6255 };
6256 class CResult_DescriptionCreationErrorZ {
6257 private:
6258         LDKCResult_DescriptionCreationErrorZ self;
6259 public:
6260         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
6261         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
6262         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
6263         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
6264         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
6265         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
6266         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
6267         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
6268         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
6269         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
6270 };
6271 class CResult_QueryShortChannelIdsDecodeErrorZ {
6272 private:
6273         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
6274 public:
6275         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
6276         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
6277         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
6278         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
6279         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
6280         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
6281         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
6282         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
6283         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
6284         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
6285 };
6286 class CResult_InvoiceSemanticErrorZ {
6287 private:
6288         LDKCResult_InvoiceSemanticErrorZ self;
6289 public:
6290         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
6291         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
6292         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
6293         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
6294         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
6295         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
6296         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
6297         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
6298         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
6299         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
6300 };
6301 class CResult_UpdateAddHTLCDecodeErrorZ {
6302 private:
6303         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
6304 public:
6305         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
6306         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
6307         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
6308         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
6309         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
6310         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
6311         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
6312         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
6313         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
6314         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
6315 };
6316 class COption_MonitorEventZ {
6317 private:
6318         LDKCOption_MonitorEventZ self;
6319 public:
6320         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6321         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6322         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6323         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6324         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6325         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6326         LDKCOption_MonitorEventZ* operator &() { return &self; }
6327         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6328         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6329         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6330 };
6331 class COption_TypeZ {
6332 private:
6333         LDKCOption_TypeZ self;
6334 public:
6335         COption_TypeZ(const COption_TypeZ&) = delete;
6336         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6337         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6338         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6339         ~COption_TypeZ() { COption_TypeZ_free(self); }
6340         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6341         LDKCOption_TypeZ* operator &() { return &self; }
6342         LDKCOption_TypeZ* operator ->() { return &self; }
6343         const LDKCOption_TypeZ* operator &() const { return &self; }
6344         const LDKCOption_TypeZ* operator ->() const { return &self; }
6345 };
6346 class CResult_COption_TypeZDecodeErrorZ {
6347 private:
6348         LDKCResult_COption_TypeZDecodeErrorZ self;
6349 public:
6350         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6351         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6352         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6353         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6354         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6355         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; }
6356         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6357         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6358         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6359         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6360 };
6361 class CResult_COption_PathFailureZDecodeErrorZ {
6362 private:
6363         LDKCResult_COption_PathFailureZDecodeErrorZ self;
6364 public:
6365         CResult_COption_PathFailureZDecodeErrorZ(const CResult_COption_PathFailureZDecodeErrorZ&) = delete;
6366         CResult_COption_PathFailureZDecodeErrorZ(CResult_COption_PathFailureZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); }
6367         CResult_COption_PathFailureZDecodeErrorZ(LDKCResult_COption_PathFailureZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); }
6368         operator LDKCResult_COption_PathFailureZDecodeErrorZ() && { LDKCResult_COption_PathFailureZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); return res; }
6369         ~CResult_COption_PathFailureZDecodeErrorZ() { CResult_COption_PathFailureZDecodeErrorZ_free(self); }
6370         CResult_COption_PathFailureZDecodeErrorZ& operator=(CResult_COption_PathFailureZDecodeErrorZ&& o) { CResult_COption_PathFailureZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); return *this; }
6371         LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() { return &self; }
6372         LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() { return &self; }
6373         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() const { return &self; }
6374         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() const { return &self; }
6375 };
6376 class CResult_UpdateFailHTLCDecodeErrorZ {
6377 private:
6378         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6379 public:
6380         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6381         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6382         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6383         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6384         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6385         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6386         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6387         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6388         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6389         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6390 };
6391 class CResult_InvoiceParseOrSemanticErrorZ {
6392 private:
6393         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6394 public:
6395         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6396         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6397         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6398         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6399         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6400         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6401         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6402         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6403         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6404         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6405 };
6406 class CResult_RevokeAndACKDecodeErrorZ {
6407 private:
6408         LDKCResult_RevokeAndACKDecodeErrorZ self;
6409 public:
6410         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6411         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6412         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6413         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6414         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6415         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6416         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6417         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6418         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6419         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6420 };
6421 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6422 private:
6423         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6424 public:
6425         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6426         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6427         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6428         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6429         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6430         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6431         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6432         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6433         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6434         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6435 };
6436 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6437 private:
6438         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6439 public:
6440         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6441         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6442         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6443         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6444         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6445         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6446         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6447         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6448         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6449         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6450 };
6451 class CVec_EventZ {
6452 private:
6453         LDKCVec_EventZ self;
6454 public:
6455         CVec_EventZ(const CVec_EventZ&) = delete;
6456         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6457         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6458         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6459         ~CVec_EventZ() { CVec_EventZ_free(self); }
6460         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6461         LDKCVec_EventZ* operator &() { return &self; }
6462         LDKCVec_EventZ* operator ->() { return &self; }
6463         const LDKCVec_EventZ* operator &() const { return &self; }
6464         const LDKCVec_EventZ* operator ->() const { return &self; }
6465 };
6466 class CResult_NoneSemanticErrorZ {
6467 private:
6468         LDKCResult_NoneSemanticErrorZ self;
6469 public:
6470         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6471         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6472         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6473         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6474         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6475         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6476         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6477         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6478         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6479         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6480 };
6481 class CVec_C2Tuple_u32ScriptZZ {
6482 private:
6483         LDKCVec_C2Tuple_u32ScriptZZ self;
6484 public:
6485         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6486         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6487         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6488         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6489         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6490         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; }
6491         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6492         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6493         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6494         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6495 };
6496 class CVec_BlindedHopZ {
6497 private:
6498         LDKCVec_BlindedHopZ self;
6499 public:
6500         CVec_BlindedHopZ(const CVec_BlindedHopZ&) = delete;
6501         CVec_BlindedHopZ(CVec_BlindedHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedHopZ)); }
6502         CVec_BlindedHopZ(LDKCVec_BlindedHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedHopZ)); }
6503         operator LDKCVec_BlindedHopZ() && { LDKCVec_BlindedHopZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedHopZ)); return res; }
6504         ~CVec_BlindedHopZ() { CVec_BlindedHopZ_free(self); }
6505         CVec_BlindedHopZ& operator=(CVec_BlindedHopZ&& o) { CVec_BlindedHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedHopZ)); return *this; }
6506         LDKCVec_BlindedHopZ* operator &() { return &self; }
6507         LDKCVec_BlindedHopZ* operator ->() { return &self; }
6508         const LDKCVec_BlindedHopZ* operator &() const { return &self; }
6509         const LDKCVec_BlindedHopZ* operator ->() const { return &self; }
6510 };
6511 class CResult_COption_ClosureReasonZDecodeErrorZ {
6512 private:
6513         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6514 public:
6515         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6516         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6517         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6518         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6519         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6520         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; }
6521         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6522         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6523         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6524         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6525 };
6526 class CResult_PaymentHashPaymentSendFailureZ {
6527 private:
6528         LDKCResult_PaymentHashPaymentSendFailureZ self;
6529 public:
6530         CResult_PaymentHashPaymentSendFailureZ(const CResult_PaymentHashPaymentSendFailureZ&) = delete;
6531         CResult_PaymentHashPaymentSendFailureZ(CResult_PaymentHashPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); }
6532         CResult_PaymentHashPaymentSendFailureZ(LDKCResult_PaymentHashPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); }
6533         operator LDKCResult_PaymentHashPaymentSendFailureZ() && { LDKCResult_PaymentHashPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); return res; }
6534         ~CResult_PaymentHashPaymentSendFailureZ() { CResult_PaymentHashPaymentSendFailureZ_free(self); }
6535         CResult_PaymentHashPaymentSendFailureZ& operator=(CResult_PaymentHashPaymentSendFailureZ&& o) { CResult_PaymentHashPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); return *this; }
6536         LDKCResult_PaymentHashPaymentSendFailureZ* operator &() { return &self; }
6537         LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() { return &self; }
6538         const LDKCResult_PaymentHashPaymentSendFailureZ* operator &() const { return &self; }
6539         const LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() const { return &self; }
6540 };
6541 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6542 private:
6543         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6544 public:
6545         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6546         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6547         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6548         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6549         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6550         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6551         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6552         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6553         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6554         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6555 };
6556 class CResult_RouteParametersDecodeErrorZ {
6557 private:
6558         LDKCResult_RouteParametersDecodeErrorZ self;
6559 public:
6560         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6561         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6562         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6563         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6564         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6565         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6566         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6567         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6568         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6569         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6570 };
6571 class CResult_PrivateRouteCreationErrorZ {
6572 private:
6573         LDKCResult_PrivateRouteCreationErrorZ self;
6574 public:
6575         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6576         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6577         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6578         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6579         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6580         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6581         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6582         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6583         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6584         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6585 };
6586 class CResult_NodeAliasDecodeErrorZ {
6587 private:
6588         LDKCResult_NodeAliasDecodeErrorZ self;
6589 public:
6590         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
6591         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
6592         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
6593         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
6594         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
6595         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
6596         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
6597         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
6598         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
6599         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
6600 };
6601 class CVec_UpdateFulfillHTLCZ {
6602 private:
6603         LDKCVec_UpdateFulfillHTLCZ self;
6604 public:
6605         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6606         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6607         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6608         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6609         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6610         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6611         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6612         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6613         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6614         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6615 };
6616 class CResult_AnnouncementSignaturesDecodeErrorZ {
6617 private:
6618         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6619 public:
6620         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6621         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6622         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6623         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6624         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6625         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6626         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6627         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6628         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6629         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6630 };
6631 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6632 private:
6633         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6634 public:
6635         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6636         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6637         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6638         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6639         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6640         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6641         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6642         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6643         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6644         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6645 };
6646 class CResult_NodeFeaturesDecodeErrorZ {
6647 private:
6648         LDKCResult_NodeFeaturesDecodeErrorZ self;
6649 public:
6650         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6651         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6652         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6653         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6654         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6655         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6656         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6657         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6658         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6659         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6660 };
6661 class CResult_InMemorySignerDecodeErrorZ {
6662 private:
6663         LDKCResult_InMemorySignerDecodeErrorZ self;
6664 public:
6665         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6666         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6667         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6668         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6669         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6670         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6671         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6672         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6673         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6674         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6675 };
6676 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
6677 private:
6678         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
6679 public:
6680         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
6681         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6682         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6683         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
6684         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
6685         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
6686         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
6687         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
6688         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
6689         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
6690 };
6691 class COption_PathFailureZ {
6692 private:
6693         LDKCOption_PathFailureZ self;
6694 public:
6695         COption_PathFailureZ(const COption_PathFailureZ&) = delete;
6696         COption_PathFailureZ(COption_PathFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PathFailureZ)); }
6697         COption_PathFailureZ(LDKCOption_PathFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PathFailureZ)); }
6698         operator LDKCOption_PathFailureZ() && { LDKCOption_PathFailureZ res = self; memset(&self, 0, sizeof(LDKCOption_PathFailureZ)); return res; }
6699         ~COption_PathFailureZ() { COption_PathFailureZ_free(self); }
6700         COption_PathFailureZ& operator=(COption_PathFailureZ&& o) { COption_PathFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PathFailureZ)); return *this; }
6701         LDKCOption_PathFailureZ* operator &() { return &self; }
6702         LDKCOption_PathFailureZ* operator ->() { return &self; }
6703         const LDKCOption_PathFailureZ* operator &() const { return &self; }
6704         const LDKCOption_PathFailureZ* operator ->() const { return &self; }
6705 };
6706 class COption_ScalarZ {
6707 private:
6708         LDKCOption_ScalarZ self;
6709 public:
6710         COption_ScalarZ(const COption_ScalarZ&) = delete;
6711         COption_ScalarZ(COption_ScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScalarZ)); }
6712         COption_ScalarZ(LDKCOption_ScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScalarZ)); }
6713         operator LDKCOption_ScalarZ() && { LDKCOption_ScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_ScalarZ)); return res; }
6714         ~COption_ScalarZ() { COption_ScalarZ_free(self); }
6715         COption_ScalarZ& operator=(COption_ScalarZ&& o) { COption_ScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScalarZ)); return *this; }
6716         LDKCOption_ScalarZ* operator &() { return &self; }
6717         LDKCOption_ScalarZ* operator ->() { return &self; }
6718         const LDKCOption_ScalarZ* operator &() const { return &self; }
6719         const LDKCOption_ScalarZ* operator ->() const { return &self; }
6720 };
6721 class CResult_ChannelUpdateInfoDecodeErrorZ {
6722 private:
6723         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6724 public:
6725         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6726         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6727         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6728         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6729         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6730         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6731         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6732         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6733         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6734         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6735 };
6736 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6737 private:
6738         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6739 public:
6740         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6741         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6742         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6743         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6744         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6745         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6746         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6747         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6748         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6749         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6750 };
6751 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
6752 private:
6753         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
6754 public:
6755         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
6756         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6757         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6758         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
6759         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
6760         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; }
6761         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
6762         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
6763         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
6764         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
6765 };
6766 class CVec_TxOutZ {
6767 private:
6768         LDKCVec_TxOutZ self;
6769 public:
6770         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6771         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6772         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6773         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6774         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6775         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6776         LDKCVec_TxOutZ* operator &() { return &self; }
6777         LDKCVec_TxOutZ* operator ->() { return &self; }
6778         const LDKCVec_TxOutZ* operator &() const { return &self; }
6779         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6780 };
6781 class CVec_UpdateFailHTLCZ {
6782 private:
6783         LDKCVec_UpdateFailHTLCZ self;
6784 public:
6785         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
6786         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
6787         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
6788         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
6789         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
6790         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
6791         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
6792         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
6793         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
6794         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
6795 };
6796 class CVec_SpendableOutputDescriptorZ {
6797 private:
6798         LDKCVec_SpendableOutputDescriptorZ self;
6799 public:
6800         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
6801         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
6802         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
6803         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
6804         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
6805         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
6806         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
6807         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
6808         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
6809         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
6810 };
6811 class COption_C2Tuple_u64u64ZZ {
6812 private:
6813         LDKCOption_C2Tuple_u64u64ZZ self;
6814 public:
6815         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
6816         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
6817         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
6818         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
6819         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
6820         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; }
6821         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
6822         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
6823         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
6824         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
6825 };
6826 class CResult_ChannelAnnouncementDecodeErrorZ {
6827 private:
6828         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
6829 public:
6830         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
6831         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
6832         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
6833         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
6834         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
6835         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
6836         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
6837         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
6838         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
6839         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6840 };
6841 class CResult_HTLCUpdateDecodeErrorZ {
6842 private:
6843         LDKCResult_HTLCUpdateDecodeErrorZ self;
6844 public:
6845         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
6846         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
6847         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
6848         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
6849         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
6850         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
6851         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
6852         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
6853         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
6854         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
6855 };
6856 class C2Tuple_SignatureCVec_SignatureZZ {
6857 private:
6858         LDKC2Tuple_SignatureCVec_SignatureZZ self;
6859 public:
6860         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
6861         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
6862         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
6863         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
6864         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
6865         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; }
6866         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
6867         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
6868         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
6869         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
6870 };
6871 class CVec_OutPointZ {
6872 private:
6873         LDKCVec_OutPointZ self;
6874 public:
6875         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
6876         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
6877         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
6878         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
6879         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
6880         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
6881         LDKCVec_OutPointZ* operator &() { return &self; }
6882         LDKCVec_OutPointZ* operator ->() { return &self; }
6883         const LDKCVec_OutPointZ* operator &() const { return &self; }
6884         const LDKCVec_OutPointZ* operator ->() const { return &self; }
6885 };
6886 class COption_WriteableScoreZ {
6887 private:
6888         LDKCOption_WriteableScoreZ self;
6889 public:
6890         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
6891         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
6892         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
6893         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
6894         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
6895         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
6896         LDKCOption_WriteableScoreZ* operator &() { return &self; }
6897         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
6898         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
6899         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
6900 };
6901 class CResult_PositiveTimestampCreationErrorZ {
6902 private:
6903         LDKCResult_PositiveTimestampCreationErrorZ self;
6904 public:
6905         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
6906         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
6907         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
6908         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
6909         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
6910         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
6911         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
6912         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
6913         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
6914         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
6915 };
6916 class C2Tuple__u168_u168Z {
6917 private:
6918         LDKC2Tuple__u168_u168Z self;
6919 public:
6920         C2Tuple__u168_u168Z(const C2Tuple__u168_u168Z&) = delete;
6921         C2Tuple__u168_u168Z(C2Tuple__u168_u168Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u168_u168Z)); }
6922         C2Tuple__u168_u168Z(LDKC2Tuple__u168_u168Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u168_u168Z)); }
6923         operator LDKC2Tuple__u168_u168Z() && { LDKC2Tuple__u168_u168Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u168_u168Z)); return res; }
6924         ~C2Tuple__u168_u168Z() { C2Tuple__u168_u168Z_free(self); }
6925         C2Tuple__u168_u168Z& operator=(C2Tuple__u168_u168Z&& o) { C2Tuple__u168_u168Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple__u168_u168Z)); return *this; }
6926         LDKC2Tuple__u168_u168Z* operator &() { return &self; }
6927         LDKC2Tuple__u168_u168Z* operator ->() { return &self; }
6928         const LDKC2Tuple__u168_u168Z* operator &() const { return &self; }
6929         const LDKC2Tuple__u168_u168Z* operator ->() const { return &self; }
6930 };
6931 class CResult_InvoiceFeaturesDecodeErrorZ {
6932 private:
6933         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
6934 public:
6935         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
6936         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
6937         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
6938         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
6939         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
6940         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
6941         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
6942         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
6943         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
6944         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
6945 };
6946 class C2Tuple_BlindedPayInfoBlindedPathZ {
6947 private:
6948         LDKC2Tuple_BlindedPayInfoBlindedPathZ self;
6949 public:
6950         C2Tuple_BlindedPayInfoBlindedPathZ(const C2Tuple_BlindedPayInfoBlindedPathZ&) = delete;
6951         C2Tuple_BlindedPayInfoBlindedPathZ(C2Tuple_BlindedPayInfoBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); }
6952         C2Tuple_BlindedPayInfoBlindedPathZ(LDKC2Tuple_BlindedPayInfoBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); }
6953         operator LDKC2Tuple_BlindedPayInfoBlindedPathZ() && { LDKC2Tuple_BlindedPayInfoBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); return res; }
6954         ~C2Tuple_BlindedPayInfoBlindedPathZ() { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); }
6955         C2Tuple_BlindedPayInfoBlindedPathZ& operator=(C2Tuple_BlindedPayInfoBlindedPathZ&& o) { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); return *this; }
6956         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() { return &self; }
6957         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() { return &self; }
6958         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() const { return &self; }
6959         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() const { return &self; }
6960 };
6961 class CResult_ChannelMonitorUpdateDecodeErrorZ {
6962 private:
6963         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
6964 public:
6965         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
6966         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
6967         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
6968         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
6969         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
6970         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
6971         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
6972         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
6973         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
6974         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
6975 };
6976 class CResult_ReplyChannelRangeDecodeErrorZ {
6977 private:
6978         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
6979 public:
6980         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
6981         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
6982         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
6983         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
6984         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
6985         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
6986         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
6987         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
6988         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
6989         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
6990 };
6991 class CResult_TrustedClosingTransactionNoneZ {
6992 private:
6993         LDKCResult_TrustedClosingTransactionNoneZ self;
6994 public:
6995         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
6996         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
6997         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
6998         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
6999         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
7000         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
7001         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
7002         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
7003         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
7004         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
7005 };
7006 class CResult_NetAddressDecodeErrorZ {
7007 private:
7008         LDKCResult_NetAddressDecodeErrorZ self;
7009 public:
7010         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
7011         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
7012         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
7013         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
7014         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
7015         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
7016         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
7017         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
7018         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
7019         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
7020 };
7021 class C2Tuple_PublicKeyTypeZ {
7022 private:
7023         LDKC2Tuple_PublicKeyTypeZ self;
7024 public:
7025         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
7026         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
7027         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
7028         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
7029         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
7030         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
7031         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
7032         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
7033         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
7034         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
7035 };
7036 class CResult_ChannelReestablishDecodeErrorZ {
7037 private:
7038         LDKCResult_ChannelReestablishDecodeErrorZ self;
7039 public:
7040         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
7041         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
7042         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
7043         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
7044         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
7045         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
7046         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
7047         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
7048         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
7049         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
7050 };
7051 class CResult_OnionMessageDecodeErrorZ {
7052 private:
7053         LDKCResult_OnionMessageDecodeErrorZ self;
7054 public:
7055         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
7056         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
7057         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
7058         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
7059         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
7060         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
7061         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
7062         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
7063         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
7064         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
7065 };
7066 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
7067 private:
7068         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
7069 public:
7070         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
7071         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
7072         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
7073         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
7074         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
7075         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
7076         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
7077         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
7078         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
7079         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
7080 };
7081 class CResult_InvoiceSignOrCreationErrorZ {
7082 private:
7083         LDKCResult_InvoiceSignOrCreationErrorZ self;
7084 public:
7085         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
7086         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
7087         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
7088         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
7089         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
7090         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
7091         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
7092         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
7093         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
7094         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
7095 };
7096 class CResult_InitFeaturesDecodeErrorZ {
7097 private:
7098         LDKCResult_InitFeaturesDecodeErrorZ self;
7099 public:
7100         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
7101         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
7102         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
7103         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
7104         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
7105         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
7106         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
7107         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
7108         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
7109         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
7110 };
7111 class CResult_PublicKeyNoneZ {
7112 private:
7113         LDKCResult_PublicKeyNoneZ self;
7114 public:
7115         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
7116         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
7117         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
7118         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
7119         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
7120         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
7121         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
7122         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
7123         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
7124         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
7125 };
7126 class CResult_PingDecodeErrorZ {
7127 private:
7128         LDKCResult_PingDecodeErrorZ self;
7129 public:
7130         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
7131         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
7132         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
7133         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
7134         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
7135         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
7136         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
7137         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
7138         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
7139         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
7140 };
7141 class CResult_BlindedHopFeaturesDecodeErrorZ {
7142 private:
7143         LDKCResult_BlindedHopFeaturesDecodeErrorZ self;
7144 public:
7145         CResult_BlindedHopFeaturesDecodeErrorZ(const CResult_BlindedHopFeaturesDecodeErrorZ&) = delete;
7146         CResult_BlindedHopFeaturesDecodeErrorZ(CResult_BlindedHopFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); }
7147         CResult_BlindedHopFeaturesDecodeErrorZ(LDKCResult_BlindedHopFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); }
7148         operator LDKCResult_BlindedHopFeaturesDecodeErrorZ() && { LDKCResult_BlindedHopFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); return res; }
7149         ~CResult_BlindedHopFeaturesDecodeErrorZ() { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); }
7150         CResult_BlindedHopFeaturesDecodeErrorZ& operator=(CResult_BlindedHopFeaturesDecodeErrorZ&& o) { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); return *this; }
7151         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() { return &self; }
7152         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() { return &self; }
7153         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() const { return &self; }
7154         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() const { return &self; }
7155 };
7156 class CVec_TransactionOutputsZ {
7157 private:
7158         LDKCVec_TransactionOutputsZ self;
7159 public:
7160         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
7161         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
7162         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
7163         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
7164         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
7165         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
7166         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
7167         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
7168         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
7169         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
7170 };
7171 class COption_HTLCClaimZ {
7172 private:
7173         LDKCOption_HTLCClaimZ self;
7174 public:
7175         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
7176         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
7177         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
7178         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
7179         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
7180         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
7181         LDKCOption_HTLCClaimZ* operator &() { return &self; }
7182         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
7183         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
7184         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
7185 };
7186 class CVec_CVec_u8ZZ {
7187 private:
7188         LDKCVec_CVec_u8ZZ self;
7189 public:
7190         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
7191         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
7192         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
7193         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
7194         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
7195         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; }
7196         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
7197         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
7198         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
7199         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
7200 };
7201 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ {
7202 private:
7203         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ self;
7204 public:
7205         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(const CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&) = delete;
7206         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
7207         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
7208         operator LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return res; }
7209         ~CResult_COption_CustomOnionMessageContentsZDecodeErrorZ() { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); }
7210         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; }
7211         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
7212         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
7213         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
7214         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
7215 };
7216 class CResult_ShutdownScriptDecodeErrorZ {
7217 private:
7218         LDKCResult_ShutdownScriptDecodeErrorZ self;
7219 public:
7220         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
7221         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
7222         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
7223         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
7224         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
7225         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
7226         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
7227         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
7228         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
7229         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
7230 };
7231 class CResult_ProbabilisticScorerDecodeErrorZ {
7232 private:
7233         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
7234 public:
7235         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
7236         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
7237         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
7238         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
7239         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
7240         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
7241         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
7242         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
7243         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
7244         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
7245 };
7246 class C2Tuple_usizeTransactionZ {
7247 private:
7248         LDKC2Tuple_usizeTransactionZ self;
7249 public:
7250         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
7251         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
7252         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
7253         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
7254         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
7255         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
7256         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
7257         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
7258         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
7259         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
7260 };
7261 class CResult_TxCreationKeysDecodeErrorZ {
7262 private:
7263         LDKCResult_TxCreationKeysDecodeErrorZ self;
7264 public:
7265         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
7266         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
7267         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
7268         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
7269         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
7270         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
7271         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
7272         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
7273         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
7274         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
7275 };
7276 class CResult_NodeAnnouncementDecodeErrorZ {
7277 private:
7278         LDKCResult_NodeAnnouncementDecodeErrorZ self;
7279 public:
7280         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
7281         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
7282         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
7283         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
7284         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
7285         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
7286         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
7287         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
7288         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
7289         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
7290 };
7291 class CVec_ChannelMonitorZ {
7292 private:
7293         LDKCVec_ChannelMonitorZ self;
7294 public:
7295         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
7296         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
7297         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
7298         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
7299         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
7300         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
7301         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
7302         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
7303         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
7304         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
7305 };
7306 class CResult_BlindedPathDecodeErrorZ {
7307 private:
7308         LDKCResult_BlindedPathDecodeErrorZ self;
7309 public:
7310         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
7311         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
7312         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
7313         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
7314         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
7315         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
7316         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
7317         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
7318         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
7319         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
7320 };
7321 class CVec_FutureZ {
7322 private:
7323         LDKCVec_FutureZ self;
7324 public:
7325         CVec_FutureZ(const CVec_FutureZ&) = delete;
7326         CVec_FutureZ(CVec_FutureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_FutureZ)); }
7327         CVec_FutureZ(LDKCVec_FutureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_FutureZ)); }
7328         operator LDKCVec_FutureZ() && { LDKCVec_FutureZ res = self; memset(&self, 0, sizeof(LDKCVec_FutureZ)); return res; }
7329         ~CVec_FutureZ() { CVec_FutureZ_free(self); }
7330         CVec_FutureZ& operator=(CVec_FutureZ&& o) { CVec_FutureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_FutureZ)); return *this; }
7331         LDKCVec_FutureZ* operator &() { return &self; }
7332         LDKCVec_FutureZ* operator ->() { return &self; }
7333         const LDKCVec_FutureZ* operator &() const { return &self; }
7334         const LDKCVec_FutureZ* operator ->() const { return &self; }
7335 };
7336 class CResult_RouteHopDecodeErrorZ {
7337 private:
7338         LDKCResult_RouteHopDecodeErrorZ self;
7339 public:
7340         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
7341         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
7342         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
7343         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
7344         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
7345         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
7346         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
7347         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
7348         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
7349         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
7350 };
7351 class CVec_BalanceZ {
7352 private:
7353         LDKCVec_BalanceZ self;
7354 public:
7355         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
7356         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
7357         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
7358         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
7359         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
7360         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
7361         LDKCVec_BalanceZ* operator &() { return &self; }
7362         LDKCVec_BalanceZ* operator ->() { return &self; }
7363         const LDKCVec_BalanceZ* operator &() const { return &self; }
7364         const LDKCVec_BalanceZ* operator ->() const { return &self; }
7365 };
7366 class CResult_FundingSignedDecodeErrorZ {
7367 private:
7368         LDKCResult_FundingSignedDecodeErrorZ self;
7369 public:
7370         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
7371         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
7372         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
7373         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
7374         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
7375         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
7376         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
7377         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
7378         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
7379         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
7380 };
7381 class CResult_RecoverableSignatureNoneZ {
7382 private:
7383         LDKCResult_RecoverableSignatureNoneZ self;
7384 public:
7385         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
7386         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
7387         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
7388         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
7389         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
7390         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
7391         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
7392         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
7393         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
7394         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
7395 };
7396 class C2Tuple_Z {
7397 private:
7398         LDKC2Tuple_Z self;
7399 public:
7400         C2Tuple_Z(const C2Tuple_Z&) = delete;
7401         C2Tuple_Z(C2Tuple_Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_Z)); }
7402         C2Tuple_Z(LDKC2Tuple_Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_Z)); }
7403         operator LDKC2Tuple_Z() && { LDKC2Tuple_Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_Z)); return res; }
7404         ~C2Tuple_Z() { C2Tuple_Z_free(self); }
7405         C2Tuple_Z& operator=(C2Tuple_Z&& o) { C2Tuple_Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_Z)); return *this; }
7406         LDKC2Tuple_Z* operator &() { return &self; }
7407         LDKC2Tuple_Z* operator ->() { return &self; }
7408         const LDKC2Tuple_Z* operator &() const { return &self; }
7409         const LDKC2Tuple_Z* operator ->() const { return &self; }
7410 };
7411 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
7412 private:
7413         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
7414 public:
7415         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
7416         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
7417         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
7418         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
7419         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
7420         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; }
7421         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
7422         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
7423         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
7424         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
7425 };
7426 class CVec_PathZ {
7427 private:
7428         LDKCVec_PathZ self;
7429 public:
7430         CVec_PathZ(const CVec_PathZ&) = delete;
7431         CVec_PathZ(CVec_PathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PathZ)); }
7432         CVec_PathZ(LDKCVec_PathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PathZ)); }
7433         operator LDKCVec_PathZ() && { LDKCVec_PathZ res = self; memset(&self, 0, sizeof(LDKCVec_PathZ)); return res; }
7434         ~CVec_PathZ() { CVec_PathZ_free(self); }
7435         CVec_PathZ& operator=(CVec_PathZ&& o) { CVec_PathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PathZ)); return *this; }
7436         LDKCVec_PathZ* operator &() { return &self; }
7437         LDKCVec_PathZ* operator ->() { return &self; }
7438         const LDKCVec_PathZ* operator &() const { return &self; }
7439         const LDKCVec_PathZ* operator ->() const { return &self; }
7440 };
7441 class CResult_NetworkGraphDecodeErrorZ {
7442 private:
7443         LDKCResult_NetworkGraphDecodeErrorZ self;
7444 public:
7445         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
7446         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
7447         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
7448         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
7449         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
7450         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
7451         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
7452         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
7453         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
7454         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
7455 };
7456 class CResult_NodeInfoDecodeErrorZ {
7457 private:
7458         LDKCResult_NodeInfoDecodeErrorZ self;
7459 public:
7460         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
7461         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
7462         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
7463         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
7464         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
7465         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
7466         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
7467         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
7468         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
7469         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
7470 };
7471 class CVec_NodeIdZ {
7472 private:
7473         LDKCVec_NodeIdZ self;
7474 public:
7475         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
7476         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
7477         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
7478         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
7479         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
7480         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
7481         LDKCVec_NodeIdZ* operator &() { return &self; }
7482         LDKCVec_NodeIdZ* operator ->() { return &self; }
7483         const LDKCVec_NodeIdZ* operator &() const { return &self; }
7484         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
7485 };
7486 class CVec_u8Z {
7487 private:
7488         LDKCVec_u8Z self;
7489 public:
7490         CVec_u8Z(const CVec_u8Z&) = delete;
7491         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
7492         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
7493         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
7494         ~CVec_u8Z() { CVec_u8Z_free(self); }
7495         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
7496         LDKCVec_u8Z* operator &() { return &self; }
7497         LDKCVec_u8Z* operator ->() { return &self; }
7498         const LDKCVec_u8Z* operator &() const { return &self; }
7499         const LDKCVec_u8Z* operator ->() const { return &self; }
7500 };
7501 class CResult_ChannelPublicKeysDecodeErrorZ {
7502 private:
7503         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
7504 public:
7505         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
7506         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
7507         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
7508         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
7509         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
7510         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
7511         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
7512         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
7513         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
7514         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
7515 };
7516 class CResult_RouteLightningErrorZ {
7517 private:
7518         LDKCResult_RouteLightningErrorZ self;
7519 public:
7520         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
7521         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
7522         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
7523         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
7524         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
7525         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
7526         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
7527         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
7528         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
7529         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
7530 };
7531 class CResult_NonePaymentSendFailureZ {
7532 private:
7533         LDKCResult_NonePaymentSendFailureZ self;
7534 public:
7535         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
7536         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
7537         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
7538         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
7539         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
7540         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
7541         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
7542         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
7543         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
7544         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
7545 };
7546 class CResult_HolderCommitmentTransactionDecodeErrorZ {
7547 private:
7548         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
7549 public:
7550         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
7551         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
7552         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
7553         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
7554         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
7555         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
7556         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7557         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7558         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7559         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7560 };
7561 class CResult_WarningMessageDecodeErrorZ {
7562 private:
7563         LDKCResult_WarningMessageDecodeErrorZ self;
7564 public:
7565         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
7566         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
7567         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
7568         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
7569         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
7570         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
7571         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
7572         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
7573         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
7574         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
7575 };
7576 class CResult_ChannelCounterpartyDecodeErrorZ {
7577 private:
7578         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
7579 public:
7580         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
7581         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
7582         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
7583         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
7584         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
7585         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
7586         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
7587         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
7588         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
7589         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
7590 };
7591 class CResult_SignatureNoneZ {
7592 private:
7593         LDKCResult_SignatureNoneZ self;
7594 public:
7595         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
7596         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
7597         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
7598         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
7599         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
7600         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
7601         LDKCResult_SignatureNoneZ* operator &() { return &self; }
7602         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
7603         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
7604         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
7605 };
7606 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
7607 private:
7608         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
7609 public:
7610         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
7611         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
7612         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
7613         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
7614         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
7615         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; }
7616         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
7617         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
7618         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
7619         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
7620 };
7621 class CResult_InitDecodeErrorZ {
7622 private:
7623         LDKCResult_InitDecodeErrorZ self;
7624 public:
7625         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
7626         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
7627         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
7628         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
7629         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
7630         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
7631         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
7632         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
7633         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
7634         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
7635 };
7636 class CVec_MonitorUpdateIdZ {
7637 private:
7638         LDKCVec_MonitorUpdateIdZ self;
7639 public:
7640         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
7641         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
7642         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
7643         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
7644         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
7645         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
7646         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
7647         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
7648         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
7649         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
7650 };
7651 class CResult_PaymentPurposeDecodeErrorZ {
7652 private:
7653         LDKCResult_PaymentPurposeDecodeErrorZ self;
7654 public:
7655         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
7656         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
7657         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
7658         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
7659         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
7660         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
7661         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
7662         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
7663         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
7664         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
7665 };
7666 class CResult_OutPointDecodeErrorZ {
7667 private:
7668         LDKCResult_OutPointDecodeErrorZ self;
7669 public:
7670         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
7671         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
7672         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
7673         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
7674         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
7675         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
7676         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
7677         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
7678         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
7679         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
7680 };
7681 class CVec_ChannelDetailsZ {
7682 private:
7683         LDKCVec_ChannelDetailsZ self;
7684 public:
7685         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
7686         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
7687         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
7688         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
7689         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
7690         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
7691         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
7692         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
7693         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
7694         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
7695 };
7696 class CVec_MessageSendEventZ {
7697 private:
7698         LDKCVec_MessageSendEventZ self;
7699 public:
7700         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
7701         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
7702         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
7703         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
7704         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
7705         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
7706         LDKCVec_MessageSendEventZ* operator &() { return &self; }
7707         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
7708         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
7709         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
7710 };
7711 class COption_NetAddressZ {
7712 private:
7713         LDKCOption_NetAddressZ self;
7714 public:
7715         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
7716         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
7717         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
7718         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
7719         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
7720         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
7721         LDKCOption_NetAddressZ* operator &() { return &self; }
7722         LDKCOption_NetAddressZ* operator ->() { return &self; }
7723         const LDKCOption_NetAddressZ* operator &() const { return &self; }
7724         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
7725 };
7726 class C2Tuple_OutPointScriptZ {
7727 private:
7728         LDKC2Tuple_OutPointScriptZ self;
7729 public:
7730         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
7731         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
7732         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
7733         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
7734         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
7735         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
7736         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
7737         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
7738         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
7739         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
7740 };
7741 class CResult_RouteHintHopDecodeErrorZ {
7742 private:
7743         LDKCResult_RouteHintHopDecodeErrorZ self;
7744 public:
7745         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
7746         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
7747         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
7748         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
7749         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
7750         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
7751         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
7752         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
7753         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
7754         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
7755 };
7756 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
7757 private:
7758         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
7759 public:
7760         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
7761         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7762         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7763         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
7764         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
7765         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
7766         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
7767         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
7768         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
7769         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
7770 };
7771 class CResult_BlindedPayInfoDecodeErrorZ {
7772 private:
7773         LDKCResult_BlindedPayInfoDecodeErrorZ self;
7774 public:
7775         CResult_BlindedPayInfoDecodeErrorZ(const CResult_BlindedPayInfoDecodeErrorZ&) = delete;
7776         CResult_BlindedPayInfoDecodeErrorZ(CResult_BlindedPayInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); }
7777         CResult_BlindedPayInfoDecodeErrorZ(LDKCResult_BlindedPayInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); }
7778         operator LDKCResult_BlindedPayInfoDecodeErrorZ() && { LDKCResult_BlindedPayInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); return res; }
7779         ~CResult_BlindedPayInfoDecodeErrorZ() { CResult_BlindedPayInfoDecodeErrorZ_free(self); }
7780         CResult_BlindedPayInfoDecodeErrorZ& operator=(CResult_BlindedPayInfoDecodeErrorZ&& o) { CResult_BlindedPayInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); return *this; }
7781         LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() { return &self; }
7782         LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() { return &self; }
7783         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() const { return &self; }
7784         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() const { return &self; }
7785 };
7786 class CResult_SharedSecretNoneZ {
7787 private:
7788         LDKCResult_SharedSecretNoneZ self;
7789 public:
7790         CResult_SharedSecretNoneZ(const CResult_SharedSecretNoneZ&) = delete;
7791         CResult_SharedSecretNoneZ(CResult_SharedSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); }
7792         CResult_SharedSecretNoneZ(LDKCResult_SharedSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); }
7793         operator LDKCResult_SharedSecretNoneZ() && { LDKCResult_SharedSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); return res; }
7794         ~CResult_SharedSecretNoneZ() { CResult_SharedSecretNoneZ_free(self); }
7795         CResult_SharedSecretNoneZ& operator=(CResult_SharedSecretNoneZ&& o) { CResult_SharedSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); return *this; }
7796         LDKCResult_SharedSecretNoneZ* operator &() { return &self; }
7797         LDKCResult_SharedSecretNoneZ* operator ->() { return &self; }
7798         const LDKCResult_SharedSecretNoneZ* operator &() const { return &self; }
7799         const LDKCResult_SharedSecretNoneZ* operator ->() const { return &self; }
7800 };
7801 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
7802 private:
7803         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
7804 public:
7805         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
7806         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7807         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7808         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
7809         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
7810         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; }
7811         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
7812         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
7813         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
7814         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
7815 };
7816 class CResult_CVec_CVec_u8ZZNoneZ {
7817 private:
7818         LDKCResult_CVec_CVec_u8ZZNoneZ self;
7819 public:
7820         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
7821         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
7822         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
7823         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
7824         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
7825         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; }
7826         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
7827         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
7828         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
7829         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
7830 };
7831 class C2Tuple_PaymentHashPaymentSecretZ {
7832 private:
7833         LDKC2Tuple_PaymentHashPaymentSecretZ self;
7834 public:
7835         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
7836         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
7837         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
7838         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
7839         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
7840         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
7841         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
7842         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
7843         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
7844         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
7845 };
7846 class CResult_AcceptChannelDecodeErrorZ {
7847 private:
7848         LDKCResult_AcceptChannelDecodeErrorZ self;
7849 public:
7850         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
7851         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
7852         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
7853         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
7854         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
7855         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
7856         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
7857         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
7858         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
7859         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
7860 };
7861 class CVec_SignatureZ {
7862 private:
7863         LDKCVec_SignatureZ self;
7864 public:
7865         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
7866         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
7867         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
7868         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
7869         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
7870         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
7871         LDKCVec_SignatureZ* operator &() { return &self; }
7872         LDKCVec_SignatureZ* operator ->() { return &self; }
7873         const LDKCVec_SignatureZ* operator &() const { return &self; }
7874         const LDKCVec_SignatureZ* operator ->() const { return &self; }
7875 };
7876 class CVec_u64Z {
7877 private:
7878         LDKCVec_u64Z self;
7879 public:
7880         CVec_u64Z(const CVec_u64Z&) = delete;
7881         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
7882         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
7883         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
7884         ~CVec_u64Z() { CVec_u64Z_free(self); }
7885         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
7886         LDKCVec_u64Z* operator &() { return &self; }
7887         LDKCVec_u64Z* operator ->() { return &self; }
7888         const LDKCVec_u64Z* operator &() const { return &self; }
7889         const LDKCVec_u64Z* operator ->() const { return &self; }
7890 };
7891 class CResult_StringErrorZ {
7892 private:
7893         LDKCResult_StringErrorZ self;
7894 public:
7895         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
7896         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
7897         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
7898         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
7899         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
7900         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
7901         LDKCResult_StringErrorZ* operator &() { return &self; }
7902         LDKCResult_StringErrorZ* operator ->() { return &self; }
7903         const LDKCResult_StringErrorZ* operator &() const { return &self; }
7904         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
7905 };
7906 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
7907 private:
7908         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
7909 public:
7910         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
7911         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7912         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7913         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
7914         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
7915         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; }
7916         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
7917         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
7918         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
7919         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
7920 };
7921 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
7922 private:
7923         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
7924 public:
7925         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
7926         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7927         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7928         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
7929         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
7930         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; }
7931         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
7932         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
7933         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
7934         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
7935 };
7936 class COption_EventZ {
7937 private:
7938         LDKCOption_EventZ self;
7939 public:
7940         COption_EventZ(const COption_EventZ&) = delete;
7941         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
7942         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
7943         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
7944         ~COption_EventZ() { COption_EventZ_free(self); }
7945         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
7946         LDKCOption_EventZ* operator &() { return &self; }
7947         LDKCOption_EventZ* operator ->() { return &self; }
7948         const LDKCOption_EventZ* operator &() const { return &self; }
7949         const LDKCOption_EventZ* operator ->() const { return &self; }
7950 };
7951 class CResult_ChannelTypeFeaturesDecodeErrorZ {
7952 private:
7953         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
7954 public:
7955         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
7956         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
7957         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
7958         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
7959         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
7960         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
7961         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
7962         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
7963         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
7964         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
7965 };
7966 class CVec_RouteHintZ {
7967 private:
7968         LDKCVec_RouteHintZ self;
7969 public:
7970         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
7971         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
7972         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
7973         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
7974         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
7975         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
7976         LDKCVec_RouteHintZ* operator &() { return &self; }
7977         LDKCVec_RouteHintZ* operator ->() { return &self; }
7978         const LDKCVec_RouteHintZ* operator &() const { return &self; }
7979         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
7980 };
7981 class COption_PaymentFailureReasonZ {
7982 private:
7983         LDKCOption_PaymentFailureReasonZ self;
7984 public:
7985         COption_PaymentFailureReasonZ(const COption_PaymentFailureReasonZ&) = delete;
7986         COption_PaymentFailureReasonZ(COption_PaymentFailureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); }
7987         COption_PaymentFailureReasonZ(LDKCOption_PaymentFailureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); }
7988         operator LDKCOption_PaymentFailureReasonZ() && { LDKCOption_PaymentFailureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); return res; }
7989         ~COption_PaymentFailureReasonZ() { COption_PaymentFailureReasonZ_free(self); }
7990         COption_PaymentFailureReasonZ& operator=(COption_PaymentFailureReasonZ&& o) { COption_PaymentFailureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); return *this; }
7991         LDKCOption_PaymentFailureReasonZ* operator &() { return &self; }
7992         LDKCOption_PaymentFailureReasonZ* operator ->() { return &self; }
7993         const LDKCOption_PaymentFailureReasonZ* operator &() const { return &self; }
7994         const LDKCOption_PaymentFailureReasonZ* operator ->() const { return &self; }
7995 };
7996 class COption_u16Z {
7997 private:
7998         LDKCOption_u16Z self;
7999 public:
8000         COption_u16Z(const COption_u16Z&) = delete;
8001         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
8002         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
8003         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
8004         ~COption_u16Z() { COption_u16Z_free(self); }
8005         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
8006         LDKCOption_u16Z* operator &() { return &self; }
8007         LDKCOption_u16Z* operator ->() { return &self; }
8008         const LDKCOption_u16Z* operator &() const { return &self; }
8009         const LDKCOption_u16Z* operator ->() const { return &self; }
8010 };
8011 class CVec_ChainHashZ {
8012 private:
8013         LDKCVec_ChainHashZ self;
8014 public:
8015         CVec_ChainHashZ(const CVec_ChainHashZ&) = delete;
8016         CVec_ChainHashZ(CVec_ChainHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChainHashZ)); }
8017         CVec_ChainHashZ(LDKCVec_ChainHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChainHashZ)); }
8018         operator LDKCVec_ChainHashZ() && { LDKCVec_ChainHashZ res = self; memset(&self, 0, sizeof(LDKCVec_ChainHashZ)); return res; }
8019         ~CVec_ChainHashZ() { CVec_ChainHashZ_free(self); }
8020         CVec_ChainHashZ& operator=(CVec_ChainHashZ&& o) { CVec_ChainHashZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChainHashZ)); return *this; }
8021         LDKCVec_ChainHashZ* operator &() { return &self; }
8022         LDKCVec_ChainHashZ* operator ->() { return &self; }
8023         const LDKCVec_ChainHashZ* operator &() const { return &self; }
8024         const LDKCVec_ChainHashZ* operator ->() const { return &self; }
8025 };
8026 class CResult_BlindedTailDecodeErrorZ {
8027 private:
8028         LDKCResult_BlindedTailDecodeErrorZ self;
8029 public:
8030         CResult_BlindedTailDecodeErrorZ(const CResult_BlindedTailDecodeErrorZ&) = delete;
8031         CResult_BlindedTailDecodeErrorZ(CResult_BlindedTailDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); }
8032         CResult_BlindedTailDecodeErrorZ(LDKCResult_BlindedTailDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); }
8033         operator LDKCResult_BlindedTailDecodeErrorZ() && { LDKCResult_BlindedTailDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); return res; }
8034         ~CResult_BlindedTailDecodeErrorZ() { CResult_BlindedTailDecodeErrorZ_free(self); }
8035         CResult_BlindedTailDecodeErrorZ& operator=(CResult_BlindedTailDecodeErrorZ&& o) { CResult_BlindedTailDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); return *this; }
8036         LDKCResult_BlindedTailDecodeErrorZ* operator &() { return &self; }
8037         LDKCResult_BlindedTailDecodeErrorZ* operator ->() { return &self; }
8038         const LDKCResult_BlindedTailDecodeErrorZ* operator &() const { return &self; }
8039         const LDKCResult_BlindedTailDecodeErrorZ* operator ->() const { return &self; }
8040 };
8041 class CVec_C2Tuple_PublicKeyTypeZZ {
8042 private:
8043         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
8044 public:
8045         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
8046         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
8047         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
8048         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
8049         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
8050         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; }
8051         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
8052         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
8053         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
8054         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
8055 };
8056 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
8057 private:
8058         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
8059 public:
8060         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
8061         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
8062         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
8063         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
8064         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
8065         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; }
8066         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
8067         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
8068         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
8069         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
8070 };
8071 class CResult_u32GraphSyncErrorZ {
8072 private:
8073         LDKCResult_u32GraphSyncErrorZ self;
8074 public:
8075         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
8076         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
8077         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
8078         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
8079         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
8080         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
8081         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
8082         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
8083         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
8084         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
8085 };
8086 class CVec_PhantomRouteHintsZ {
8087 private:
8088         LDKCVec_PhantomRouteHintsZ self;
8089 public:
8090         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
8091         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
8092         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
8093         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
8094         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
8095         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
8096         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
8097         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
8098         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
8099         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
8100 };
8101 class CResult_NoneAPIErrorZ {
8102 private:
8103         LDKCResult_NoneAPIErrorZ self;
8104 public:
8105         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
8106         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
8107         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
8108         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
8109         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
8110         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
8111         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
8112         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
8113         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
8114         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
8115 };
8116 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
8117 private:
8118         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
8119 public:
8120         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
8121         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
8122         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
8123         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
8124         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
8125         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
8126         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
8127         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
8128         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
8129         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
8130 };
8131 class CVec_NetAddressZ {
8132 private:
8133         LDKCVec_NetAddressZ self;
8134 public:
8135         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
8136         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
8137         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
8138         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
8139         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
8140         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
8141         LDKCVec_NetAddressZ* operator &() { return &self; }
8142         LDKCVec_NetAddressZ* operator ->() { return &self; }
8143         const LDKCVec_NetAddressZ* operator &() const { return &self; }
8144         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
8145 };
8146 class CResult_ChannelDetailsDecodeErrorZ {
8147 private:
8148         LDKCResult_ChannelDetailsDecodeErrorZ self;
8149 public:
8150         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
8151         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
8152         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
8153         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
8154         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
8155         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
8156         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
8157         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
8158         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
8159         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
8160 };
8161 class CVec_C2Tuple_usizeTransactionZZ {
8162 private:
8163         LDKCVec_C2Tuple_usizeTransactionZZ self;
8164 public:
8165         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
8166         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
8167         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
8168         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
8169         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
8170         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; }
8171         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
8172         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
8173         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
8174         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
8175 };
8176 class CVec_PublicKeyZ {
8177 private:
8178         LDKCVec_PublicKeyZ self;
8179 public:
8180         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
8181         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
8182         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
8183         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
8184         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
8185         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
8186         LDKCVec_PublicKeyZ* operator &() { return &self; }
8187         LDKCVec_PublicKeyZ* operator ->() { return &self; }
8188         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
8189         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
8190 };
8191 class C2Tuple_u64u64Z {
8192 private:
8193         LDKC2Tuple_u64u64Z self;
8194 public:
8195         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
8196         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
8197         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
8198         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
8199         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
8200         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
8201         LDKC2Tuple_u64u64Z* operator &() { return &self; }
8202         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
8203         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
8204         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
8205 };
8206 class CResult_RecipientOnionFieldsDecodeErrorZ {
8207 private:
8208         LDKCResult_RecipientOnionFieldsDecodeErrorZ self;
8209 public:
8210         CResult_RecipientOnionFieldsDecodeErrorZ(const CResult_RecipientOnionFieldsDecodeErrorZ&) = delete;
8211         CResult_RecipientOnionFieldsDecodeErrorZ(CResult_RecipientOnionFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); }
8212         CResult_RecipientOnionFieldsDecodeErrorZ(LDKCResult_RecipientOnionFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); }
8213         operator LDKCResult_RecipientOnionFieldsDecodeErrorZ() && { LDKCResult_RecipientOnionFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); return res; }
8214         ~CResult_RecipientOnionFieldsDecodeErrorZ() { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); }
8215         CResult_RecipientOnionFieldsDecodeErrorZ& operator=(CResult_RecipientOnionFieldsDecodeErrorZ&& o) { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); return *this; }
8216         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() { return &self; }
8217         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() { return &self; }
8218         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() const { return &self; }
8219         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() const { return &self; }
8220 };
8221 class C2Tuple_u32TxOutZ {
8222 private:
8223         LDKC2Tuple_u32TxOutZ self;
8224 public:
8225         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
8226         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
8227         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
8228         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
8229         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
8230         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
8231         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
8232         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
8233         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
8234         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
8235 };
8236 class CResult_PaymentSecretNoneZ {
8237 private:
8238         LDKCResult_PaymentSecretNoneZ self;
8239 public:
8240         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
8241         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
8242         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
8243         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
8244         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
8245         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
8246         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
8247         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
8248         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
8249         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
8250 };
8251 class CResult_ChannelConfigDecodeErrorZ {
8252 private:
8253         LDKCResult_ChannelConfigDecodeErrorZ self;
8254 public:
8255         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
8256         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
8257         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
8258         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
8259         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
8260         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
8261         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
8262         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
8263         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
8264         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
8265 };
8266 class CVec_PrivateRouteZ {
8267 private:
8268         LDKCVec_PrivateRouteZ self;
8269 public:
8270         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
8271         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
8272         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
8273         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
8274         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
8275         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
8276         LDKCVec_PrivateRouteZ* operator &() { return &self; }
8277         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
8278         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
8279         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
8280 };
8281 class CResult_BlindedPathNoneZ {
8282 private:
8283         LDKCResult_BlindedPathNoneZ self;
8284 public:
8285         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
8286         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
8287         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
8288         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
8289         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
8290         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
8291         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
8292         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
8293         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
8294         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
8295 };
8296 class CResult_ShutdownDecodeErrorZ {
8297 private:
8298         LDKCResult_ShutdownDecodeErrorZ self;
8299 public:
8300         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
8301         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
8302         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
8303         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
8304         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
8305         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
8306         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
8307         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
8308         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
8309         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
8310 };
8311 class CResult_TxOutUtxoLookupErrorZ {
8312 private:
8313         LDKCResult_TxOutUtxoLookupErrorZ self;
8314 public:
8315         CResult_TxOutUtxoLookupErrorZ(const CResult_TxOutUtxoLookupErrorZ&) = delete;
8316         CResult_TxOutUtxoLookupErrorZ(CResult_TxOutUtxoLookupErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); }
8317         CResult_TxOutUtxoLookupErrorZ(LDKCResult_TxOutUtxoLookupErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); }
8318         operator LDKCResult_TxOutUtxoLookupErrorZ() && { LDKCResult_TxOutUtxoLookupErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); return res; }
8319         ~CResult_TxOutUtxoLookupErrorZ() { CResult_TxOutUtxoLookupErrorZ_free(self); }
8320         CResult_TxOutUtxoLookupErrorZ& operator=(CResult_TxOutUtxoLookupErrorZ&& o) { CResult_TxOutUtxoLookupErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); return *this; }
8321         LDKCResult_TxOutUtxoLookupErrorZ* operator &() { return &self; }
8322         LDKCResult_TxOutUtxoLookupErrorZ* operator ->() { return &self; }
8323         const LDKCResult_TxOutUtxoLookupErrorZ* operator &() const { return &self; }
8324         const LDKCResult_TxOutUtxoLookupErrorZ* operator ->() const { return &self; }
8325 };
8326 class CVec_MonitorEventZ {
8327 private:
8328         LDKCVec_MonitorEventZ self;
8329 public:
8330         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
8331         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
8332         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
8333         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
8334         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
8335         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
8336         LDKCVec_MonitorEventZ* operator &() { return &self; }
8337         LDKCVec_MonitorEventZ* operator ->() { return &self; }
8338         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
8339         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
8340 };
8341 class CVec_PaymentPreimageZ {
8342 private:
8343         LDKCVec_PaymentPreimageZ self;
8344 public:
8345         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
8346         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
8347         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
8348         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
8349         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
8350         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
8351         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
8352         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
8353         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
8354         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
8355 };
8356 class CResult_PublicKeyErrorZ {
8357 private:
8358         LDKCResult_PublicKeyErrorZ self;
8359 public:
8360         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
8361         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
8362         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
8363         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
8364         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
8365         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
8366         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
8367         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
8368         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
8369         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
8370 };
8371 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
8372 private:
8373         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
8374 public:
8375         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
8376         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
8377         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
8378         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
8379         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
8380         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; }
8381         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
8382         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
8383         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
8384         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
8385 };
8386 class CResult_NoneNoneZ {
8387 private:
8388         LDKCResult_NoneNoneZ self;
8389 public:
8390         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
8391         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
8392         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
8393         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
8394         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
8395         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
8396         LDKCResult_NoneNoneZ* operator &() { return &self; }
8397         LDKCResult_NoneNoneZ* operator ->() { return &self; }
8398         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
8399         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
8400 };
8401 class COption_ClosureReasonZ {
8402 private:
8403         LDKCOption_ClosureReasonZ self;
8404 public:
8405         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
8406         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
8407         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
8408         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
8409         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
8410         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
8411         LDKCOption_ClosureReasonZ* operator &() { return &self; }
8412         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
8413         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
8414         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
8415 };
8416 class COption_u128Z {
8417 private:
8418         LDKCOption_u128Z self;
8419 public:
8420         COption_u128Z(const COption_u128Z&) = delete;
8421         COption_u128Z(COption_u128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u128Z)); }
8422         COption_u128Z(LDKCOption_u128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u128Z)); }
8423         operator LDKCOption_u128Z() && { LDKCOption_u128Z res = self; memset(&self, 0, sizeof(LDKCOption_u128Z)); return res; }
8424         ~COption_u128Z() { COption_u128Z_free(self); }
8425         COption_u128Z& operator=(COption_u128Z&& o) { COption_u128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u128Z)); return *this; }
8426         LDKCOption_u128Z* operator &() { return &self; }
8427         LDKCOption_u128Z* operator ->() { return &self; }
8428         const LDKCOption_u128Z* operator &() const { return &self; }
8429         const LDKCOption_u128Z* operator ->() const { return &self; }
8430 };
8431 class CVec_APIErrorZ {
8432 private:
8433         LDKCVec_APIErrorZ self;
8434 public:
8435         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
8436         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
8437         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
8438         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
8439         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
8440         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
8441         LDKCVec_APIErrorZ* operator &() { return &self; }
8442         LDKCVec_APIErrorZ* operator ->() { return &self; }
8443         const LDKCVec_APIErrorZ* operator &() const { return &self; }
8444         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
8445 };
8446 class CResult_boolPeerHandleErrorZ {
8447 private:
8448         LDKCResult_boolPeerHandleErrorZ self;
8449 public:
8450         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
8451         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
8452         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
8453         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
8454         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
8455         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
8456         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
8457         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
8458         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
8459         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
8460 };
8461 class CVec_AddressZ {
8462 private:
8463         LDKCVec_AddressZ self;
8464 public:
8465         CVec_AddressZ(const CVec_AddressZ&) = delete;
8466         CVec_AddressZ(CVec_AddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_AddressZ)); }
8467         CVec_AddressZ(LDKCVec_AddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_AddressZ)); }
8468         operator LDKCVec_AddressZ() && { LDKCVec_AddressZ res = self; memset(&self, 0, sizeof(LDKCVec_AddressZ)); return res; }
8469         ~CVec_AddressZ() { CVec_AddressZ_free(self); }
8470         CVec_AddressZ& operator=(CVec_AddressZ&& o) { CVec_AddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_AddressZ)); return *this; }
8471         LDKCVec_AddressZ* operator &() { return &self; }
8472         LDKCVec_AddressZ* operator ->() { return &self; }
8473         const LDKCVec_AddressZ* operator &() const { return &self; }
8474         const LDKCVec_AddressZ* operator ->() const { return &self; }
8475 };
8476 class CResult_ChannelUpdateDecodeErrorZ {
8477 private:
8478         LDKCResult_ChannelUpdateDecodeErrorZ self;
8479 public:
8480         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
8481         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
8482         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
8483         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
8484         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
8485         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
8486         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
8487         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
8488         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
8489         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
8490 };
8491 class CResult_PaymentSecretAPIErrorZ {
8492 private:
8493         LDKCResult_PaymentSecretAPIErrorZ self;
8494 public:
8495         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
8496         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
8497         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
8498         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
8499         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
8500         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
8501         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
8502         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
8503         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
8504         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
8505 };
8506 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
8507 private:
8508         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
8509 public:
8510         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
8511         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
8512         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
8513         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
8514         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
8515         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
8516         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
8517         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
8518         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
8519         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
8520 };
8521 class C2Tuple_u32ScriptZ {
8522 private:
8523         LDKC2Tuple_u32ScriptZ self;
8524 public:
8525         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
8526         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
8527         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
8528         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
8529         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
8530         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
8531         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
8532         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
8533         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
8534         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
8535 };
8536 class CResult_SignedRawInvoiceParseErrorZ {
8537 private:
8538         LDKCResult_SignedRawInvoiceParseErrorZ self;
8539 public:
8540         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
8541         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
8542         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
8543         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
8544         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
8545         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
8546         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
8547         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
8548         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
8549         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
8550 };
8551 class COption_C2Tuple_EightU16sEightU16sZZ {
8552 private:
8553         LDKCOption_C2Tuple_EightU16sEightU16sZZ self;
8554 public:
8555         COption_C2Tuple_EightU16sEightU16sZZ(const COption_C2Tuple_EightU16sEightU16sZZ&) = delete;
8556         COption_C2Tuple_EightU16sEightU16sZZ(COption_C2Tuple_EightU16sEightU16sZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_EightU16sEightU16sZZ)); }
8557         COption_C2Tuple_EightU16sEightU16sZZ(LDKCOption_C2Tuple_EightU16sEightU16sZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); }
8558         operator LDKCOption_C2Tuple_EightU16sEightU16sZZ() && { LDKCOption_C2Tuple_EightU16sEightU16sZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); return res; }
8559         ~COption_C2Tuple_EightU16sEightU16sZZ() { COption_C2Tuple_EightU16sEightU16sZZ_free(self); }
8560         COption_C2Tuple_EightU16sEightU16sZZ& operator=(COption_C2Tuple_EightU16sEightU16sZZ&& o) { COption_C2Tuple_EightU16sEightU16sZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_EightU16sEightU16sZZ)); return *this; }
8561         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() { return &self; }
8562         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() { return &self; }
8563         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() const { return &self; }
8564         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() const { return &self; }
8565 };
8566 class CResult_RouteDecodeErrorZ {
8567 private:
8568         LDKCResult_RouteDecodeErrorZ self;
8569 public:
8570         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
8571         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
8572         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
8573         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
8574         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
8575         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
8576         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
8577         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
8578         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
8579         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
8580 };
8581 class COption_NoneZ {
8582 private:
8583         LDKCOption_NoneZ self;
8584 public:
8585         COption_NoneZ(const COption_NoneZ&) = delete;
8586         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
8587         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
8588         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
8589         ~COption_NoneZ() { COption_NoneZ_free(self); }
8590         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
8591         LDKCOption_NoneZ* operator &() { return &self; }
8592         LDKCOption_NoneZ* operator ->() { return &self; }
8593         const LDKCOption_NoneZ* operator &() const { return &self; }
8594         const LDKCOption_NoneZ* operator ->() const { return &self; }
8595 };
8596 class COption_CVec_u8ZZ {
8597 private:
8598         LDKCOption_CVec_u8ZZ self;
8599 public:
8600         COption_CVec_u8ZZ(const COption_CVec_u8ZZ&) = delete;
8601         COption_CVec_u8ZZ(COption_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_u8ZZ)); }
8602         COption_CVec_u8ZZ(LDKCOption_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_u8ZZ)); }
8603         operator LDKCOption_CVec_u8ZZ() && { LDKCOption_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_u8ZZ)); return res; }
8604         ~COption_CVec_u8ZZ() { COption_CVec_u8ZZ_free(self); }
8605         COption_CVec_u8ZZ& operator=(COption_CVec_u8ZZ&& o) { COption_CVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CVec_u8ZZ)); return *this; }
8606         LDKCOption_CVec_u8ZZ* operator &() { return &self; }
8607         LDKCOption_CVec_u8ZZ* operator ->() { return &self; }
8608         const LDKCOption_CVec_u8ZZ* operator &() const { return &self; }
8609         const LDKCOption_CVec_u8ZZ* operator ->() const { return &self; }
8610 };
8611
8612 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs) {
8613         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
8614         return ret;
8615 }
8616 inline LDK::CResult_RouteLightningErrorZ Router::find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id) {
8617         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
8618         return ret;
8619 }
8620 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
8621         (self.broadcast_transaction)(self.this_arg, tx);
8622 }
8623 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
8624         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
8625         return ret;
8626 }
8627 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
8628         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
8629 }
8630 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
8631         (self.block_connected)(self.this_arg, block, height);
8632 }
8633 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
8634         (self.block_disconnected)(self.this_arg, header, height);
8635 }
8636 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
8637         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
8638 }
8639 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
8640         (self.transaction_unconfirmed)(self.this_arg, txid);
8641 }
8642 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
8643         (self.best_block_updated)(self.this_arg, header, height);
8644 }
8645 inline LDK::CVec_C2Tuple_TxidBlockHashZZ Confirm::get_relevant_txids() {
8646         LDK::CVec_C2Tuple_TxidBlockHashZZ ret = (self.get_relevant_txids)(self.this_arg);
8647         return ret;
8648 }
8649 inline LDK::ChannelMonitorUpdateStatus Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
8650         LDK::ChannelMonitorUpdateStatus ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
8651         return ret;
8652 }
8653 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update) {
8654         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
8655         return ret;
8656 }
8657 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
8658         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
8659         return ret;
8660 }
8661 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
8662         (self.register_tx)(self.this_arg, txid, script_pubkey);
8663 }
8664 inline void Filter::register_output(struct LDKWatchedOutput output) {
8665         (self.register_output)(self.this_arg, output);
8666 }
8667 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) {
8668         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
8669         return ret;
8670 }
8671 inline void Score::payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id) {
8672         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
8673 }
8674 inline void Score::payment_path_successful(const struct LDKPath *NONNULL_PTR path) {
8675         (self.payment_path_successful)(self.this_arg, path);
8676 }
8677 inline void Score::probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id) {
8678         (self.probe_failed)(self.this_arg, path, short_channel_id);
8679 }
8680 inline void Score::probe_successful(const struct LDKPath *NONNULL_PTR path) {
8681         (self.probe_successful)(self.this_arg, path);
8682 }
8683 inline LDK::Score LockableScore::lock() {
8684         LDK::Score ret = (self.lock)(self.this_arg);
8685         return ret;
8686 }
8687 inline uint64_t CustomOnionMessageContents::tlv_type() {
8688         uint64_t ret = (self.tlv_type)(self.this_arg);
8689         return ret;
8690 }
8691 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
8692         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
8693         return ret;
8694 }
8695 inline LDK::OnionMessage OnionMessageProvider::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
8696         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
8697         return ret;
8698 }
8699 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
8700         (self.process_pending_events)(self.this_arg, handler);
8701 }
8702 inline void EventHandler::handle_event(struct LDKEvent event) {
8703         (self.handle_event)(self.this_arg, event);
8704 }
8705 inline LDKPublicKey ChannelSigner::get_per_commitment_point(uint64_t idx) {
8706         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
8707         return ret;
8708 }
8709 inline LDKThirtyTwoBytes ChannelSigner::release_commitment_secret(uint64_t idx) {
8710         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
8711         return ret;
8712 }
8713 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8714         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
8715         return ret;
8716 }
8717 inline LDKThirtyTwoBytes ChannelSigner::channel_keys_id() {
8718         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
8719         return ret;
8720 }
8721 inline void ChannelSigner::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
8722         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
8723 }
8724 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8725         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
8726         return ret;
8727 }
8728 inline LDK::CResult_NoneNoneZ EcdsaChannelSigner::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
8729         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
8730         return ret;
8731 }
8732 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
8733         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
8734         return ret;
8735 }
8736 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]) {
8737         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
8738         return ret;
8739 }
8740 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::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) {
8741         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
8742         return ret;
8743 }
8744 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::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) {
8745         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
8746         return ret;
8747 }
8748 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
8749         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
8750         return ret;
8751 }
8752 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
8753         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
8754         return ret;
8755 }
8756 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
8757         LDK::CResult_SignatureNoneZ ret = (self.sign_channel_announcement_with_funding_key)(self.this_arg, msg);
8758         return ret;
8759 }
8760 inline LDKThirtyTwoBytes EntropySource::get_secure_random_bytes() {
8761         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
8762         return ret;
8763 }
8764 inline LDKThirtyTwoBytes NodeSigner::get_inbound_payment_key_material() {
8765         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
8766         return ret;
8767 }
8768 inline LDK::CResult_PublicKeyNoneZ NodeSigner::get_node_id(enum LDKRecipient recipient) {
8769         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
8770         return ret;
8771 }
8772 inline LDK::CResult_SharedSecretNoneZ NodeSigner::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak) {
8773         LDK::CResult_SharedSecretNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
8774         return ret;
8775 }
8776 inline LDK::CResult_RecoverableSignatureNoneZ NodeSigner::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient) {
8777         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, recipient);
8778         return ret;
8779 }
8780 inline LDK::CResult_SignatureNoneZ NodeSigner::sign_gossip_message(struct LDKUnsignedGossipMessage msg) {
8781         LDK::CResult_SignatureNoneZ ret = (self.sign_gossip_message)(self.this_arg, msg);
8782         return ret;
8783 }
8784 inline LDKThirtyTwoBytes SignerProvider::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
8785         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
8786         return ret;
8787 }
8788 inline LDK::WriteableEcdsaChannelSigner SignerProvider::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
8789         LDK::WriteableEcdsaChannelSigner ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
8790         return ret;
8791 }
8792 inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ SignerProvider::read_chan_signer(struct LDKu8slice reader) {
8793         LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
8794         return ret;
8795 }
8796 inline LDK::CVec_u8Z SignerProvider::get_destination_script() {
8797         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
8798         return ret;
8799 }
8800 inline LDK::ShutdownScript SignerProvider::get_shutdown_scriptpubkey() {
8801         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
8802         return ret;
8803 }
8804 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
8805         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
8806         return ret;
8807 }
8808 inline uint16_t Type::type_id() {
8809         uint16_t ret = (self.type_id)(self.this_arg);
8810         return ret;
8811 }
8812 inline LDK::Str Type::debug_str() {
8813         LDK::Str ret = (self.debug_str)(self.this_arg);
8814         return ret;
8815 }
8816 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
8817         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
8818         return ret;
8819 }
8820 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
8821         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
8822         return ret;
8823 }
8824 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
8825         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
8826         return ret;
8827 }
8828 inline void SocketDescriptor::disconnect_socket() {
8829         (self.disconnect_socket)(self.this_arg);
8830 }
8831 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
8832         bool ret = (self.eq)(self.this_arg, other_arg);
8833         return ret;
8834 }
8835 inline uint64_t SocketDescriptor::hash() {
8836         uint64_t ret = (self.hash)(self.this_arg);
8837         return ret;
8838 }
8839 inline LDK::UtxoResult UtxoLookup::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
8840         LDK::UtxoResult ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
8841         return ret;
8842 }
8843 inline void CustomOnionMessageHandler::handle_custom_message(struct LDKCustomOnionMessageContents msg) {
8844         (self.handle_custom_message)(self.this_arg, msg);
8845 }
8846 inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
8847         LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
8848         return ret;
8849 }
8850 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
8851         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
8852         return ret;
8853 }
8854 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
8855         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
8856         return ret;
8857 }
8858 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
8859         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
8860         return ret;
8861 }
8862 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg) {
8863         (self.handle_open_channel)(self.this_arg, their_node_id, msg);
8864 }
8865 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg) {
8866         (self.handle_accept_channel)(self.this_arg, their_node_id, msg);
8867 }
8868 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
8869         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
8870 }
8871 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
8872         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
8873 }
8874 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
8875         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
8876 }
8877 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg) {
8878         (self.handle_shutdown)(self.this_arg, their_node_id, msg);
8879 }
8880 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
8881         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
8882 }
8883 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
8884         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
8885 }
8886 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
8887         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
8888 }
8889 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
8890         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
8891 }
8892 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
8893         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
8894 }
8895 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
8896         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
8897 }
8898 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
8899         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
8900 }
8901 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
8902         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
8903 }
8904 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
8905         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
8906 }
8907 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
8908         (self.peer_disconnected)(self.this_arg, their_node_id);
8909 }
8910 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound) {
8911         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg, inbound);
8912         return ret;
8913 }
8914 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
8915         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
8916 }
8917 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
8918         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
8919 }
8920 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
8921         (self.handle_error)(self.this_arg, their_node_id, msg);
8922 }
8923 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
8924         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8925         return ret;
8926 }
8927 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8928         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8929         return ret;
8930 }
8931 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
8932         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
8933         return ret;
8934 }
8935 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
8936         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
8937         return ret;
8938 }
8939 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
8940         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
8941         return ret;
8942 }
8943 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
8944         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
8945         return ret;
8946 }
8947 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKNodeId starting_point) {
8948         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
8949         return ret;
8950 }
8951 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
8952         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
8953         return ret;
8954 }
8955 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
8956         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
8957         return ret;
8958 }
8959 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
8960         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
8961         return ret;
8962 }
8963 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
8964         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
8965         return ret;
8966 }
8967 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
8968         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
8969         return ret;
8970 }
8971 inline bool RoutingMessageHandler::processing_queue_high() {
8972         bool ret = (self.processing_queue_high)(self.this_arg);
8973         return ret;
8974 }
8975 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
8976         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8977         return ret;
8978 }
8979 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8980         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8981         return ret;
8982 }
8983 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
8984         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
8985 }
8986 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
8987         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
8988         return ret;
8989 }
8990 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
8991         (self.peer_disconnected)(self.this_arg, their_node_id);
8992 }
8993 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
8994         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8995         return ret;
8996 }
8997 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8998         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8999         return ret;
9000 }
9001 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
9002         (self.log)(self.this_arg, record);
9003 }
9004 inline void FutureCallback::call() {
9005         (self.call)(self.this_arg);
9006 }
9007 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
9008         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
9009         return ret;
9010 }
9011 inline LDK::ChannelMonitorUpdateStatus Persist::update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
9012         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
9013         return ret;
9014 }
9015 }